| rfc2911.txt | draft-sweet-rfc2911bis-09.txt > | |||
|---|---|---|---|---|
| Network Working Group T. Hastings, Editor | IPP WG M. Sweet | |||
| Request for Comments: 2911 R. Herriot | Internet-Draft Apple Inc. | |||
| Obsoletes: 2566 Xerox Corporation | Obsoletes: 2911,3381,3382 (if approved) I. McDonald | |||
| Category: Standards Track R. deBry | Intended status: Standards Track High North, Inc. | |||
| Utah Valley State College | Expires: October 22, 2016 April 20, 2016 | |||
| S. Isaacson | ||||
| Novell, Inc. | ||||
| P. Powell | ||||
| Astart Technologies | ||||
| September 2000 | ||||
| Internet Printing Protocol/1.1: Model and Semantics | Internet Printing Protocol/1.1: Model and Semantics | |||
| draft-sweet-rfc2911bis-09 | ||||
| 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 | Abstract | |||
| This document is one of a set of documents, which together describe | This document is one of a set of documents, which together describe | |||
| all aspects of a new Internet Printing Protocol (IPP). IPP is an | all aspects of the Internet Printing Protocol (IPP). IPP is an | |||
| application level protocol that can be used for distributed printing | application level protocol that can be used for distributed printing | |||
| using Internet tools and technologies. This document describes a | using Internet tools and technologies. This document describes a | |||
| simplified model consisting of abstract objects, their attributes, | simplified model consisting of abstract objects, their attributes, | |||
| and their operations that is independent of encoding and transport. | and their operations that is independent of encoding and transport. | |||
| The model consists of a Printer and a Job object. A Job optionally | The model consists of several objects including Printers and Jobs. | |||
| supports multiple documents. IPP 1.1 semantics allow end-users and | Jobs optionally support multiple Documents. IPP 1.1 semantics allow | |||
| operators to query printer capabilities, submit print jobs, inquire | End Users and Operators to query Printer capabilities, submit print | |||
| about the status of print jobs and printers, cancel, hold, release, | jobs, inquire about the status of print Jobs and printers, and | |||
| and restart print jobs. IPP 1.1 semantics allow operators to pause, | cancel, hold, and release print Jobs. IPP 1.1 semantics allow | |||
| resume, and purge (jobs from) Printer objects. This document also | Operators to pause and resume (Jobs from) Printer objects. This | |||
| addresses security, internationalization, and directory issues. | document also addresses security, internationalization, and directory | |||
| issues. | ||||
| The full set of IPP documents includes: | Editor's Note | |||
| Design Goals for an Internet Printing Protocol [RFC2567] | This draft is being submitted as an AD-sponsored replacement of RFCs | |||
| Rationale for the Structure and Model and Protocol for the Internet | 2911, 3381, and 3382, with drafts being reviewed and edited by the | |||
| Printing Protocol [RFC2568] | IEEE-ISTO's Printer Working Group IPP WG. The initial goal is to | |||
| Internet Printing Protocol/1.1: Model and Semantics (this document) | have an clean version of IPP/1.1 as an IETF Proposed Standard. The | |||
| Internet Printing Protocol/1.1: Encoding and Transport [RFC2910] | long-term goal is to advance IPP/1.1 to IETF Internet Standard. | |||
| 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 | Status of This Memo | |||
| 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 | This Internet-Draft is submitted in full conformance with the | |||
| Internet Printing Protocol" document describes IPP from a high level | provisions of BCP 78 and BCP 79. | |||
| 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 | Internet-Drafts are working documents of the Internet Engineering | |||
| is a formal mapping of the abstract operations and attributes defined | Task Force (IETF). Note that other groups may also distribute | |||
| in the model document onto HTTP/1.1 [RFC2616]. It defines the | working documents as Internet-Drafts. The list of current Internet- | |||
| encoding rules for a new Internet MIME media type called | Drafts is at http://datatracker.ietf.org/drafts/current/. | |||
| "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 | Internet-Drafts are draft documents valid for a maximum of six months | |||
| gives insight and advice to implementers of IPP clients and IPP | and may be updated, replaced, or obsoleted by other documents at any | |||
| objects. It is intended to help them understand IPP/1.1 and some of | time. It is inappropriate to use Internet-Drafts as reference | |||
| the considerations that may assist them in the design of their client | material or to cite them other than as "work in progress." | |||
| 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 | This Internet-Draft will expire on October 22, 2016. | |||
| advice to implementers of gateways between IPP and LPD (Line Printer | ||||
| Daemon) implementations. | Copyright Notice | |||
| Copyright (c) 2016 IETF Trust and the persons identified as the | ||||
| document authors. All rights reserved. | ||||
| This document is subject to BCP 78 and the IETF Trust's Legal | ||||
| Provisions Relating to IETF Documents | ||||
| (http://trustee.ietf.org/license-info) in effect on the date of | ||||
| publication of this document. Please review these documents | ||||
| carefully, as they describe your rights and restrictions with respect | ||||
| to this document. Code Components extracted from this document must | ||||
| include Simplified BSD License text as described in Section 4.e of | ||||
| the Trust Legal Provisions and are provided without warranty as | ||||
| described in the Simplified BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction 9 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 8 | |||
| 1.1 Simplified Printing Model 10 | 1.1. Simplified Printing Model . . . . . . . . . . . . . . . . . 11 | |||
| 2. IPP Objects 12 | 2. Conventions Used in This Document . . . . . . . . . . . . . . 13 | |||
| 2.1 Printer Object 13 | 2.1. Requirements Language . . . . . . . . . . . . . . . . . . . 13 | |||
| 2.2 Job Object 15 | 2.2. Printing Terminology . . . . . . . . . . . . . . . . . . . 14 | |||
| 2.3 Object Relationships 16 | 2.3. Model Terminology . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 2.4 Object Identity 17 | 2.3.1. Administrator . . . . . . . . . . . . . . . . . . . . . . 14 | |||
| 3. IPP Operations 20 | 2.3.2. Attributes . . . . . . . . . . . . . . . . . . . . . . . 15 | |||
| 3.1 Common Semantics 21 | 2.3.2.1. Attribute Group Name . . . . . . . . . . . . . . . . . 15 | |||
| 3.1.1 Required Parameters 21 | 2.3.2.2. Attribute Name . . . . . . . . . . . . . . . . . . . . 15 | |||
| 3.1.2 Operation IDs and Request IDs 22 | 2.3.2.3. Attribute Syntax . . . . . . . . . . . . . . . . . . . 15 | |||
| 3.1.3 Attributes 22 | 2.3.2.4. Attribute Value . . . . . . . . . . . . . . . . . . . . 15 | |||
| 3.1.4 Character Set and Natural Language Operation Attribute 24 | 2.3.3. End User . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 3.1.4.1 Request Operation Attributes 25 | 2.3.4. Impression . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 3.1.4.2 Response Operation Attributes 29 | 2.3.5. Input Page . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 3.1.5 Operation Targets 30 | 2.3.6. Job Creation Operation . . . . . . . . . . . . . . . . . 16 | |||
| 3.1.6 Operation Response Status Codes and Status Messages 32 | 2.3.7. Keyword . . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 3.1.6.1 "status-code" (type2 enum) 32 | 2.3.8. Media Sheet . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 3.1.6.2 "status-message" (text(255)) 33 | 2.3.9. Operator . . . . . . . . . . . . . . . . . . . . . . . . 16 | |||
| 3.1.6.3 "detailed-status-message" (text(MAX)) 33 | 2.3.10. Set . . . . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 3.1.6.4 "document-access-error" (text(MAX)) 34 | 2.3.11. Supports . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 3.1.7 Unsupported Attributes 34 | 2.3.12. Terminating State . . . . . . . . . . . . . . . . . . . . 19 | |||
| 3.1.8 Versions 36 | 2.4. Abbreviations . . . . . . . . . . . . . . . . . . . . . . . 19 | |||
| 3.1.9 Job Creation Operations 38 | 3. IPP Objects . . . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 3.2 Printer Operations 41 | 3.1. Printer Object . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 3.2.1 Print-Job Operation 41 | 3.2. Job Object . . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 3.2.1.1 Print-Job Request 41 | 3.3. Object Relationships . . . . . . . . . . . . . . . . . . . 24 | |||
| 3.2.1.2 Print-Job Response 46 | 3.4. Object Identity . . . . . . . . . . . . . . . . . . . . . . 25 | |||
| 3.2.2 Print-URI Operation 48 | 4. IPP Operations . . . . . . . . . . . . . . . . . . . . . . . 27 | |||
| 3.2.3 Validate-Job Operation 49 | 4.1. Common Semantics . . . . . . . . . . . . . . . . . . . . . 29 | |||
| 3.2.4 Create-Job Operation 49 | 4.1.1. Required Parameters . . . . . . . . . . . . . . . . . . . 29 | |||
| 3.2.5 Get-Printer-Attributes Operation 50 | 4.1.2. Operation IDs and Request IDs . . . . . . . . . . . . . . 29 | |||
| 3.2.5.1 Get-Printer-Attributes Request 51 | 4.1.3. Attributes . . . . . . . . . . . . . . . . . . . . . . . 30 | |||
| 3.2.5.2 Get-Printer-Attributes Response 53 | 4.1.4. Character Set and Natural Language Operation Attributes . 32 | |||
| 3.2.6 Get-Jobs Operation 54 | 4.1.4.1. Request Operation Attributes . . . . . . . . . . . . . 33 | |||
| 3.2.6.1 Get-Jobs Request 54 | 4.1.4.2. Response Operation Attributes . . . . . . . . . . . . . 36 | |||
| 3.2.6.2 Get-Jobs Response 56 | 4.1.5. Operation Targets . . . . . . . . . . . . . . . . . . . . 38 | |||
| 3.2.7 Pause-Printer Operation 57 | 4.1.6. Operation Response Status Codes and Status Messages . . . 39 | |||
| 3.2.7.1 Pause-Printer Request 59 | 4.1.6.1. "status-code" (type2 enum) . . . . . . . . . . . . . . 39 | |||
| 3.2.7.2 Pause-Printer Response 60 | 4.1.6.2. "status-message" (text(255)) . . . . . . . . . . . . . 40 | |||
| 3.2.8 Resume-Printer Operation 60 | 4.1.6.3. "detailed-status-message" (text(MAX)) . . . . . . . . . 41 | |||
| 3.2.9 Purge-Jobs Operation 61 | 4.1.6.4. "document-access-error" (text(MAX)) . . . . . . . . . . 42 | |||
| 3.3 Job Operations 62 | 4.1.7. Unsupported Attributes . . . . . . . . . . . . . . . . . 42 | |||
| 3.3.1 Send-Document Operation 62 | 4.1.8. Versions . . . . . . . . . . . . . . . . . . . . . . . . 43 | |||
| 3.3.1.1 Send-Document Request 64 | 4.1.9. Job Creation Operations . . . . . . . . . . . . . . . . . 46 | |||
| 3.3.1.2 Send-Document Response 65 | 4.2. Printer Operations . . . . . . . . . . . . . . . . . . . . 49 | |||
| 3.3.2 Send-URI Operation 66 | 4.2.1. Print-Job Operation . . . . . . . . . . . . . . . . . . . 49 | |||
| 3.3.3 Cancel-Job Operation 66 | 4.2.1.1. Print-Job Request . . . . . . . . . . . . . . . . . . . 49 | |||
| 3.3.3.1 Cancel-Job Request 67 | 4.2.1.2. Print-Job Response . . . . . . . . . . . . . . . . . . 54 | |||
| 3.3.3.2 Cancel-Job Response 68 | 4.2.2. Print-URI Operation . . . . . . . . . . . . . . . . . . . 56 | |||
| 3.3.4 Get-Job-Attributes Operation 69 | 4.2.3. Validate-Job Operation . . . . . . . . . . . . . . . . . 56 | |||
| 3.3.4.1 Get-Job-Attributes Request 69 | 4.2.4. Create-Job Operation . . . . . . . . . . . . . . . . . . 57 | |||
| 3.3.4.2 Get-Job-Attributes Response 70 | 4.2.5. Get-Printer-Attributes Operation . . . . . . . . . . . . 58 | |||
| 3.3.5 Hold-Job Operation 71 | 4.2.5.1. Get-Printer-Attributes Request . . . . . . . . . . . . 59 | |||
| 3.3.5.1 Hold-Job Request 72 | 4.2.5.2. Get-Printer-Attributes Response . . . . . . . . . . . . 61 | |||
| 3.3.5.2 Hold-Job Response 73 | 4.2.6. Get-Jobs Operation . . . . . . . . . . . . . . . . . . . 62 | |||
| 3.3.6 Release-Job Operation 74 | 4.2.6.1. Get-Jobs Request . . . . . . . . . . . . . . . . . . . 62 | |||
| 3.3.7 Restart-Job Operation 75 | 4.2.6.2. Get-Jobs Response . . . . . . . . . . . . . . . . . . . 64 | |||
| 3.3.7.1 Restart-Job Request 76 | 4.2.7. Pause-Printer Operation . . . . . . . . . . . . . . . . . 65 | |||
| 3.3.7.2 Restart-Job Response 78 | 4.2.7.1. Pause-Printer Request . . . . . . . . . . . . . . . . . 67 | |||
| 4. Object Attributes 78 | 4.2.7.2. Pause-Printer Response . . . . . . . . . . . . . . . . 68 | |||
| 4.1 Attribute Syntaxes 78 | 4.2.8. Resume-Printer Operation . . . . . . . . . . . . . . . . 68 | |||
| 4.1.1 'text' 79 | 4.2.9. Purge-Jobs Operation . . . . . . . . . . . . . . . . . . 69 | |||
| 4.1.1.1 'textWithoutLanguage' 80 | 4.3. Job Operations . . . . . . . . . . . . . . . . . . . . . . 70 | |||
| 4.1.1.2 'textWithLanguage' 80 | 4.3.1. Send-Document Operation . . . . . . . . . . . . . . . . . 70 | |||
| 4.1.2 'name' 81 | 4.3.1.1. Send-Document Request . . . . . . . . . . . . . . . . . 72 | |||
| 4.1.2.1 'nameWithoutLanguage' 82 | 4.3.1.2. Send-Document Response . . . . . . . . . . . . . . . . 73 | |||
| 4.1.2.2 'nameWithLanguage' 82 | 4.3.2. Send-URI Operation . . . . . . . . . . . . . . . . . . . 74 | |||
| 4.1.2.3 Matching 'name' attribute values 83 | 4.3.3. Cancel-Job Operation . . . . . . . . . . . . . . . . . . 74 | |||
| 4.1.3 'keyword' 84 | 4.3.3.1. Cancel-Job Request . . . . . . . . . . . . . . . . . . 76 | |||
| 4.1.4 'enum' 85 | 4.3.3.2. Cancel-Job Response . . . . . . . . . . . . . . . . . . 76 | |||
| 4.1.5 'uri' 85 | 4.3.4. Get-Job-Attributes Operation . . . . . . . . . . . . . . 77 | |||
| 4.1.6 'uriScheme' 86 | 4.3.4.1. Get-Job-Attributes Request . . . . . . . . . . . . . . 78 | |||
| 4.1.7 'charset' 86 | 4.3.4.2. Get-Job-Attributes Response . . . . . . . . . . . . . . 78 | |||
| 4.1.8 'naturalLanguage' 87 | 4.3.5. Hold-Job Operation . . . . . . . . . . . . . . . . . . . 80 | |||
| 4.1.9 'mimeMediaType' 87 | 4.3.5.1. Hold-Job Request . . . . . . . . . . . . . . . . . . . 81 | |||
| 4.1.9.1 Application/octet-stream -- Auto-Sensing 88 | 4.3.5.2. Hold-Job Response . . . . . . . . . . . . . . . . . . . 82 | |||
| the document format | 4.3.6. Release-Job Operation . . . . . . . . . . . . . . . . . . 82 | |||
| 4.1.10 'octetString' 89 | 4.3.7. Restart-Job Operation . . . . . . . . . . . . . . . . . . 84 | |||
| 4.1.11 'boolean' 89 | 4.3.7.1. Restart-Job Request . . . . . . . . . . . . . . . . . . 86 | |||
| 4.1.12 'integer' 89 | 4.3.7.2. Restart-Job Response . . . . . . . . . . . . . . . . . 87 | |||
| 4.1.13 'rangeOfInteger' 90 | 5. Object Attributes . . . . . . . . . . . . . . . . . . . . . . 88 | |||
| 4.1.14 'dateTime' 90 | 5.1. Attribute Syntaxes . . . . . . . . . . . . . . . . . . . . 88 | |||
| 4.1.15 'resolution' 90 | 5.1.1. Out-of-Band Values - 'unknown', 'unsupported', and 'no- | |||
| 4.1.16 '1setOf X' 90 | value' . . . . . . . . . . . . . . . . . . . . . . . . . 89 | |||
| 4.2 Job Template Attributes 91 | 5.1.2. 'text' . . . . . . . . . . . . . . . . . . . . . . . . . 89 | |||
| 4.2.1 job-priority (integer(1:100)) 94 | 5.1.2.1. 'textWithoutLanguage' . . . . . . . . . . . . . . . . . 90 | |||
| 4.2.2 job-hold-until (type3 keyword | name (MAX)) 95 | 5.1.2.2. 'textWithLanguage' . . . . . . . . . . . . . . . . . . 90 | |||
| 4.2.3 job-sheets (type3 keyword | name(MAX)) 96 | 5.1.3. 'name' . . . . . . . . . . . . . . . . . . . . . . . . . 91 | |||
| 4.2.4 multiple-document-handling (type2 keyword) 96 | 5.1.3.1. 'nameWithoutLanguage' . . . . . . . . . . . . . . . . . 92 | |||
| 4.2.5 copies (integer(1:MAX)) 98 | 5.1.3.2. 'nameWithLanguage' . . . . . . . . . . . . . . . . . . 92 | |||
| 4.2.6 finishings (1setOf type2 enum) 98 | 5.1.3.3. Matching 'name' attribute values . . . . . . . . . . . 93 | |||
| 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX)) 101 | 5.1.4. 'keyword' . . . . . . . . . . . . . . . . . . . . . . . . 94 | |||
| 4.2.8 sides (type2 keyword) 102 | 5.1.5. 'enum' . . . . . . . . . . . . . . . . . . . . . . . . . 95 | |||
| 4.2.9 number-up (integer(1:MAX)) 102 | 5.1.6. 'uri' . . . . . . . . . . . . . . . . . . . . . . . . . . 95 | |||
| 4.2.10 orientation-requested (type2 enum) 103 | 5.1.7. 'uriScheme' . . . . . . . . . . . . . . . . . . . . . . . 95 | |||
| 4.2.11 media (type3 keyword | name(MAX)) 104 | 5.1.8. 'charset' . . . . . . . . . . . . . . . . . . . . . . . . 96 | |||
| 4.2.12 printer-resolution (resolution) 105 | 5.1.9. 'naturalLanguage' . . . . . . . . . . . . . . . . . . . . 97 | |||
| 4.2.13 print-quality (type2 enum) 105 | 5.1.10. 'mimeMediaType' . . . . . . . . . . . . . . . . . . . . . 98 | |||
| 4.3 Job Description Attributes 106 | 5.1.10.1. Application/octet-stream -- Auto-Sensing the Document | |||
| 4.3.1 job-uri (uri) 107 | format . . . . . . . . . . . . . . . . . . . . . . . . 98 | |||
| 4.3.2 job-id (integer(1:MAX)) 108 | 5.1.11. 'octetString' . . . . . . . . . . . . . . . . . . . . . . 99 | |||
| 4.3.3 job-printer-uri (uri) 108 | 5.1.12. 'boolean' . . . . . . . . . . . . . . . . . . . . . . . . 100 | |||
| 4.3.4 job-more-info (uri) 108 | 5.1.13. 'integer' . . . . . . . . . . . . . . . . . . . . . . . . 100 | |||
| 4.3.5 job-name (name(MAX)) 108 | 5.1.14. 'rangeOfInteger' . . . . . . . . . . . . . . . . . . . . 100 | |||
| 4.3.6 job-originating-user-name (name(MAX)) 109 | 5.1.15. 'dateTime' . . . . . . . . . . . . . . . . . . . . . . . 100 | |||
| 4.3.7 job-state (type1 enum) 109 | 5.1.16. 'resolution' . . . . . . . . . . . . . . . . . . . . . . 100 | |||
| 4.3.7.1 Forwarding Servers 112 | 5.1.17. 'collection' . . . . . . . . . . . . . . . . . . . . . . 101 | |||
| 4.3.7.2 Partitioning of Job States 112 | 5.1.18. '1setOf X' . . . . . . . . . . . . . . . . . . . . . . . 101 | |||
| 4.3.8 job-state-reasons (1setOf type2 keyword) 113 | 5.2. Job Template Attributes . . . . . . . . . . . . . . . . . . 101 | |||
| 4.3.9 job-state-message (text(MAX)) 118 | 5.2.1. job-priority (integer(1:100)) . . . . . . . . . . . . . . 105 | |||
| 4.3.10 job-detailed-status-messages (1setOf text(MAX)) 118 | 5.2.2. job-hold-until (type2 keyword | name (MAX)) . . . . . . . 106 | |||
| 4.3.11 job-document-access-errors (1setOf text(MAX)) 118 | 5.2.3. job-sheets (type2 keyword | name(MAX)) . . . . . . . . . 107 | |||
| 4.3.12 number-of-documents (integer(0:MAX)) 119 | 5.2.4. multiple-document-handling (type2 keyword) . . . . . . . 108 | |||
| 4.3.13 output-device-assigned (name(127)) 119 | 5.2.5. copies (integer(1:MAX)) . . . . . . . . . . . . . . . . . 109 | |||
| 4.3.14 Event Time Job Description Attributes 119 | 5.2.6. finishings (1setOf type2 enum) . . . . . . . . . . . . . 110 | |||
| 4.3.14.1 time-at-creation (integer(MIN:MAX)) 120 | 5.2.7. page-ranges (1setOf rangeOfInteger (1:MAX)) . . . . . . . 112 | |||
| 4.3.14.2 time-at-processing (integer(MIN:MAX)) 120 | 5.2.8. sides (type2 keyword) . . . . . . . . . . . . . . . . . . 113 | |||
| 4.3.14.3 time-at-completed (integer(MIN:MAX)) 120 | 5.2.9. number-up (integer(1:MAX)) . . . . . . . . . . . . . . . 114 | |||
| 4.3.14.4 job-printer-up-time (integer(1:MAX)) 120 | 5.2.10. orientation-requested (type2 enum) . . . . . . . . . . . 115 | |||
| 4.3.14.5 date-time-at-creation (dateTime) 121 | 5.2.11. media (type2 keyword | name(MAX)) . . . . . . . . . . . . 116 | |||
| 4.3.14.6 date-time-at-processing (dateTime) 121 | 5.2.12. printer-resolution (resolution) . . . . . . . . . . . . . 117 | |||
| 4.3.14.7 date-time-at-completed (dateTime) 121 | 5.2.13. print-quality (type2 enum) . . . . . . . . . . . . . . . 118 | |||
| 4.3.15 number-of-intervening-jobs (integer(0:MAX)) 121 | 5.3. Job Description and Status Attributes . . . . . . . . . . . 118 | |||
| 4.3.16 job-message-from-operator (text(127)) 121 | 5.3.1. job-id (integer(1:MAX)) . . . . . . . . . . . . . . . . . 120 | |||
| 4.3.17 Job Size Attributes 121 | 5.3.2. job-uri (uri) . . . . . . . . . . . . . . . . . . . . . . 120 | |||
| 4.3.17.1 job-k-octets (integer(0:MAX)) 122 | 5.3.3. job-printer-uri (uri) . . . . . . . . . . . . . . . . . . 120 | |||
| 4.3.17.2 job-impressions (integer(0:MAX)) 122 | 5.3.4. job-more-info (uri) . . . . . . . . . . . . . . . . . . . 121 | |||
| 4.3.17.3 job-media-sheets (integer(0:MAX)) 123 | 5.3.5. job-name (name(MAX)) . . . . . . . . . . . . . . . . . . 121 | |||
| 4.3.18 Job Progress Attributes 123 | 5.3.6. job-originating-user-name (name(MAX)) . . . . . . . . . . 121 | |||
| 4.3.18.1 job-k-octets-processed (integer(0:MAX)) 123 | 5.3.7. job-state (type1 enum) . . . . . . . . . . . . . . . . . 122 | |||
| 4.3.18.2 job-impressions-completed (integer(0:MAX)) 123 | 5.3.7.1. Forwarding Servers . . . . . . . . . . . . . . . . . . 124 | |||
| 4.3.18.3 job-media-sheets-completed (integer(0:MAX)) 124 | 5.3.7.2. Partitioning of Job States . . . . . . . . . . . . . . 125 | |||
| 4.3.19 attributes-charset (charset) 124 | 5.3.8. job-state-reasons (1setOf type2 keyword) . . . . . . . . 126 | |||
| 4.3.20 attributes-natural-language (naturalLanguage) 124 | 5.3.9. job-state-message (text(MAX)) . . . . . . . . . . . . . . 130 | |||
| 4.4 Printer Description Attributes 124 | 5.3.10. job-detailed-status-messages (1setOf text(MAX)) . . . . . 131 | |||
| 4.4.1 printer-uri-supported (1setOf uri) 126 | 5.3.11. job-document-access-errors (1setOf text(MAX)) . . . . . . 131 | |||
| 4.4.2 uri-authentication-supported (1setOf type2 keyword) 127 | 5.3.12. number-of-documents (integer(0:MAX)) . . . . . . . . . . 131 | |||
| 4.4.3 uri-security-supported (1setOf type2 keyword) 128 | 5.3.13. output-device-assigned (name(127)) . . . . . . . . . . . 131 | |||
| 4.4.4 printer-name (name(127)) 129 | 5.3.14. Event Time Job Status Attributes . . . . . . . . . . . . 132 | |||
| 4.4.5 printer-location (text(127)) 129 | 5.3.14.1. time-at-creation (integer(MIN:MAX)) . . . . . . . . . 133 | |||
| 4.4.6 printer-info (text(127)) 130 | 5.3.14.2. time-at-processing (integer(MIN:MAX)) . . . . . . . . 133 | |||
| 4.4.7 printer-more-info (uri) 130 | 5.3.14.3. time-at-completed (integer(MIN:MAX)) . . . . . . . . . 133 | |||
| 4.4.8 printer-driver-installer (uri) 130 | 5.3.14.4. job-printer-up-time (integer(1:MAX)) . . . . . . . . . 133 | |||
| 4.4.9 printer-make-and-model (text(127)) 130 | 5.3.14.5. date-time-at-creation (dateTime) . . . . . . . . . . . 133 | |||
| 4.4.10 printer-more-info-manufacturer (uri) 130 | 5.3.14.6. date-time-at-processing (dateTime) . . . . . . . . . . 133 | |||
| 4.4.11 printer-state (type1 enum) 131 | 5.3.14.7. date-time-at-completed (dateTime) . . . . . . . . . . 134 | |||
| 4.4.12 printer-state-reasons (1setOf type2 keyword) 131 | 5.3.15. number-of-intervening-jobs (integer(0:MAX)) . . . . . . . 134 | |||
| 4.4.13 printer-state-message (text(MAX)) 134 | 5.3.16. job-message-from-operator (text(127)) . . . . . . . . . . 134 | |||
| 4.4.14 ipp-versions-supported (1setOf type2 keyword) 134 | 5.3.17. Job Size Attributes . . . . . . . . . . . . . . . . . . . 134 | |||
| 4.4.15 operations-supported (1setOf type2 enum) 135 | 5.3.17.1. job-k-octets (integer(0:MAX)) . . . . . . . . . . . . 134 | |||
| 4.4.16 multiple-document-jobs-supported (boolean) 136 | 5.3.17.2. job-impressions (integer(0:MAX)) . . . . . . . . . . . 135 | |||
| 4.4.17 charset-configured (charset) 136 | 5.3.17.3. job-media-sheets (integer(0:MAX)) . . . . . . . . . . 135 | |||
| 4.4.18 charset-supported (1setOf charset) 137 | 5.3.18. Job Progress Attributes . . . . . . . . . . . . . . . . . 136 | |||
| 4.4.19 natural-language-configured (naturalLanguage) 137 | 5.3.18.1. job-k-octets-processed (integer(0:MAX)) . . . . . . . 136 | |||
| 4.4.20 generated-natural-language-supported | 5.3.18.2. job-impressions-completed (integer(0:MAX)) . . . . . . 136 | |||
| (1setOf naturalLanguage) 137 | 5.3.18.3. job-media-sheets-completed (integer(0:MAX)) . . . . . 136 | |||
| 4.4.21 document-format-default (mimeMediaType) 138 | 5.3.19. attributes-charset (charset) . . . . . . . . . . . . . . 136 | |||
| 4.4.22 document-format-supported (1setOf mimeMediaType) 138 | 5.3.20. attributes-natural-language (naturalLanguage) . . . . . . 137 | |||
| 4.4.23 printer-is-accepting-jobs (boolean) 138 | 5.4. Printer Description and Status Attributes . . . . . . . . . 137 | |||
| 4.4.24 queued-job-count (integer(0:MAX)) 138 | 5.4.1. printer-uri-supported (1setOf uri) . . . . . . . . . . . 139 | |||
| 4.4.25 printer-message-from-operator (text(127)) 139 | 5.4.2. uri-authentication-supported (1setOf type2 keyword) . . . 140 | |||
| 4.4.26 color-supported (boolean) 139 | 5.4.3. uri-security-supported (1setOf type2 keyword) . . . . . . 141 | |||
| 4.4.27 reference-uri-schemes-supported (1setOf uriScheme) 139 | 5.4.4. printer-name (name(127)) . . . . . . . . . . . . . . . . 142 | |||
| 4.4.28 pdl-override-supported (type2 keyword) 139 | 5.4.5. printer-location (text(127)) . . . . . . . . . . . . . . 142 | |||
| 4.4.29 printer-up-time (integer(1:MAX)) 140 | 5.4.6. printer-info (text(127)) . . . . . . . . . . . . . . . . 143 | |||
| 4.4.30 printer-current-time (dateTime) 140 | 5.4.7. printer-more-info (uri) . . . . . . . . . . . . . . . . . 143 | |||
| 4.4.31 multiple-operation-time-out (integer(1:MAX)) 141 | 5.4.8. printer-driver-installer (uri) . . . . . . . . . . . . . 143 | |||
| 4.4.32 compression-supported (1setOf type3 keyword) 141 | 5.4.9. printer-make-and-model (text(127)) . . . . . . . . . . . 143 | |||
| 4.4.33 job-k-octets-supported (rangeOfInteger(0:MAX)) 142 | 5.4.10. printer-more-info-manufacturer (uri) . . . . . . . . . . 143 | |||
| 4.4.34 job-impressions-supported (rangeOfInteger(0:MAX)) 142 | 5.4.11. printer-state (type1 enum) . . . . . . . . . . . . . . . 144 | |||
| 4.4.35 job-media-sheets-supported (rangeOfInteger(0:MAX)) 142 | 5.4.12. printer-state-reasons (1setOf type2 keyword) . . . . . . 144 | |||
| 4.4.36 pages-per-minute (integer(0:MAX)) 142 | 5.4.13. printer-state-message (text(MAX)) . . . . . . . . . . . . 148 | |||
| 4.4.37 pages-per-minute-color (integer(0:MAX)) 142 | 5.4.14. ipp-versions-supported (1setOf type2 keyword) . . . . . . 149 | |||
| 5. Conformance 143 | 5.4.15. operations-supported (1setOf type2 enum) . . . . . . . . 149 | |||
| 5.1 Client Conformance Requirements 143 | 5.4.16. multiple-document-jobs-supported (boolean) . . . . . . . 151 | |||
| 5.2 IPP Object Conformance Requirements 145 | 5.4.17. charset-configured (charset) . . . . . . . . . . . . . . 151 | |||
| 5.2.1 Objects 145 | 5.4.18. charset-supported (1setOf charset) . . . . . . . . . . . 151 | |||
| 5.2.2 Operations 145 | 5.4.19. natural-language-configured (naturalLanguage) . . . . . . 151 | |||
| 5.2.3 IPP Object Attributes 146 | 5.4.20. generated-natural-language-supported (1setOf | |||
| 5.2.4 Versions 146 | naturalLanguage) . . . . . . . . . . . . . . . . . . . . 152 | |||
| 5.2.5 Extensions 147 | 5.4.21. document-format-default (mimeMediaType) . . . . . . . . . 152 | |||
| 5.2.6 Attribute Syntaxes 147 | 5.4.22. document-format-supported (1setOf mimeMediaType) . . . . 152 | |||
| 5.2.7 Security 148 | 5.4.23. printer-is-accepting-Jobs (boolean) . . . . . . . . . . . 152 | |||
| 5.3 Charset and Natural Language Requirements 148 | 5.4.24. queued-job-count (integer(0:MAX)) . . . . . . . . . . . . 153 | |||
| 6. IANA Considerations 148 | 5.4.25. printer-message-from-operator (text(127)) . . . . . . . . 153 | |||
| 6.1 Typed 'keyword' and 'enum' Extensions 149 | 5.4.26. color-supported (boolean) . . . . . . . . . . . . . . . . 153 | |||
| 6.2 Attribute Extensibility 151 | 5.4.27. reference-uri-schemes-supported (1setOf uriScheme) . . . 153 | |||
| 6.3 Attribute Syntax Extensibility 152 | 5.4.28. pdl-override-supported (type2 keyword) . . . . . . . . . 154 | |||
| 6.4 Operation Extensibility 152 | 5.4.29. printer-up-time (integer(1:MAX)) . . . . . . . . . . . . 154 | |||
| 6.5 Attribute Group Extensibility 153 | 5.4.30. printer-current-time (dateTime) . . . . . . . . . . . . . 155 | |||
| 6.6 Status Code Extensibility 153 | 5.4.31. multiple-operation-time-out (integer(1:MAX)) . . . . . . 155 | |||
| 6.7 Out-of-band Attribute Value Extensibility 154 | 5.4.32. compression-supported (1setOf type2 keyword) . . . . . . 156 | |||
| 6.8 Registration of MIME types/sub-types for document-formats 154 | 5.4.33. job-k-octets-supported (rangeOfInteger(0:MAX)) . . . . . 156 | |||
| 6.9 Registration of charsets for use in 'charset' | 5.4.34. job-impressions-supported (rangeOfInteger(0:MAX)) . . . . 156 | |||
| attribute values 154 | 5.4.35. job-media-sheets-supported (rangeOfInteger(0:MAX)) . . . 156 | |||
| 7. Internationalization Considerations 154 | 5.4.36. pages-per-minute (integer(0:MAX)) . . . . . . . . . . . . 157 | |||
| 8. Security Considerations 158 | 5.4.37. pages-per-minute-color (integer(0:MAX)) . . . . . . . . . 157 | |||
| 8.1 Security Scenarios 159 | 6. Conformance . . . . . . . . . . . . . . . . . . . . . . . . . 157 | |||
| 8.1.1 Client and Server in the Same Security Domain 159 | 6.1. Client Conformance Requirements . . . . . . . . . . . . . . 158 | |||
| 8.1.2 Client and Server in Different Security Domains 159 | 6.2. IPP Object Conformance Requirements . . . . . . . . . . . . 159 | |||
| 8.1.3 Print by Reference 160 | 6.2.1. Objects . . . . . . . . . . . . . . . . . . . . . . . . . 159 | |||
| 8.2 URIs in Operation, Job, and Printer attributes 160 | 6.2.2. Operations . . . . . . . . . . . . . . . . . . . . . . . 159 | |||
| 8.3 URIs for each authentication mechanisms 160 | 6.2.3. IPP Object Attributes . . . . . . . . . . . . . . . . . . 161 | |||
| 8.4 Restricted Queries 161 | 6.2.4. Versions . . . . . . . . . . . . . . . . . . . . . . . . 161 | |||
| 8.5 Operations performed by operators and system | 6.2.5. Extensions . . . . . . . . . . . . . . . . . . . . . . . 162 | |||
| administrators 161 | 6.2.6. Attribute Syntaxes . . . . . . . . . . . . . . . . . . . 162 | |||
| 8.6 Queries on jobs submitted using non-IPP protocols 162 | 6.2.7. Security . . . . . . . . . . . . . . . . . . . . . . . . 162 | |||
| 9. References 162 | 6.3. Charset and Natural Language Requirements . . . . . . . . . 163 | |||
| 10. Authors' Addresses 166 | 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 163 | |||
| 11. Formats for IPP Registration Proposals 168 | 7.1. Typed 'keyword' and 'enum' Extensions . . . . . . . . . . . 164 | |||
| 11.1 Type2 keyword attribute values registration 169 | 7.2. Attribute Extensibility . . . . . . . . . . . . . . . . . . 165 | |||
| 11.2 Type3 keyword attribute values registration 169 | 7.3. Attribute Syntax Extensibility . . . . . . . . . . . . . . 166 | |||
| 11.3 Type2 enum attribute values registration 169 | 7.4. Operation Extensibility . . . . . . . . . . . . . . . . . . 166 | |||
| 11.4 Type3 enum attribute values registration 170 | 7.5. Attribute Group Extensibility . . . . . . . . . . . . . . . 166 | |||
| 11.5 Attribute registration 170 | 7.6. Status Code Extensibility . . . . . . . . . . . . . . . . . 166 | |||
| 11.6 Attribute Syntax registration 171 | 7.7. Out-of-band Attribute Value Extensibility . . . . . . . . . 167 | |||
| 11.7 Operation registration 171 | 7.8. Registration of MIME types/sub-types for Document formats . 167 | |||
| 11.8 Attribute Group registration 171 | 7.9. Registration of charsets for use in 'charset' attribute | |||
| 11.9 Status code registration 172 | values . . . . . . . . . . . . . . . . . . . . . . . . . . 167 | |||
| 11.10 Out-of-band Attribute Value registration 172 | 8. Internationalization Considerations . . . . . . . . . . . . . 168 | |||
| 12. APPENDIX A: Terminology 173 | 9. Security Considerations . . . . . . . . . . . . . . . . . . . 171 | |||
| 12.1 Conformance Terminology 173 | 9.1. Security Scenarios . . . . . . . . . . . . . . . . . . . . 172 | |||
| 12.1.1 NEED NOT 173 | 9.1.1. Client and Server in the Same Security Domain . . . . . . 172 | |||
| 12.2 Model Terminology 173 | 9.1.2. Client and Server in Different Security Domains . . . . . 173 | |||
| 12.2.1 Keyword 173 | 9.1.3. Print by Reference . . . . . . . . . . . . . . . . . . . 173 | |||
| 12.2.2 Attributes 173 | 9.2. URIs in Operation, Job, and Printer attributes . . . . . . 173 | |||
| 12.2.2.1 Attribute Name 173 | 9.3. URIs for each authentication mechanisms . . . . . . . . . . 174 | |||
| 12.2.2.2 Attribute Group Name 174 | 9.4. Restricted Queries . . . . . . . . . . . . . . . . . . . . 175 | |||
| 12.2.2.3 Attribute Value 174 | 9.5. Operations performed by Operators and Adminstrators . . . . 175 | |||
| 12.2.2.4 Attribute Syntax 174 | 9.6. Queries on Jobs submitted using non-IPP protocols . . . . . 175 | |||
| 12.2.3 Supports 174 | 10. Changes Since RFC 2911 . . . . . . . . . . . . . . . . . . . 176 | |||
| 12.2.4 print-stream page 176 | 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 177 | |||
| 12.2.5 impression 177 | 11.1. Normative References . . . . . . . . . . . . . . . . . . . 177 | |||
| 13. APPENDIX B: Status Codes and Suggested Status Code Messages 177 | 11.2. Informative References . . . . . . . . . . . . . . . . . . 182 | |||
| 13.1 Status Codes 178 | 11.3. URIs . . . . . . . . . . . . . . . . . . . . . . . . . . . 183 | |||
| 13.1.1 Informational 178 | Appendix A. Formats for IPP Registration Proposals . . . . . . . 183 | |||
| 13.1.2 Successful Status Codes 178 | A.1. Type2 keyword attribute values registration . . . . . . . . 184 | |||
| 13.1.2.1 successful-ok (0x0000) 178 | A.2. Type2 enum attribute values registration . . . . . . . . . 184 | |||
| 13.1.2.2 successful-ok-ignored-or-substituted-attributes | A.3. Attribute registration . . . . . . . . . . . . . . . . . . 185 | |||
| (0x0001) 179 | A.4. Attribute Syntax registration . . . . . . . . . . . . . . . 186 | |||
| 13.1.2.3 successful-ok-conflicting-attributes (0x0002) 179 | A.5. Operation registration . . . . . . . . . . . . . . . . . . 186 | |||
| 13.1.3 Redirection Status Codes 179 | A.6. Attribute Group registration . . . . . . . . . . . . . . . 187 | |||
| 13.1.4 Client Error Status Codes 179 | A.7. Status code registration . . . . . . . . . . . . . . . . . 187 | |||
| 13.1.4.1 client-error-bad-request (0x0400) 180 | A.8. Out-of-band Attribute Value registration . . . . . . . . . 188 | |||
| 13.1.4.2 client-error-forbidden (0x0401) 180 | Appendix B. Status Codes and Suggested Status Code Messages . . 188 | |||
| 13.1.4.3 client-error-not-authenticated (0x0402) 180 | B.1. Status Codes . . . . . . . . . . . . . . . . . . . . . . . 190 | |||
| 13.1.4.4 client-error-not-authorized (0x0403) 180 | B.1.1. Informational . . . . . . . . . . . . . . . . . . . . . . 190 | |||
| 13.1.4.5 client-error-not-possible (0x0404) 180 | B.1.2. Successful Status Codes . . . . . . . . . . . . . . . . . 190 | |||
| 13.1.4.6 client-error-timeout (0x0405) 181 | B.1.2.1. successful-ok (0x0000) . . . . . . . . . . . . . . . . 190 | |||
| 13.1.4.7 client-error-not-found (0x0406) 181 | B.1.2.2. successful-ok-ignored-or-substituted-attributes | |||
| 13.1.4.8 client-error-gone (0x0407) 181 | (0x0001) . . . . . . . . . . . . . . . . . . . . . . . 190 | |||
| 13.1.4.9 client-error-request-entity-too-large (0x0408) 182 | B.1.2.3. successful-ok-conflicting-attributes (0x0002) . . . . . 191 | |||
| 13.1.4.10 client-error-request-value-too-long (0x0409) 182 | B.1.3. Redirection Status Codes . . . . . . . . . . . . . . . . 191 | |||
| 13.1.4.11 client-error-document-format-not-supported (0x040A) 182 | B.1.4. Client Error Status Codes . . . . . . . . . . . . . . . . 191 | |||
| 13.1.4.12 client-error-attributes-or-values-not-supported | B.1.4.1. client-error-bad-request (0x0400) . . . . . . . . . . . 191 | |||
| (0x040B) 183 | B.1.4.2. client-error-forbidden (0x0401) . . . . . . . . . . . . 191 | |||
| 13.1.4.13 client-error-uri-scheme-not-supported (0x040C) 183 | B.1.4.3. client-error-not-authenticated (0x0402) . . . . . . . . 191 | |||
| 13.1.4.14 client-error-charset-not-supported (0x040D) 183 | B.1.4.4. client-error-not-authorized (0x0403) . . . . . . . . . 192 | |||
| 13.1.4.15 client-error-conflicting-attributes (0x040E) 183 | B.1.4.5. client-error-not-possible (0x0404) . . . . . . . . . . 192 | |||
| 13.1.4.16 client-error-compression-not-supported (0x040F) 184 | B.1.4.6. client-error-timeout (0x0405) . . . . . . . . . . . . . 192 | |||
| 13.1.4.17 client-error-compression-error (0x0410) 184 | B.1.4.7. client-error-not-found (0x0406) . . . . . . . . . . . . 192 | |||
| 13.1.4.18 client-error-document-format-error (0x0411) 184 | B.1.4.8. client-error-gone (0x0407) . . . . . . . . . . . . . . 193 | |||
| 13.1.4.19 client-error-document-access-error (0x0412) 184 | B.1.4.9. client-error-request-entity-too-large (0x0408) . . . . 193 | |||
| 13.1.5 Server Error Status Codes 185 | B.1.4.10. client-error-request-value-too-long (0x0409) . . . . . 193 | |||
| 13.1.5.1 server-error-internal-error (0x0500) 185 | B.1.4.11. client-error-document-format-not-supported (0x040A) . . 194 | |||
| 13.1.5.2 server-error-operation-not-supported (0x0501) 185 | B.1.4.12. client-error-attributes-or-values-not-supported | |||
| 13.1.5.3 server-error-service-unavailable (0x0502) 185 | (0x040B) . . . . . . . . . . . . . . . . . . . . . . . 194 | |||
| 13.1.5.4 server-error-version-not-supported (0x0503) 185 | B.1.4.13. client-error-uri-scheme-not-supported (0x040C) . . . . 195 | |||
| 13.1.5.5 server-error-device-error (0x0504) 186 | B.1.4.14. client-error-charset-not-supported (0x040D) . . . . . . 195 | |||
| 13.1.5.6 server-error-temporary-error (0x0505) 186 | B.1.4.15. client-error-conflicting-attributes (0x040E) . . . . . 195 | |||
| 13.1.5.7 server-error-not-accepting-jobs (0x0506) 187 | B.1.4.16. client-error-compression-not-supported (0x040F) . . . . 195 | |||
| 13.1.5.8 server-error-busy (0x0507) 187 | B.1.4.17. client-error-compression-error (0x0410) . . . . . . . . 195 | |||
| 13.1.5.9 server-error-job-canceled (0x0508) 187 | B.1.4.18. client-error-document-format-error (0x0411) . . . . . . 195 | |||
| 13.1.5.10 server-error-multiple-document-jobs-not-supported | B.1.4.19. client-error-document-access-error (0x0412) . . . . . . 196 | |||
| (0x0509) 187 | B.1.5. Server Error Status Codes . . . . . . . . . . . . . . . . 196 | |||
| 13.2 Status Codes for IPP Operations 187 | B.1.5.1. server-error-internal-error (0x0500) . . . . . . . . . 196 | |||
| 14. APPENDIX C: "media" keyword values 190 | B.1.5.2. server-error-operation-not-supported (0x0501) . . . . . 196 | |||
| 15. APPENDIX D: Processing IPP Attributes 208 | B.1.5.3. server-error-service-unavailable (0x0502) . . . . . . . 197 | |||
| 15.1 Fidelity 209 | B.1.5.4. server-error-version-not-supported (0x0503) . . . . . . 197 | |||
| 15.2 Page Description Language (PDL) Override 210 | B.1.5.5. server-error-device-error (0x0504) . . . . . . . . . . 197 | |||
| 15.3 Using Job Template Attributes During Document Processing 212 | B.1.5.6. server-error-temporary-error (0x0505) . . . . . . . . . 198 | |||
| 16. APPENDIX E: Generic Directory Schema 214 | B.1.5.7. server-error-not-accepting-Jobs (0x0506) . . . . . . . 198 | |||
| 17. APPENDIX F: Differences between the IPP/1.0 and IPP/1.1 | B.1.5.8. server-error-busy (0x0507) . . . . . . . . . . . . . . 198 | |||
| "Model and Semantics" Documents 215 | B.1.5.9. server-error-job-canceled (0x0508) . . . . . . . . . . 198 | |||
| 18. Full Copyright Statement 224 | B.1.5.10. server-error-multiple-document-jobs-not-supported | |||
| (0x0509) . . . . . . . . . . . . . . . . . . . . . . . 198 | ||||
| B.2. Status Codes for IPP Operations . . . . . . . . . . . . . . 199 | ||||
| Appendix C. Processing IPP Attributes . . . . . . . . . . . . . 200 | ||||
| C.1. Fidelity . . . . . . . . . . . . . . . . . . . . . . . . . 201 | ||||
| C.2. Page Description Language (PDL) Override . . . . . . . . . 202 | ||||
| C.3. Using Job Template Attributes During Document Processing. . 204 | ||||
| Appendix D. Generic Directory Schema . . . . . . . . . . . . . . 206 | ||||
| Appendix E. Change History . . . . . . . . . . . . . . . . . . . 208 | ||||
| E.1. Changes In -09 . . . . . . . . . . . . . . . . . . . . . . 208 | ||||
| E.2. Changes In -08 . . . . . . . . . . . . . . . . . . . . . . 209 | ||||
| E.3. Changes In -07 . . . . . . . . . . . . . . . . . . . . . . 209 | ||||
| E.4. Changes In -06 . . . . . . . . . . . . . . . . . . . . . . 210 | ||||
| E.5. Changes In -05 . . . . . . . . . . . . . . . . . . . . . . 213 | ||||
| E.6. Changes In -04 . . . . . . . . . . . . . . . . . . . . . . 215 | ||||
| E.7. Changes In -03 . . . . . . . . . . . . . . . . . . . . . . 215 | ||||
| E.8. Changes In -02 . . . . . . . . . . . . . . . . . . . . . . 216 | ||||
| E.9. Changes In -01 . . . . . . . . . . . . . . . . . . . . . . 216 | ||||
| Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 217 | ||||
| 1. Introduction | 1. Introduction | |||
| The Internet Printing Protocol (IPP) is an application level protocol | The Internet Printing Protocol (IPP) is an application level protocol | |||
| that can be used for distributed printing using Internet tools and | that can be used for distributed printing using Internet tools and | |||
| technologies. IPP version 1.1 (IPP/1.1) focuses primarily on end | technologies. IPP version 1.1 (IPP/1.1) focuses primarily on End | |||
| user functionality with a few administrative operations included. | User functionality with a few administrative operations included. | |||
| This document is just one of a suite of documents that fully define | This document is just one of a suite of documents that fully define | |||
| IPP. The full set of IPP documents includes: | IPP. The full set of IETF IPP documents includes: | |||
| Design Goals for an Internet Printing Protocol [RFC2567] | Design Goals for an Internet Printing Protocol [RFC2567] | |||
| Rationale for the Structure and Model and Protocol for the Internet | ||||
| Printing Protocol [RFC2568] | Rationale for the Structure and Model and Protocol for the | |||
| Internet Printing Protocol/1.1: Model and Semantics (this document) | Internet Printing Protocol [RFC2568] | |||
| Internet Printing Protocol/1.1: Encoding and Transport [RFC2910] | ||||
| Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG] | Internet Printing Protocol/1.1: Model and Semantics (this | |||
| Mapping between LPD and IPP Protocols [RFC2569] | document) | |||
| Internet Printing Protocol/1.1: Encoding and Transport | ||||
| [RFC2910bis] | ||||
| Internet Printing Protocol/1.1: Implementor's Guide [RFC3196] | ||||
| Internet Printing Protocol/1.1: IPP URL Scheme [RFC3510] | ||||
| IPP over HTTPS Transport Binding and 'ipps' URI Scheme [RFC7472] | ||||
| Internet Printing Protocol/1.1: Requirements for Job, Printer, and | ||||
| Device Administrative Operations [RFC3239] | ||||
| Internet Printing Protocol/1.1: Job and Printer Set Operations | ||||
| [RFC3380] | ||||
| Internet Printing Protocol/1.1: Job and Printer Administrative | ||||
| Operations [RFC3998] | ||||
| Internet Printing Protocol/1.1: Requirements for IPP Notifications | ||||
| [RFC3997] | ||||
| Internet Printing Protocol/1.1: Event Notifications and | ||||
| Subscriptions [RFC3995] | ||||
| Internet Printing Protocol/1.1: The 'ippget' Delivery Method for | ||||
| Event Notifications [RFC3996] | ||||
| Mapping between LPD and IPP Protocols [RFC2569] | ||||
| Anyone reading these documents for the first time is strongly | Anyone reading these documents for the first time is strongly | |||
| encouraged to read the IPP documents in the above order. | encouraged to read the IPP documents in the above order. Additional | |||
| IPP specifications have been published by the IEEE-ISTO Printer | ||||
| Working Group's [1] IPP Workgroup [2]. The following standards are | ||||
| highly recommended reading: | ||||
| This document is laid out as follows: | PWG Media Standardized Names 2.0 (MSN2) [PWG5101.1] | |||
| - The rest of Section 1 is an introduction to the IPP simplified | IPP Finishings 2.0 [PWG5100.1] | |||
| model for distributed printing. | ||||
| - Section 2 introduces the object types covered in the model with | ||||
| their basic behaviors, attributes, and interactions. | ||||
| - Section 3 defines the operations included in IPP/1.1. IPP | ||||
| operations are synchronous, therefore, for each operation, there is | ||||
| a both request and a response. | ||||
| - Section 4 defines the attributes (and their syntaxes) that are used | ||||
| in the model. | ||||
| - Sections 5 - 6 summarizes the implementation conformance | ||||
| requirements for objects that support the protocol and IANA | ||||
| considerations, respectively. | ||||
| - Sections 7 - 11 cover the Internationalization and Security | ||||
| considerations as well as References, Author contact information, | ||||
| and Formats for Registration Proposals. | ||||
| - Sections 12 - 14 are appendices that cover Terminology, Status | ||||
| Codes and Messages, and "media" keyword values. | ||||
| Note: This document uses terms such as "attributes", "keywords", | IPP: "output-bin" attribute extension [PWG5100.2] | |||
| and "support". These terms have special meaning and are defined | IPP: Production Printing Attributes - Set 1 [PWG5100.3] (for | |||
| in the model terminology section 12.2. Capitalized terms, such | "media-col" Job Template attribute) | |||
| as MUST, MUST NOT, REQUIRED, SHOULD, SHOULD NOT, MAY, NEED NOT, | ||||
| and OPTIONAL, have special meaning relating to conformance. | ||||
| These terms are defined in section 12.1 on conformance | ||||
| terminology, most of which is taken from RFC 2119 [RFC2119]. | ||||
| - Section 15 is an appendix that helps to clarify the effects of | IPP: Document Object [PWG5100.5] | |||
| interactions between related attributes and their values. | ||||
| - Section 16 is an appendix that enumerates the subset of Printer | ||||
| attributes that form a generic directory schema. These attributes | ||||
| are useful when registering a Printer so that a client can find the | ||||
| Printer not just by name, but by filtered searches as well. | ||||
| - Section 17 is an appendix summarizing the additions and changes | ||||
| from the IPP/1.0 "Model and Semantics" document [RFC2566] to make | ||||
| this IPP/1.1 document. | ||||
| - Section 18 is the full copyright notice. | ||||
| 1.1 Simplified Printing Model | IPP: Page Overrides [PWG5100.6] | |||
| IPP: Job Extensions [PWG5100.7] | ||||
| IPP: "-actual" attributes [PWG5100.8] | ||||
| IPP: Printer State Extensions v1.0 [PWG5100.9] | ||||
| IPP: Job and Printer Extensions - Set 2 (JPS2) [PWG5100.11] | ||||
| IPP 2.0, 2.1, and 2.2 [PWG5100.12] | ||||
| IPP: Job and Printer Extensions - Set 3 (JPS3) [PWG5100.13] | ||||
| IPP Everywhere [PWG5100.14] | ||||
| IPP FaxOut Service [PWG5100.15] | ||||
| IPP Transaction-Based Printing Extensions [PWG5100.16] | ||||
| IPP Scan Service [PWG5100.17] | ||||
| IPP Shared Infrastructure Extensions [PWG5100.18] | ||||
| IPP Implementor's Guide 2.0 [PWG5100.19] | ||||
| This document is organized as follows: | ||||
| o The rest of Section 1 is an introduction to the IPP simplified | ||||
| model for distributed printing; | ||||
| o Section 2 defines the terminology and conventions used within this | ||||
| document; | ||||
| o Section 3 introduces the object types covered in this document | ||||
| with their basic behaviors, attributes, and interactions; | ||||
| o Section 4 defines the core operations for IPP/1.1. IPP operations | ||||
| are synchronous - each operation has both a request and a | ||||
| response; | ||||
| o Section 5 defines the core attributes (and their syntaxes) that | ||||
| are used in the model; | ||||
| o Sections 6 - 7 summarize the implementation conformance | ||||
| requirements for objects that support the protocol and IANA | ||||
| considerations, respectively; | ||||
| o Sections 8 and 9 cover the Internationalization and Security | ||||
| considerations for IPP; and | ||||
| o The appendices provide a reference for Status Codes, "media" | ||||
| keyword values, processing of IPP attributes, and the generic | ||||
| directory schema. | ||||
| 1.1. Simplified Printing Model | ||||
| In order to achieve its goal of realizing a workable printing | In order to achieve its goal of realizing a workable printing | |||
| protocol for the Internet, the Internet Printing Protocol (IPP) is | protocol for the Internet, the Internet Printing Protocol (IPP) is | |||
| based on a simplified printing model that abstracts the many | based on a simplified printing model that abstracts the many | |||
| components of real world printing solutions. The Internet is a | components of real world printing solutions. The Internet is a | |||
| distributed computing environment where requesters of print services | distributed computing environment where requesters of print services | |||
| (clients, applications, printer drivers, etc.) cooperate and interact | (clients, applications, printer drivers, etc.) cooperate and interact | |||
| with print service providers. This model and semantics document | with print service providers. This model and semantics document | |||
| describes a simple, abstract model for IPP even though the underlying | describes a simple, abstract model for IPP even though the underlying | |||
| configurations may be complex "n-tier" client/server systems. An | configurations can be complex "n-tier" client/server systems. An | |||
| important simplifying step in the IPP model is to expose only the key | important simplifying step in the IPP model is to expose only the key | |||
| objects and interfaces required for printing. The model described in | objects and interfaces required for printing. The model described in | |||
| this model document does not include features, interfaces, and | this model document does not include features, interfaces, and | |||
| relationships that are beyond the scope of the first version of IPP | relationships that are beyond the scope of IPP/1.1. IPP/1.1 | |||
| (IPP/1.1). IPP/1.1 incorporates many of the relevant ideas and | incorporates many of the relevant ideas and lessons learned from | |||
| lessons learned from other specification and development efforts | other specification and development efforts [HTPP] [ISO10175] [LDPA] | |||
| [HTPP] [ISO10175] [LDPA] [P1387.4] [PSIS] [RFC1179] [SWP]. IPP is | [P1387.4] [PSIS] [RFC1179] [SWP]. IPP is heavily influenced by the | |||
| heavily influenced by the printing model introduced in the Document | printing model introduced in the Document Printing Application (DPA) | |||
| Printing Application (DPA) [ISO10175] standard. Although DPA | [ISO10175] standard. Although DPA specifies both End User and | |||
| specifies both end user and administrative features, IPP version 1.1 | administrative features, IPP version 1.1 (IPP/1.1) focuses primarily | |||
| (IPP/1.1) focuses primarily on end user functionality with a few | on End User functionality with a few additional OPTIONAL operations | |||
| additional OPTIONAL operator operations. | for Adminstrators and Operators. | |||
| The IPP/1.1 model encapsulates the important components of | The IPP model encapsulates the important components of distributed | |||
| distributed printing into two object types: | printing into the following object types: | |||
| - Printer (Section 2.1) | o Printer (Section 3.1) | |||
| - Job (Section 2.2) | ||||
| Each object type has an associated set of operations (see section 3) | o Job (Section 3.2) | |||
| and attributes (see section 4). | ||||
| o Document (See [PWG5100.5]) | ||||
| o Subscription (See [RFC3995]) | ||||
| Each object type has an associated set of operations (see Section 4) | ||||
| and attributes (see Section 5). | ||||
| It is important, however, to understand that in real system | It is important, however, to understand that in real system | |||
| implementations (which lie underneath the abstracted IPP/1.1 model), | implementations (which lie underneath the abstracted IPP model), | |||
| there are other components of a print service which are not | there are other components of a print service which are not | |||
| explicitly defined in the IPP/1.1 model. The following figure | explicitly defined in the IPP model. The following figure | |||
| illustrates where IPP/1.1 fits with respect to these other | illustrates where IPP fits with respect to these other components. | |||
| components. | ||||
| +--------------+ | +--------------+ | |||
| | Application | | | Application | | |||
| o +. . . . . . . | | o +. . . . . . . | | |||
| \|/ | Spooler | | \|/ | Spooler | | |||
| / \ +. . . . . . . | +---------+ | / \ +. . . . . . . | +---------+ | |||
| End-User | Print Driver |---| File | | End User | Print Driver |---| File | | |||
| +-----------+ +-----+ +------+-------+ +----+----+ | +-----------+ +-----+ +------+-------+ +----+----+ | |||
| | Browser | | GUI | | | | | Browser | | GUI | | | | |||
| +-----+-----+ +--+--+ | | | +-----+-----+ +--+--+ | | | |||
| | | | | | | | | | | |||
| | +---+------------+---+ | | | +---+------------+---+ | | |||
| N D S | | IPP Client |------------+ | N D S | | IPP Client |------------+ | |||
| O I E | +---------+----------+ | O I E | +---------+----------+ | |||
| T R C | | | T R C | | | |||
| I E U | | I E U | | |||
| F C R -------------- Transport ------------------ | F C R -------------- Transport ------------------ | |||
| skipping to change at page 11, line 42 ¶ | skipping to change at page 12, line 41 ¶ | |||
| I +--------+--------+ | | I +--------+--------+ | | |||
| O | | | O | | | |||
| N +-----------------+ | IPP Printer | N +-----------------+ | IPP Printer | |||
| | Print Service | | | | Print Service | | | |||
| +-----------------+ | | +-----------------+ | | |||
| | --+ | | --+ | |||
| +-----------------+ | +-----------------+ | |||
| | Output Device(s)| | | Output Device(s)| | |||
| +-----------------+ | +-----------------+ | |||
| Figure 1 - IPP Model | ||||
| An IPP Printer object encapsulates the functions normally associated | An IPP Printer object encapsulates the functions normally associated | |||
| with physical output devices along with the spooling, scheduling and | with physical Output Devices along with the spooling, scheduling and | |||
| multiple device management functions often associated with a print | multiple device management functions often associated with a print | |||
| server. Printer objects are optionally registered as entries in a | server. Printers are optionally registered as entries in a directory | |||
| directory where end users find and select them based on some sort of | where End Users find and select them based on some sort of filtered | |||
| filtered and context based searching mechanism (see section 16). The | and context based searching mechanism (see Appendix D). The | |||
| directory is used to store relatively static information about the | directory is used to store relatively static information about the | |||
| Printer, allowing end users to search for and find Printers that | Printer, allowing End Users to search for and find Printers that | |||
| match their search criteria, for example: name, context, printer | match their search criteria, for example: name, location, context, | |||
| capabilities, etc. The more dynamic information, such as state, | printer capabilities, etc. The more dynamic information, such as | |||
| currently loaded and ready media, number of jobs at the Printer, | state, currently loaded and ready media, number of Jobs at the | |||
| errors, warnings, and so forth, is directly associated with the | Printer, errors, warnings, and so forth, is directly associated with | |||
| Printer object itself rather than with the entry in the directory | the Printer itself rather than with the entry in the directory which | |||
| which only represents the Printer object. | only references the Printer. | |||
| IPP clients implement the IPP protocol on the client side and give | IPP Clients implement the IPP protocol on the Client side and give | |||
| end users (or programs running on behalf of end users) the ability to | End Users (or programs running on behalf of End Users) the ability to | |||
| query Printer objects and submit and manage print jobs. An IPP | query Printers and submit and manage print Jobs. An IPP server is | |||
| server is just that part of the Printer object that implements the | just that part of the Printer object that implements the server-side | |||
| server-side protocol. The rest of the Printer object implements (or | protocol. The rest of the Printer object implements (or gateways | |||
| gateways into) the application semantics of the print service itself. | into) the application semantics of the print service itself. | |||
| The Printer objects may be embedded in an output device or may be | Printers can be embedded in an Output Device or can be implemented on | |||
| implemented on a host on the network that communicates with an output | a host on the network that communicates with an Output Device. | |||
| device. | ||||
| When a job is submitted to the Printer object and the Printer object | When a Job is submitted to the Printer and the Printer has validated | |||
| validates the attributes in the submission request, the Printer | the attributes in the submission request, the Printer creates a new | |||
| object creates a new Job object. The end user then interacts with | IPP Job object. The End User then interacts with this new Job to | |||
| this new Job object to query its status and monitor the progress of | query its status and monitor the progress of the Job. An End User can | |||
| the job. An end user can also cancel their print jobs by using the | also cancel their print Jobs by using the Job's Cancel-Job operation. | |||
| Job object's Cancel-Job operation. An end-user can also hold, | An End User can also hold, release, and restart their print Jobs | |||
| release, and restart their print jobs using the Job object's OPTIONAL | using the Job's OPTIONAL Hold-Job, Release-Job, and Restart-Job | |||
| Hold-Job, Release-Job, and Restart-Job operations, if implemented. | operations, if implemented. | |||
| A privileged operator or administrator of a Printer object can | A privileged Operator or Adminstrator of a Printer can cancel, hold, | |||
| cancel, hold, release, and restart any user's job using the REQUIRED | release, and restart any user's Job using the REQUIRED Cancel-Job and | |||
| Cancel-Job and the OPTIONAL Hold-Job, Release-Job, and Restart-Job | the OPTIONAL Hold-Job, Release-Job, and Restart-Job operations. In | |||
| operations. In additional privileged operator or administrator of a | addition, a privileged Operator or Adminstrator of a Printer can | |||
| Printer object can pause, resume, or purge (jobs from) a Printer | pause, resume, or purge (Jobs from) a Printer using the OPTIONAL | |||
| object using the OPTIONAL Pause-Printer, Resume-Printer, and Purge- | Pause-Printer, Resume-Printer, and Purge-Jobs operations, if | |||
| Jobs operations, if implemented. | implemented. | |||
| The notification service is out of scope for this IPP/1.1 document, | The notification service is defined in IPP: Event Notifications and | |||
| but using such a notification service, the end user is able to | Subscriptions [RFC3995]. By using such a notification service, the | |||
| register for and receive Printer specific and Job specific events. | End User is able to register for and receive Printer and Job specific | |||
| An end user can query the status of Printer objects and can follow | events asynchronously. Otherwise, an End User can query the status | |||
| the progress of Job objects by polling using the Get-Printer- | of Printers and can follow the progress of Jobs by polling using the | |||
| Attributes, Get-Jobs, and Get-Job-Attributes operations. | Get-Printer-Attributes, Get-Jobs, and Get-Job-Attributes operations. | |||
| 2. IPP Objects | 2. Conventions Used in This Document | |||
| The IPP/1.1 model introduces objects of type Printer and Job. Each | 2.1. Requirements Language | |||
| type of object models relevant aspects of a real-world entity such as | ||||
| a real printer or real print job. Each object type is defined as a | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
| set of possible attributes that may be supported by instances of that | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
| object type. For each object (instance), the actual set of supported | document are to be interpreted as described in [RFC2119]. | |||
| The key word "DEPRECATED" in this document refers to an operation, | ||||
| attribute, or value that SHOULD NOT be used or supported in new | ||||
| implementations. | ||||
| 2.2. Printing Terminology | ||||
| Client: Initiator of outgoing IPP session requests and sender of | ||||
| outgoing IPP operation requests (Hypertext Transfer Protocol -- | ||||
| HTTP/1.1 [RFC7230] User Agent). | ||||
| Document: An object created and managed by a Printer that contains | ||||
| description, processing, and status information. A Document object | ||||
| can have attached data and is bound to a single Job [PWG5100.5]. | ||||
| 'ipp' URI: An IPP URI as defined in [RFC3510]. | ||||
| 'ipps' URI: An IPP URI as defined in [RFC7472]. | ||||
| Job: An object created and managed by a Printer that contains | ||||
| description, processing, and status information. The Job also | ||||
| contains zero or more Document objects. | ||||
| Logical Device: A print server, software service, or gateway that | ||||
| processes Jobs and either forwards or stores the processed Job or | ||||
| uses one or more Physical Devices to render output. | ||||
| Output Device: A single Logical or Physical Device. | ||||
| Physical Device: A hardware implementation of an endpoint device, | ||||
| e.g., a marking engine, a fax modem, etc. | ||||
| Printer: Listener for incoming IPP session requests and receiver of | ||||
| incoming IPP operation requests (Hypertext Transfer Protocol -- | ||||
| HTTP/1.1 [RFC7230] Server) that represents one or more Physical | ||||
| Devices or a Logical Device. | ||||
| 2.3. Model Terminology | ||||
| 2.3.1. Administrator | ||||
| An End User who is also authorized to manage all aspects of an Output | ||||
| Device or Printer, including creating the printer instances and | ||||
| controlling the authorization of other End Users and Operators | ||||
| [RFC2567]. | ||||
| 2.3.2. Attributes | ||||
| An attribute is an item of information that is associated with an | ||||
| instance of an IPP object. An attribute consists of an attribute | ||||
| name and one or more attribute values. Each attribute has a specific | ||||
| attribute syntax. All object attributes are defined in Section 5 and | ||||
| all operation attributes are defined in Section 4. | ||||
| Job Template Attributes are described in Section 5.2. The Client | ||||
| optionally supplies Job Template attributes in a Job Creation request | ||||
| (operation requests that create Job objects). The Printer object has | ||||
| associated attributes which define supported and default values for | ||||
| the Printer. | ||||
| 2.3.2.1. Attribute Group Name | ||||
| Related attributes are grouped into named groups. The name of the | ||||
| group is a keyword. The group name can be used in place of naming | ||||
| all the attributes in the group explicitly. Attribute groups are | ||||
| defined in Section 4. | ||||
| 2.3.2.2. Attribute Name | ||||
| Each attribute is uniquely identified in this document by its | ||||
| attribute name. An attribute name is a keyword. The keyword | ||||
| attribute name is given in the section header describing that | ||||
| attribute. In running text in this document, attribute names are | ||||
| indicated inside double quotation marks (") where the quotation marks | ||||
| are not part of the keyword itself. | ||||
| 2.3.2.3. Attribute Syntax | ||||
| Each attribute is defined using an explicit syntax type. In this | ||||
| document, each syntax type is defined as a keyword with specific | ||||
| meaning. The "Encoding and Transport" document [RFC2910bis] | ||||
| indicates the actual "on-the-wire" encoding rules for each syntax | ||||
| type. Attribute syntax types are defined in Section 5.1. | ||||
| 2.3.2.4. Attribute Value | ||||
| Each attribute has one or more values. Attribute values are | ||||
| represented in the syntax type specified for that attribute. In | ||||
| running text in this document, attribute values are indicated inside | ||||
| single quotation marks ('), whether their attribute syntax is | ||||
| keyword, integer, text, etc. where the quotation marks are not part | ||||
| of the value itself. | ||||
| 2.3.3. End User | ||||
| A person or software process that is authorized to perform basic | ||||
| printing functions, including finding/locating a Printer, creating a | ||||
| local instance of a Printer, viewing Printer status, viewing Printer | ||||
| capabilities, submitting a Print Job, viewing Print Job status, and | ||||
| altering the attributes of a Print Job [RFC2567]. | ||||
| 2.3.4. Impression | ||||
| An "Impression" is the content imposed upon a one side of a Media | ||||
| Sheet by a marking engine, independent of the number of times that | ||||
| the sheet side passes any marker. An Impression contains one or more | ||||
| Input Pages which are imposed (scaled, translated, and/or rotated) | ||||
| during processing of the Document data. | ||||
| 2.3.5. Input Page | ||||
| An "Input Page" is a page according to the definition of pages in the | ||||
| language used to express the Document data. | ||||
| 2.3.6. Job Creation Operation | ||||
| A "Job Creation Operation" is any operation that causes the creation | ||||
| of a Job object, e.g., the Create-Job, Print-Job, and Print-URI | ||||
| operations defined in this document. | ||||
| 2.3.7. Keyword | ||||
| Keywords are used within this document as identifiers of semantic | ||||
| entities within the abstract model (see Section 5.1.3.3). Attribute | ||||
| names, some attribute values, attribute syntaxes, and attribute group | ||||
| names are represented as keywords. | ||||
| 2.3.8. Media Sheet | ||||
| A "Media Sheet" is a single instance of a medium, whether printing on | ||||
| one or both sides of the medium. Media Sheets also include sections | ||||
| of roll media. | ||||
| 2.3.9. Operator | ||||
| An End User that also has special rights on the Output Device or | ||||
| Printer. The Operator typically monitors the status of the Printer | ||||
| and manages and controls the Jobs at the Output Device [RFC2567]. | ||||
| The Operator is allowed to query and control the Printer, Jobs, and | ||||
| Documents based on site policy. | ||||
| 2.3.10. Set | ||||
| A "Set" is a logical boundary between the delivered Media Sheets of a | ||||
| printed Job. For example, in the case of a ten page single Document | ||||
| with collated pages and a request for 50 copies, each of the 50 | ||||
| printed copies of the Document constitutes a "Set". If the pages | ||||
| were uncollated, then 50 copies of each of the individual pages | ||||
| within the Document would represent each "Set". Finishing processes | ||||
| operate on Sets. | ||||
| 2.3.11. Supports | ||||
| By definition, a Printer supports an attribute only if that Printer | ||||
| accepts it in a request or responds with the corresponding attribute | ||||
| populated with some value(s) in a response to a query for that | ||||
| attribute. A Printer supports an attribute value if the value is one | ||||
| of the Printer's "supported values" attributes. The device behind a | ||||
| Printer can exhibit a behavior that corresponds to some IPP | ||||
| attribute, but if the Printer, when queried for that attribute, | ||||
| doesn't respond with the attribute, then as far as IPP is concerned, | ||||
| that implementation does not support that feature. If the Printer's | ||||
| "xxx-supported" attribute is not populated with a particular value | ||||
| (even if that value is a legal value for that attribute), then that | ||||
| Printer does not support that particular value. | ||||
| A conforming implementation MUST support all REQUIRED attributes. | ||||
| However, even for REQUIRED attributes, conformance to IPP does not | ||||
| mandate that all implementations support all possible values | ||||
| representing all possible Job processing behaviors and features. For | ||||
| example, if a given instance of a Printer supports only certain | ||||
| Document formats, then that Printer responds with the "document- | ||||
| format-supported" attribute populated with a set of values, possibly | ||||
| only one, taken from the entire set of possible values defined for | ||||
| that attribute. This limited set of values represents the Printer's | ||||
| set of supported Document formats. Supporting an attribute and some | ||||
| set of values for that attribute enables IPP End Users to be aware of | ||||
| and make use of those features associated with that attribute and | ||||
| those values. If an implementation chooses to not support an | ||||
| attribute or some specific value, then IPP End Users would have no | ||||
| ability to make use of that feature within the context of IPP itself. | ||||
| However, due to existing practice and legacy systems which are not | ||||
| IPP aware, there might be some other mechanism outside the scope of | ||||
| IPP to control or request the "unsupported" feature (such as embedded | ||||
| instructions within the Document data itself). | ||||
| For example, consider the "finishings-supported" attribute. | ||||
| 1) If a Printer is not physically capable of stapling, the | ||||
| "finishings-supported" attribute MUST NOT be populated with the value | ||||
| of 'staple'. | ||||
| 2) A Printer is physically capable of stapling, however an | ||||
| implementation chooses not to support stapling in the IPP | ||||
| "finishings" attribute. In this case, 'staple' MUST NOT be a value | ||||
| in the "finishings-supported" Printer object attribute. Without | ||||
| support for the value 'staple', an IPP End User would have no means | ||||
| within the protocol itself to request that a Job be stapled. | ||||
| However, an existing Document data formatter might be able to request | ||||
| that the Document be stapled directly with an embedded instruction | ||||
| within the Document data. In this case, the IPP implementation does | ||||
| not "support" stapling, however the End User is still able to have | ||||
| some control over the stapling of the completed Job. | ||||
| 3) A Printer is physically capable of stapling, and an implementation | ||||
| chooses to support stapling in the IPP "finishings" attribute. In | ||||
| this case, 'staple' MUST be a value in the "finishings-supported" | ||||
| Printer attribute. Doing so enables End Users to be aware of and | ||||
| make use of the stapling feature using IPP attributes. | ||||
| Even though support for Job Template attributes by a Printer is | ||||
| OPTIONAL in IPP/1.1, Printers whose associated device(s) are capable | ||||
| of realizing any feature or function that corresponds to an IPP | ||||
| attribute and some associated value SHOULD support that IPP attribute | ||||
| and value. | ||||
| The set of values in any of the supported value attributes is set | ||||
| (populated) by some administrative process or automatic sensing | ||||
| mechanism that is outside the scope of this document. For | ||||
| administrative policy and control reasons, an Adminstrator can choose | ||||
| to make only a subset of possible values visible to the End User. In | ||||
| this case, the real Output Device behind the IPP Printer abstraction | ||||
| can be capable of a certain feature, however an Adminstrator is | ||||
| specifying that access to that feature not be exposed to the End User | ||||
| through the IPP protocol. Also, since a Printer can represent a | ||||
| logical print device (not just a physical device) the actual process | ||||
| for supporting a value is undefined and left up to the | ||||
| implementation. However, if a Printer supports a value, some manual | ||||
| human action can be needed to realize the semantic action associated | ||||
| with the value, but no End User action is required. | ||||
| For example, if one of the values in the "finishings-supported" | ||||
| attribute is 'staple', the actual process might be an automatic | ||||
| staple action by a physical device controlled by some command sent to | ||||
| the device. Or, the actual process of stapling might be a manual | ||||
| action by an Operator at an Operator attended Printer. | ||||
| For another example of how supported attributes function, consider an | ||||
| Adminstrator who desires to control all print Jobs so that no Job | ||||
| sheets are printed in order to conserve paper. To force no Job | ||||
| sheets, the Adminstrator sets the only supported value for the "job- | ||||
| sheets-supported" attribute to 'none'. In this case, if a Client | ||||
| requests anything except 'none', the Job Creation request is rejected | ||||
| or the "job-sheets" value is ignored (depending on the value of "ipp- | ||||
| attribute-fidelity"). To force the use of Job start/end sheets on | ||||
| all jobs, the Adminstrator does not include the value 'none' in the | ||||
| "job-sheets-supported" attribute. In this case, if a Client requests | ||||
| 'none', the Job Creation request is rejected or the "job-sheets" | ||||
| value is ignored (again depending on the value of "ipp-attribute- | ||||
| fidelity"). | ||||
| Job Template attributes will typically have corresponding "xxx- | ||||
| supported" and "xxx-default" Printer Description attributes that | ||||
| contain the supported and default values for the attribute. For | ||||
| capabilities that are not associated with a Job, the convention is to | ||||
| have an "xxx-supported" Printer Description attribute that lists the | ||||
| supported values and an "xxx-configured" Printer Description | ||||
| attribute that contains the value being used by the Printer. For | ||||
| example, the "charset-supported" Printer Description attribute | ||||
| (Section 5.4.18) lists the supported character sets for the Printer | ||||
| while the "charset-configured" Printer Description attribute | ||||
| (Section 5.4.17) specifies the character set being used by the | ||||
| Printer. | ||||
| 2.3.12. Terminating State | ||||
| The final state for a Job or other object is called its Terminating | ||||
| State. For example, the 'aborted', 'canceled', and 'completed' Job | ||||
| states are Terminating States. | ||||
| 2.4. Abbreviations | ||||
| ABNF: Augmented Backus-Naur Form [RFC5234] | ||||
| ASCII: American Standard Code for Information Interchange [ASCII] | ||||
| HTTP: HyperText Transfer Protocol [RFC7230] | ||||
| HTTPS: HTTP over TLS [RFC2818] | ||||
| IANA: Internet Assigned Numbers Authority | ||||
| IEEE: Institute of Electrical and Electronics Engineers | ||||
| IESG: Internet Engineering Steering Group | ||||
| IPP: Internet Printing Protocol (this document, [RFC2910bis], and | ||||
| [PWG5100.12]) | ||||
| ISTO: IEEE Industry Standards and Technology Organization | ||||
| LPD: Line Printer Daemon Protocol [RFC1179] | ||||
| PWG: IEEE-ISTO Printer Working Group [3] | ||||
| RFC: Request for Comments | ||||
| TCP: Transmission Control Protocol [RFC793] | ||||
| TLS: Transport Layer Security [RFC5246] | ||||
| URI: Uniform Resource Identifier [RFC3986] | ||||
| URL: Uniform Resource Locator [RFC3986] | ||||
| UTF-8: Unicode Transformation Format - 8-bit [RFC3629] | ||||
| 3. IPP Objects | ||||
| This document defines objects of type Printer and Job. Each type of | ||||
| object models relevant aspects of a real-world entity such as a real | ||||
| Printer or real print Job. Each object type is defined as a set of | ||||
| possible attributes that can be supported by instances of that object | ||||
| type. For each object (instance), the actual set of supported | ||||
| attributes and values describe a specific implementation. The | attributes and values describe a specific implementation. The | |||
| object's attributes and values describe its state, capabilities, | object's attributes and values describe its state, capabilities, | |||
| realizable features, job processing functions, and default behaviors | realizable features, Job processing functions, and default behaviors | |||
| and characteristics. For example, the Printer object type is defined | and characteristics. For example, the Printer object type is defined | |||
| as a set of attributes that each Printer object potentially supports. | as a set of attributes that each Printer object potentially supports. | |||
| In the same manner, the Job object type is defined as a set of | In the same manner, the Job object type is defined as a set of | |||
| attributes that are potentially supported by each Job object. | attributes that are potentially supported by each Job object. | |||
| Each attribute included in the set of attributes defining an object | Each attribute included in the set of attributes defining an object | |||
| type is labeled as: | type is labeled as: | |||
| - "REQUIRED": each object MUST support the attribute. | o "REQUIRED": each object MUST support the attribute. | |||
| - "RECOMMENDED": each object SHOULD support the attribute. | ||||
| - "OPTIONAL": each object MAY support the attribute. | o "RECOMMENDED": each object SHOULD support the attribute. | |||
| o "OPTIONAL": each object MAY support the attribute. | ||||
| Some definitions of attribute values indicate that an object MUST or | Some definitions of attribute values indicate that an object MUST or | |||
| SHOULD support the value; otherwise, support of the value is | SHOULD support the value; otherwise, support of the value is | |||
| OPTIONAL. | OPTIONAL. However, if an implementation supports an attribute, it | |||
| MUST support at least one of the possible values for that attribute. | ||||
| However, if an implementation supports an attribute, it MUST support | ||||
| at least one of the possible values for that attribute. | ||||
| 2.1 Printer Object | 3.1. Printer Object | |||
| The major component of the IPP/1.1 model is the Printer object. A | The major component of the IPP model is the Printer object. A | |||
| Printer object implements the server-side of the IPP/1.1 protocol. | Printer object implements the server-side of the IPP/1.1 protocol. | |||
| Using the protocol, end users may query the attributes of the Printer | Using the protocol, End Users can query the attributes of the Printer | |||
| object and submit print jobs to the Printer object. The actual | object and submit print Jobs to the Printer object. The actual | |||
| implementation components behind the Printer abstraction may take on | implementation components behind the Printer abstraction can take on | |||
| different forms and different configurations. However, the model | different forms and different configurations. However, the model | |||
| abstraction allows the details of the configuration of real | abstraction allows the details of the configuration of real | |||
| components to remain opaque to the end user. Section 3 describes | components to remain opaque to the End User. Section 4 describes | |||
| each of the Printer operations in detail. | each of the Printer operations in detail. | |||
| The capabilities and state of a Printer object are described by its | The capabilities and state of a Printer object are described by its | |||
| attributes. Printer attributes are divided into two groups: | attributes. Printer attributes are divided into two groups: | |||
| - "job-template" attributes: These attributes describe supported job | o "job-template" attributes: These attributes describe supported Job | |||
| processing capabilities and defaults for the Printer object. (See | processing capabilities and defaults for the Printer object. (See | |||
| section 4.2) | Section 5.2) | |||
| - "printer-description" attributes: These attributes describe the | ||||
| Printer object's identification, state, location, references to | ||||
| other sources of information about the Printer object, etc. (see | ||||
| section 4.4) | ||||
| Since a Printer object is an abstraction of a generic document output | o "printer-description" attributes: These attributes describe the | |||
| device and print service provider, a Printer object could be used to | Printer's identification, state, location, references to other | |||
| sources of information about the Printer object, etc. (see | ||||
| Section 5.4) | ||||
| Since a Printer object is an abstraction of a generic Document Output | ||||
| Device and print service provider, a Printer object could be used to | ||||
| represent any real or virtual device with semantics consistent with | represent any real or virtual device with semantics consistent with | |||
| the Printer object, such as a fax device, an imager, or even a CD | the Printer object, such as a fax device, an imager, or even a CD | |||
| writer. | writer. | |||
| Some examples of configurations supporting a Printer object include: | Some examples of configurations supporting a Printer object include: | |||
| 1) An output device with no spooling capabilities | 1. An Output Device with no spooling capabilities | |||
| 2) An output device with a built-in spooler | ||||
| 3) A print server supporting IPP with one or more associated | ||||
| output devices | ||||
| 3a) The associated output devices may or may not be capable of | ||||
| spooling jobs | ||||
| 3b) The associated output devices may or may not support IPP | ||||
| The following figures show some examples of how Printer objects can | 2. An Output Device with a built-in spooler | |||
| be realized on top of various distributed printing configurations. | ||||
| The embedded case below represents configurations 1 and 2. The hosted | 3. A print server supporting IPP with one or more associated Output | |||
| Devices | ||||
| 3a. The associated Output Devices are or are not capable of | ||||
| spooling jobs | ||||
| 3b. The associated Output Devices possibly support IPP | ||||
| The following figures show some examples of how Printers can be | ||||
| realized on top of various distributed printing configurations. The | ||||
| embedded case below represents configurations 1 and 2. The hosted | ||||
| and fan-out figures below represent configurations 3a and 3b. | and fan-out figures below represent configurations 3a and 3b. | |||
| In this document the term "client" refers to a software entity that | In this document the term "client" refers to a software entity that | |||
| sends IPP operation requests to an IPP Printer object and accepts IPP | sends IPP operation requests to an IPP Printer and accepts IPP | |||
| operation responses. A client MAY be: | operation responses. A Client MAY be: | |||
| 1. contained within software controlled by an end user, e.g. | 1. contained within software controlled by an End User, e.g. | |||
| activated by the "Print" menu item in an application or | activated by the "Print" menu item in an application; or | |||
| 2. the print server component that sends IPP requests to either an | 2. the print server component that sends IPP requests to either an | |||
| output device or another "downstream" print server. | Output Device or another "downstream" print server. | |||
| The term "IPP Printer" is a network entity that accepts IPP operation | The term "IPP Printer" is a network entity that accepts IPP operation | |||
| requests and returns IPP operation responses. As such, an IPP object | requests and returns IPP operation responses. As such, an IPP | |||
| MAY be: | Printer object MAY be: | |||
| 1. an (embedded) device component that accepts IPP requests and | 1. an (embedded) device component that accepts IPP requests and | |||
| controls the device or | controls the device or | |||
| 2. a component of a print server that accepts IPP requests (where | 2. a component of a print server that accepts IPP requests (where | |||
| the print server controls one or more networked devices using | the print server controls one or more networked devices using IPP | |||
| IPP or other protocols). | or other protocols). | |||
| Legend: | Legend: | |||
| ##### indicates a Printer object which is | ##### indicates a Printer object which is | |||
| either embedded in an output device or is | either embedded in an Output Device or is | |||
| hosted in a server. The Printer object | hosted in a server. The Printer object | |||
| might or might not be capable of queuing/spooling. | might or might not be capable of queuing/spooling. | |||
| any indicates any network protocol or direct | any indicates any network protocol or direct | |||
| connect, including IPP | connect, including IPP | |||
| embedded printer: | embedded printer: | |||
| output device | Output Device | |||
| +---------------+ | +---------------+ | |||
| O +--------+ | ########### | | O +--------+ | ########### | | |||
| /|\ | client |------------IPP------------># Printer # | | /|\ | Client |------------IPP------------># Printer # | | |||
| / \ +--------+ | # Object # | | / \ +--------+ | # Object # | | |||
| | ########### | | | ########### | | |||
| +---------------+ | +---------------+ | |||
| hosted printer: | hosted printer: | |||
| +---------------+ | +---------------+ | |||
| O +--------+ ########### | | | O +--------+ ########### | | | |||
| /|\ | client |--IPP--># Printer #-any->| output device | | /|\ | Client |--IPP--># Printer #-any->| Output Device | | |||
| / \ +--------+ # Object # | | | / \ +--------+ # Object # | | | |||
| ########### +---------------+ | ########### +---------------+ | |||
| +---------------+ | +---------------+ | |||
| fan out: | | | fan out: | | | |||
| +-->| output device | | +-->| Output Device | | |||
| any/ | | | any/ | | | |||
| O +--------+ ########### / +---------------+ | O +--------+ ########### / +---------------+ | |||
| /|\ | client |-IPP-># Printer #--* | /|\ | Client |-IPP-># Printer #--* | |||
| / \ +--------+ # Object # \ +---------------+ | / \ +--------+ # Object # \ +---------------+ | |||
| ########### any\ | | | ########### any\ | | | |||
| +-->| output device | | +-->| Output Device | | |||
| | | | | | | |||
| +---------------+ | +---------------+ | |||
| 2.2 Job Object | Figure 2 - IPP Printer Object Architecture | |||
| A Job object is used to model a print job. A Job object contains | 3.2. Job Object | |||
| documents. The information required to create a Job object is sent | ||||
| in a create request from the end user via an IPP Client to the | A Job object is used to model a print Job. A Job object contains zero | |||
| Printer object. The Printer object validates the create request, and | or more Documents. The information required to create a Job object | |||
| if the Printer object accepts the request, the Printer object creates | is sent in a Job Creation request from the End User via an IPP Client | |||
| the new Job object. Section 3 describes each of the Job operations | to the Printer. The Printer validates the Job Creation request, and | |||
| in detail. | if the Printer accepts the request, the Printer creates the new Job | |||
| object. Section 4 describes each of the Job operations in detail. | ||||
| The characteristics and state of a Job object are described by its | The characteristics and state of a Job object are described by its | |||
| attributes. Job attributes are grouped into two groups as follows: | attributes. Job attributes are grouped into two groups as follows: | |||
| - "job-template" attributes: These attributes can be supplied by | o "job-template" attributes: These attributes can be supplied by the | |||
| the client or end user and include job processing instructions | Client or End User and include Job processing instructions which | |||
| which are intended to override any Printer object defaults | are intended to override any Printer defaults and/or instructions | |||
| and/or instructions embedded within the document data. (See | embedded within the Document data. (See Section 5.2) | |||
| section 4.2) | ||||
| - "job-description" attributes: These attributes describe the Job | o "job-description" attributes: These attributes describe the Job's | |||
| object's identification, state, size, etc. The client supplies | identification, state, size, etc. The Client supplies some of | |||
| some of these attributes, and the Printer object generates | these attributes, and the Printer generates others. (See | |||
| others. (See section 4.3) | Section 5.3) | |||
| An implementation MUST support at least one document per Job object. | An implementation MUST support at least one Document per Job object. | |||
| An implementation MAY support multiple documents per Job object. A | An implementation MAY support multiple Documents per Job object. A | |||
| document is either: | Document is either: | |||
| - a stream of document data in a format supported by the Printer | o a stream of Document data in a format supported by the Printer | |||
| object (typically a Page Description Language - PDL), or | (typically a Page Description Language - PDL), or | |||
| - a reference to such a stream of document data | ||||
| In IPP/1.1, a document is not modeled as an IPP object, therefore it | o a reference to such a stream of Document data | |||
| has no object identifier or associated attributes. All job | ||||
| processing instructions are modeled as Job object attributes. These | ||||
| attributes are called Job Template attributes and they apply equally | ||||
| to all documents within a Job object. | ||||
| 2.3 Object Relationships | All Job processing instructions are modeled as Job object attributes. | |||
| These attributes are called Job Template attributes and they apply | ||||
| equally to all Documents within a Job object. | ||||
| 3.3. Object Relationships | ||||
| IPP objects have relationships that are maintained persistently along | IPP objects have relationships that are maintained persistently along | |||
| with the persistent storage of the object attributes. | with the persistent storage of the object attributes. | |||
| A Printer object can represent either one or more physical output | A Printer object can represent either one or more physical Output | |||
| devices or a logical device which "processes" jobs but never actually | Devices or a logical device which "processes" Jobs but never actually | |||
| uses a physical output device to put marks on paper. Examples of | uses a physical Output Device to put marks on paper. Examples of | |||
| logical devices include a Web page publisher or a gateway into an | logical devices include a Web page publisher or a gateway into an | |||
| online document archive or repository. A Printer object contains | online document archive or repository. A Printer contains zero or | |||
| zero or more Job objects. | more Job objects. | |||
| A Job object is contained by exactly one Printer object, however the | A Job object is contained by exactly one Printer, however the | |||
| identical document data associated with a Job object could be sent to | identical Document data associated with a Job could be sent to either | |||
| either the same or a different Printer object. In this case, a | the same or a different Printer. In this case, a second Job object | |||
| second Job object would be created which would be almost identical to | would be created which would be almost identical to the first Job, | |||
| the first Job object, however it would have new (different) Job | however it would have new (different) Job object identifiers (see | |||
| object identifiers (see section 2.4). | Section 3.4). | |||
| A Job object is either empty (before any documents have been added) | A Job is either empty (before any Documents have been added) or | |||
| or contains one or more documents. If the contained document is a | contains one or more Documents. If the contained Document is a | |||
| stream of document data, that stream can be contained in only one | stream of Document data, that stream can be contained in only one | |||
| document. However, there can be identical copies of the stream in | Document. However, there can be identical copies of the stream in | |||
| other documents in the same or different Job objects. If the | other Documents in the same or different Jobs. If the contained | |||
| contained document is just a reference to a stream of document data, | Document is just a reference to a stream of Document data, other | |||
| other documents (in the same or different Job object(s)) may contain | Documents (in the same or different Job(s)) contain the same | |||
| the same reference. | reference. | |||
| 2.4 Object Identity | 3.4. Object Identity | |||
| All Printer and Job objects are identified by a Uniform Resource | All Printer and Job objects are identified by a Uniform Resource | |||
| Identifier (URI) [RFC2396] so that they can be persistently and | Identifier (URI) [RFC3986] so that they can be persistently and | |||
| unambiguously referenced. Since every URL is a specialized form of a | unambiguously referenced. Since every URL is a specialized form of a | |||
| URI, even though the more generic term URI is used throughout the | URI, even though the more generic term URI is used throughout the | |||
| rest of this document, its usage is intended to cover the more | rest of this document, its usage is intended to cover the more | |||
| specific notion of URL as well. | specific notion of URL as well. | |||
| An administrator configures Printer objects to either support or not | An Adminstrator configures Printers to either support or not support | |||
| support authentication and/or message privacy using Transport Layer | authentication and/or message privacy using Transport Layer Security | |||
| Security (TLS) [RFC2246] (the mechanism for security configuration is | (TLS) [RFC5246]; the mechanism for security configuration is outside | |||
| outside the scope of this IPP/1.1 document). In some situations, | the scope of this IPP/1.1 document. In some situations, both types | |||
| both types of connections (both authenticated and unauthenticated) | of connections (both authenticated and unauthenticated) can be | |||
| can be established using a single communication channel that has some | established using a single communication channel that has some sort | |||
| sort of negotiation mechanism. In other situations, multiple | of negotiation mechanism. In other situations, multiple | |||
| communication channels are used, one for each type of security | communication channels are used, one for each type of security | |||
| configuration. Section 8 provides a full description of all security | configuration. Section 9 provides a full description of all security | |||
| considerations and configurations. | considerations and configurations. | |||
| If a Printer object supports more than one communication channel, | If a Printer supports more than one communication channel, some or | |||
| some or all of those channels might support and/or require different | all of those channels might support and/or require different security | |||
| security mechanisms. In such cases, an administrator could expose | mechanisms. In such cases, an Adminstrator could expose the | |||
| the simultaneous support for these multiple communication channels as | simultaneous support for these multiple communication channels as | |||
| multiple URIs for a single Printer object where each URI represents | multiple URIs for a single Printer where each URI represents one of | |||
| one of the communication channels to the Printer object. To support | the communication channels to the Printer. To support this | |||
| this flexibility, the IPP Printer object type defines a multi-valued | flexibility, the IPP Printer object type defines a multi-valued | |||
| identification attribute called the "printer-uri-supported" | identification attribute called the "printer-uri-supported" attribute | |||
| attribute. It MUST contain at least one URI. It MAY contain more | that MUST contain at least one URI. The "printer-uri-supported" | |||
| than one URI. That is, every Printer object will have at least one | attribute has two companion attributes, the "uri-security-supported" | |||
| URI that identifies at least one communication channel to the Printer | attribute and the "uri-authentication-supported". Both have the same | |||
| object, but it may have more than one URI where each URI identifies a | cardinality as "printer-uri-supported". The purpose of the "uri- | |||
| different communication channel to the Printer object. The | security-supported" attribute is to indicate the security mechanisms | |||
| "printer-uri-supported" attribute has two companion attributes, the | (if any) used for each URI listed in "printer-uri-supported". The | |||
| "uri-security-supported" attribute and the "uri-authentication- | purpose of the "uri-authentication-supported" attribute is to | |||
| supported". Both have the same cardinality as "printer-uri- | indicate the authentication mechanisms (if any) used for each URI | |||
| supported". The purpose of the "uri-security-supported" attribute is | listed in "printer-uri-supported". These three attributes are fully | |||
| to indicate the security mechanisms (if any) used for each URI listed | described in Sections 5.4.1, 5.4.2, and 5.4.3. | |||
| in "printer-uri-supported". The purpose of the "uri-authentication- | ||||
| supported" attribute is to indicate the authentication mechanisms (if | ||||
| any) used for each URI listed in "printer-uri-supported". These | ||||
| three attributes are fully described in sections 4.4.1, 4.4.2, and | ||||
| 4.4.3. | ||||
| When a job is submitted to the Printer object via a create request, | ||||
| the client supplies only a single Printer object URI. The client | ||||
| supplied Printer object URI MUST be one of the values in the | ||||
| "printer-uri-supported" Printer attribute. | ||||
| IPP/1.1 does not specify how the client obtains the client supplied | When a Job is submitted to the Printer via a Job Creation request, | |||
| URI, but it is RECOMMENDED that a Printer object be registered as an | the Client supplies only a single Printer URI. The Client supplied | |||
| entry in a directory service. End-users and programs can then | Printer URI MUST be one of the values in the "printer-uri-supported" | |||
| interrogate the directory searching for Printers. Section 16 defines | Printer attribute. | |||
| a generic schema for Printer object entries in the directory service | ||||
| and describes how the entry acts as a bridge to the actual IPP | ||||
| Printer object. The entry in the directory that represents the IPP | ||||
| Printer object includes the possibly many URIs for that Printer | ||||
| object as values in one its attributes. | ||||
| When a client submits a create request to the Printer object, the | IPP/1.1 does not specify how the Client obtains the Client supplied | |||
| Printer object validates the request and creates a new Job object. | URI, but it is RECOMMENDED that a Printer be registered as an entry | |||
| The Printer object assigns the new Job object a URI which is stored | in a directory service. End users and programs can then interrogate | |||
| in the "job-uri" Job attribute. This URI is then used by clients as | the directory searching for Printers. Appendix D defines a generic | |||
| the target for subsequent Job operations. The Printer object | schema for Printer object entries in the directory service and | |||
| generates a Job URI based on its configured security policy and the | describes how the entry acts as a bridge to the actual IPP Printer. | |||
| URI used by the client in the create request. | The entry in the directory that represents the IPP Printer includes | |||
| the possibly many URIs for that Printer as values in one its | ||||
| attributes. | ||||
| For example, consider a Printer object that supports both a | When a Client submits a Job Creation request to the Printer, the | |||
| communication channel secured by the use of SSL3 (using HTTP over | Printer validates the request and creates a new Job object. The | |||
| SSL3 with an "https" schemed URI) and another open communication | Printer assigns the new Job a numeric identifier which is stored in | |||
| channel that is not secured with SSL3 (using a simple "http" schemed | the "job-id" Job attribute and a URI which is stored in the "job-uri" | |||
| URI). If a client were to submit a job using the secure URI, the | Job attribute. Both the numeric identifier and URI can then be used | |||
| Printer object would assign the new Job object a secure URI as well. | by Clients as the target for subsequent Job operations; the numeric | |||
| If a client were to submit a job using the open-channel URI, the | identifier is preferred. The Printer generates the Job numeric | |||
| Printer would assign the new Job object an open-channel URI. | identifier and URI based on its configured security policy and the | |||
| URI used by the Client in the Job Creation request. | ||||
| In addition, the Printer object also populates the Job object's | For example, consider a Printer that supports both a communication | |||
| "job-printer-uri" attribute. This is a reference back to the Printer | channel secured by the use of TLS (using HTTP over TLS with an | |||
| object that created the Job object. If a client only has access to a | "https" schemed URI) and another open communication channel that is | |||
| Job object's "job-uri" identifier, the client can query the Job's | not secured with TLS (using a simple "http" schemed URI). If a | |||
| "job-printer-uri" attribute in order to determine which Printer | Client were to submit a Job using the secure URI, the Printer might | |||
| object created the Job object. If the Printer object supports more | assign the new Job a secure URI as well. If a Client were to submit | |||
| than one URI, the Printer object picks the one URI supplied by the | a Job using the open-channel URI, the Printer might assign the new | |||
| client when creating the job to build the value for and to populate | Job an open-channel URI. Clients SHOULD use the "printer-uri" and | |||
| the Job's "job-printer-uri" attribute. | "job-id" attributes to target a Job to avoid any ambiguity about the | |||
| communication channel security. | ||||
| Allowing Job objects to have URIs allows for flexibility and | In addition, the Printer also populates the Job's "job-printer-uri" | |||
| scalability. For example, in some implementations, the Printer | attribute. This is a reference back to the Printer that created the | |||
| object might create Jobs that are processed in the same local | Job. If a Client only has access to a Job's "job-uri" identifier, the | |||
| environment as the Printer object itself. In this case, the Job URI | Client can query the Job's "job-printer-uri" attribute in order to | |||
| might just be a composition of the Printer's URI and some unique | determine which Printer created the Job. If the Printer supports more | |||
| component for the Job object, such as the unique 32-bit positive | than one URI, the Printer picks the one URI supplied by the Client | |||
| integer mentioned later in this paragraph. In other implementations, | when creating the Job to build the value for and to populate the | |||
| the Printer object might be a central clearing-house for validating | Job's "job-printer-uri" attribute. | |||
| all Job object creation requests, but the Job object itself might be | ||||
| created in some environment that is remote from the Printer object. | ||||
| In this case, the Job object's URI may have no physical-location | ||||
| relationship at all to the Printer object's URI. Again, the fact | ||||
| that Job objects have URIs allows for flexibility and scalability, | ||||
| however, many existing printing systems have local models or | ||||
| interface constraints that force print jobs to be identified using | ||||
| only a 32-bit positive integer rather than an independent URI. This | ||||
| numeric Job ID is only unique within the context of the Printer | ||||
| object to which the create request was originally submitted. | ||||
| Therefore, in order to allow both types of client access to IPP Job | ||||
| objects (either by Job URI or by numeric Job ID), when the Printer | ||||
| object successfully processes a create request and creates a new Job | ||||
| object, the Printer object MUST generate both a Job URI and a Job ID. | ||||
| The Job ID (stored in the "job-id" attribute) only has meaning in the | ||||
| context of the Printer object to which the create request was | ||||
| originally submitted. This requirement to support both Job URIs and | ||||
| Job IDs allows all types of clients to access Printer objects and Job | ||||
| objects no matter the local constraints imposed on the client | ||||
| implementation. | ||||
| In addition to identifiers, Printer objects and Job objects have | In addition to identifiers, Printer objects and Job objects have | |||
| names ("printer-name" and "job-name"). An object name NEED NOT be | names ("printer-name" and "job-name"). An object name is not | |||
| unique across all instances of all objects. A Printer object's name | guaranteed to be unique across all instances of all objects. A | |||
| is chosen and set by an administrator through some mechanism outside | Printer's name is chosen and set by an Adminstrator through some | |||
| the scope of this IPP/1.1 document. A Job object's name is | mechanism outside the scope of this IPP/1.1 document. A Job's name | |||
| optionally chosen and supplied by the IPP client submitting the job. | can be chosen and supplied by the IPP Client submitting the Job. If | |||
| If the client does not supply a Job object name, the Printer object | the Client does not supply a Job name, the Printer generates a name | |||
| generates a name for the new Job object. In all cases, the name only | for the new Job. In all cases, the name only has local meaning. | |||
| has local meaning. | ||||
| To summarize: | To summarize: | |||
| - Each Printer object is identified with one or more URIs. The | o Each Printer is identified by one or more URIs. The Printer's | |||
| Printer's "printer-uri-supported" attribute contains the URI(s). | "printer-uri-supported" attribute contains the URI(s). | |||
| - The Printer object's "uri-security-supported" attribute | ||||
| identifies the communication channel security protocols that may | ||||
| or may not have been configured for the various Printer object | ||||
| URIs (e.g., 'tls' or 'none'). | ||||
| - The Printer object's "uri-authentication-supported" attribute | ||||
| identifies the authentication mechanisms that may or may not | ||||
| have been configured for the various Printer object URIs (e.g., | ||||
| 'digest' or 'none'). | ||||
| - Each Job object is identified with a Job URI. The Job's "job- | ||||
| uri" attribute contains the URI. | ||||
| - Each Job object is also identified with Job ID which is a 32- | ||||
| bit, positive integer. The Job's "job-id" attribute contains | ||||
| the Job ID. The Job ID is only unique within the context of the | ||||
| Printer object which created the Job object. | ||||
| - Each Job object has a "job-printer-uri" attribute which contains | o The Printer's "uri-security-supported" attribute identifies the | |||
| the URI of the Printer object that was used to create the Job | communication channel security protocols that have been configured | |||
| object. This attribute is used to determine the Printer object | for the various Printer URIs (e.g., 'tls' or 'none'). | |||
| that created a Job object when given only the URI for the Job | ||||
| object. This linkage is necessary to determine the languages, | ||||
| charsets, and operations which are supported on that Job (the | ||||
| basis for such support comes from the creating Printer object). | ||||
| - Each Printer object has a name (which is not necessarily | ||||
| unique). The administrator chooses and sets this name through | ||||
| some mechanism outside the scope of this IPP/1.1 document. The | ||||
| Printer object's "printer-name" attribute contains the name. | ||||
| - Each Job object has a name (which is not necessarily unique). | ||||
| The client optionally supplies this name in the create request. | ||||
| If the client does not supply this name, the Printer object | ||||
| generates a name for the Job object. The Job object's "job-name" | ||||
| attribute contains the name. | ||||
| 3. IPP Operations | o The Printer's "uri-authentication-supported" attribute identifies | |||
| the authentication mechanisms that have been configured for the | ||||
| various Printer URIs (e.g., 'digest', 'none', etc.) | ||||
| o Each Job is identified by a numeric identifier which is a 32-bit, | ||||
| positive integer. The Job's "job-id" attribute contains the Job | ||||
| ID. The Job ID is only unique within the context of the Printer | ||||
| which created the Job. | ||||
| o Each Job is also identified by a URI. The Job's "job-uri" | ||||
| attribute contains the URI, although its use by Clients is | ||||
| DEPRECATED. | ||||
| o Each Job has a "job-printer-uri" attribute which contains the URI | ||||
| of the Printer that was used to create the Job. This attribute is | ||||
| used to determine the Printer that created a Job when given only | ||||
| the URI for the Job. This linkage is necessary to determine the | ||||
| languages, charsets, and operations which are supported on that | ||||
| Job (the basis for such support comes from the creating Printer). | ||||
| o Each Printer has a name which is not necessarily unique. The | ||||
| Adminstrator chooses and sets this name through some mechanism | ||||
| outside the scope of this IPP/1.1 document. The Printer's | ||||
| "printer-name" attribute contains the name. | ||||
| o Each Job has a name which is not necessarily unique. The Client | ||||
| optionally supplies this name in the Job Creation request. If the | ||||
| Client does not supply this name, the Printer generates a name for | ||||
| the Job. The Job's "job-name" attribute contains the name. | ||||
| 4. IPP Operations | ||||
| IPP objects support operations. An operation consists of a request | IPP objects support operations. An operation consists of a request | |||
| and a response. When a client communicates with an IPP object, the | and a response. When a Client communicates with a Printer, the | |||
| client issues an operation request to the URI for that object. | Client issues an operation request to the Printer URI and object's | |||
| Operation requests and responses have parameters that identify the | numeric identifier, if needed. Operation requests and responses have | |||
| operation. Operations also have attributes that affect the run-time | parameters that identify the operation. Operations also have | |||
| characteristics of the operation (the intended target, localization | attributes that affect the run-time characteristics of the operation | |||
| information, etc.). These operation-specific attributes are called | (the intended target, localization information, etc.). These | |||
| operation attributes (as compared to object attributes such as | operation-specific attributes are called operation attributes (as | |||
| Printer object attributes or Job object attributes). Each request | compared to object attributes such as Printer attributes or Job | |||
| carries along with it any operation attributes, object attributes, | attributes). Each request carries along with it any operation | |||
| and/or document data required to perform the operation. Each request | attributes, object attributes, and/or Document data required to | |||
| requires a response from the object. Each response indicates success | perform the operation. Each request requires a response from the | |||
| or failure of the operation with a status code as a response | object. Each response indicates success or failure of the operation | |||
| parameter. The response contains any operation attributes, object | with a status code as a response parameter. The response contains | |||
| attributes, and/or status messages generated during the execution of | any operation attributes, object attributes, and/or status messages | |||
| the operation request. | generated during the execution of the operation request. | |||
| This section describes the semantics of the IPP operations, both | This section describes the semantics of the IPP operations, both | |||
| requests and responses, in terms of the parameters, attributes, and | requests and responses, in terms of the parameters, attributes, and | |||
| other data associated with each operation. | other data associated with each operation. | |||
| The IPP/1.1 Printer operations are: | The Printer operations defined in this document are: | |||
| Print-Job (section 3.2.1) | Print-Job (Section 4.2.1) | |||
| Print-URI (section 3.2.2) | ||||
| Validate-Job (section 3.2.3) | ||||
| Create-Job (section 3.2.4) | ||||
| Get-Printer-Attributes (section 3.2.5) | ||||
| Get-Jobs (section 3.2.6) | ||||
| Pause-Printer (section 3.3.5) | ||||
| Resume-Printer (section 3.3.6) | ||||
| Purge-Jobs (section 3.3.7) | ||||
| The Job operations are: | Print-URI (Section 4.2.2) | |||
| Send-Document (section 3.3.1) | Validate-Job (Section 4.2.3) | |||
| Send-URI (section 3.3.2) | ||||
| Cancel-Job (section 3.3.3) | ||||
| Get-Job-Attributes (section 3.3.4) | ||||
| Hold-Job (section 3.3.5) | ||||
| Release-Job (section 3.3.6) | ||||
| Restart-Job (section 3.3.7) | ||||
| The Send-Document and Send-URI Job operations are used to add a new | Create-Job (Section 4.2.4) | |||
| document to an existing multi-document Job object created using the | ||||
| Create-Job operation. | ||||
| 3.1 Common Semantics | Get-Printer-Attributes (Section 4.2.5) | |||
| Get-Jobs (Section 4.2.6) | ||||
| Pause-Printer (Section 4.3.5) | ||||
| Resume-Printer (Section 4.3.6) | ||||
| Purge-Jobs (Section 4.2.9) | ||||
| The Job operations defined in this document are: | ||||
| Send-Document (Section 4.3.1) | ||||
| Send-URI (Section 4.3.2) | ||||
| Cancel-Job (Section 4.3.3) | ||||
| Get-Job-Attributes (Section 4.3.4) | ||||
| Hold-Job (Section 4.3.5) | ||||
| Release-Job (Section 4.3.6) | ||||
| Restart-Job (Section 4.3.7) | ||||
| The Send-Document and Send-URI Job operations are used to add | ||||
| Documents to an existing Job created using the Create-Job operation. | ||||
| 4.1. Common Semantics | ||||
| All IPP operations require some common parameters and operation | All IPP operations require some common parameters and operation | |||
| attributes. These common elements and their semantic characteristics | attributes. These common elements and their semantic characteristics | |||
| are defined and described in more detail in the following sections. | are defined and described in more detail in the following sections. | |||
| 3.1.1 Required Parameters | 4.1.1. Required Parameters | |||
| Every operation request contains the following REQUIRED parameters: | Every operation request contains the following REQUIRED parameters: | |||
| - a "version-number", | o a "version-number", | |||
| - an "operation-id", | ||||
| - a "request-id", and | o an "operation-id", | |||
| - the attributes that are REQUIRED for that type of request. | ||||
| o a "request-id", and | ||||
| o the attributes that are REQUIRED for that type of request. | ||||
| Every operation response contains the following REQUIRED parameters: | Every operation response contains the following REQUIRED parameters: | |||
| - a "version-number", | o a "version-number", | |||
| - a "status-code", | ||||
| - the "request-id" that was supplied in the corresponding request, | ||||
| and | ||||
| - the attributes that are REQUIRED for that type of response. | ||||
| The "Encoding and Transport" document [RFC2910] defines special rules | o a "status-code", | |||
| for the encoding of these parameters. All other operation elements | ||||
| are represented using the more generic encoding rules for attributes | ||||
| and groups of attributes. | ||||
| 3.1.2 Operation IDs and Request IDs | o the "request-id" that was supplied in the corresponding request, | |||
| and | ||||
| o the attributes that are REQUIRED for that type of response. | ||||
| The "Encoding and Transport" document [RFC2910bis] defines special | ||||
| rules for the encoding of these parameters. All other operation | ||||
| elements are represented using the more generic encoding rules for | ||||
| attributes and groups of attributes. | ||||
| 4.1.2. Operation IDs and Request IDs | ||||
| Each IPP operation request includes an identifying "operation-id" | Each IPP operation request includes an identifying "operation-id" | |||
| value. Valid values are defined in the "operations-supported" | value. Valid values are defined in the "operations-supported" | |||
| Printer attribute section (see section 4.4.15). The client specifies | Printer attribute section (see Section 5.4.15). The Client specifies | |||
| which operation is being requested by supplying the correct | which operation is being requested by supplying the correct | |||
| "operation-id" value. | "operation-id" value. | |||
| In addition, every invocation of an operation is identified by a | In addition, every invocation of an operation is identified by a | |||
| "request-id" value. For each request, the client chooses the | "request-id" value. For each request, the Client chooses the | |||
| "request-id" which MUST be an integer (possibly unique depending on | "request-id" which MUST be an integer (possibly unique depending on | |||
| client requirements) in the range from 1 to 2**31 - 1 (inclusive). | Client requirements) in the range from 1 to 2**31 - 1 (inclusive). | |||
| This "request-id" allows clients to manage multiple outstanding | This "request-id" allows Clients to manage multiple outstanding | |||
| requests. The receiving IPP object copies all 32-bits of the client- | requests. The receiving IPP object copies all 32-bits of the Client- | |||
| supplied "request-id" attribute into the response so that the client | supplied "request-id" attribute into the response so that the Client | |||
| can match the response with the correct outstanding request, even if | can match the response with the correct outstanding request, even if | |||
| the "request-id" is out of range. If the request is terminated | the "request-id" is out of range. If the request is terminated | |||
| before the complete "request-id" is received, the IPP object rejects | before the complete "request-id" is received, the IPP object rejects | |||
| the request and returns a response with a "request-id" of 0. | the request and returns a response with a "request-id" of 0. | |||
| Note: In some cases, the transport protocol underneath IPP might be a | Note: In some cases, the transport protocol underneath IPP might be a | |||
| connection oriented protocol that would make it impossible for a | connection oriented protocol that would make it impossible for a | |||
| client to receive responses in any order other than the order in | Client to receive responses in any order other than the order in | |||
| which the corresponding requests were sent. In such cases, the | which the corresponding requests were sent. In such cases, the | |||
| "request-id" attribute would not be essential for correct protocol | "request-id" attribute would not be essential for correct protocol | |||
| operation. However, in other mappings, the operation responses can | operation. However, in other transport mappings the operation | |||
| come back in any order. In these cases, the "request-id" would be | responses could come back in any order so the "request-id" is | |||
| essential. | essential. | |||
| 3.1.3 Attributes | 4.1.3. Attributes | |||
| Operation requests and responses are both composed of groups of | Operation requests and responses are both composed of groups of | |||
| attributes and/or document data. The attributes groups are: | attributes and/or Document data. The attributes groups are: | |||
| - Operation Attributes: These attributes are passed in the | o Operation Attributes: These attributes are passed in the operation | |||
| operation and affect the IPP object's behavior while processing | and affect the IPP object's behavior while processing the | |||
| the operation request and may affect other attributes or groups | operation request and Clients affect other attributes or groups of | |||
| of attributes. Some operation attributes describe the document | attributes. Some operation attributes describe the Document data | |||
| data associated with the print job and are associated with new | associated with the print Job and are associated with new Job | |||
| Job objects, however most operation attributes do not persist | objects, however most operation attributes do not persist beyond | |||
| beyond the life of the operation. The description of each | the life of the operation. The description of each operation | |||
| operation attribute includes conformance statements indicating | attribute includes conformance statements indicating which | |||
| which operation attributes are REQUIRED and which are OPTIONAL | operation attributes are REQUIRED and which are OPTIONAL for an | |||
| for an IPP object to support and which attributes a client MUST | IPP object to support and which attributes a Client MUST supply in | |||
| supply in a request and an IPP object MUST supply in a response. | a request and an IPP object MUST supply in a response. | |||
| - Job Template Attributes: These attributes affect the processing | ||||
| of a job. A client OPTIONALLY supplies Job Template Attributes | o Job Template Attributes: These attributes affect the processing of | |||
| in a create request, and the receiving object MUST be prepared | a Job. A Client MAY supply Job Template Attributes in a Job | |||
| to receive all supported attributes. The Job object can later | Creation request, and the receiving object MUST be prepared to | |||
| be queried to find out what Job Template attributes were | receive all supported attributes. The Job object can later be | |||
| originally requested in the create request, and such attributes | queried to find out what Job Template attributes were originally | |||
| are returned in the response as Job Object Attributes. The | requested in the Job Creation request, and such attributes are | |||
| Printer object can be queried about its Job Template attributes | returned in the response as Job Object Attributes. The Printer | |||
| to find out what type of job processing capabilities are | object can be queried about its Job Template attributes to find | |||
| supported and/or what the default job processing behaviors are, | out what type of Job processing capabilities are supported and/or | |||
| though such attributes are returned in the response as Printer | what the default Job processing behaviors are, though such | |||
| Object Attributes. The "ipp-attribute-fidelity" operation | attributes are returned in the response as Printer Object | |||
| attribute affects processing of all client-supplied Job Template | Attributes. The "ipp-attribute-fidelity" operation attribute | |||
| attributes (see sections 3.2.1.2 and 15 for a full description | affects processing of all Client-supplied Job Template attributes | |||
| of "ipp-attribute-fidelity" and its relationship to other | - see Sections 4.2.1.2 and C for a full description of "ipp- | |||
| attributes). | attribute-fidelity" and its relationship to other attributes. | |||
| - Job Object Attributes: These attributes are returned in response | ||||
| to a query operation directed at a Job object. | o Job Object Attributes: These attributes are returned in response | |||
| - Printer Object Attributes: These attributes are returned in | to a query operation directed at a Job object. | |||
| response to a query operation directed at a Printer object. | ||||
| - Unsupported Attributes: In a create request, the client supplies | o Printer Object Attributes: These attributes are returned in | |||
| a set of Operation and Job Template attributes. If any of these | response to a query operation directed at a Printer object. | |||
| attributes or their values is unsupported by the Printer object, | ||||
| the Printer object returns the set of unsupported attributes in | o Unsupported Attributes: In a Job Creation request, the Client | |||
| the response. Sections 3.1.7, 3.2.1.2, and 15 give a full | supplies a set of Operation and Job Template attributes. If any | |||
| description of how Job Template attributes supplied by the | of these attributes or their values is unsupported by the Printer | |||
| client in a create request are processed by the Printer object | object, the Printer object SHOULD return the set of unsupported | |||
| and how unsupported attributes are returned to the client. | attributes in the response. Sections 4.1.7, 4.2.1.2, and C give a | |||
| Because of extensibility, any IPP object might receive a request | full description of how Job Template attributes supplied by the | |||
| that contains new or unknown attributes or values for which it | Client in a Job Creation request are processed by the Printer | |||
| has no support. In such cases, the IPP object processes what it | object and how unsupported attributes are returned to the Client. | |||
| can and returns the unsupported attributes in the response. The | Because of extensibility, any IPP object might receive a request | |||
| Unsupported Attribute group is defined for all operation | that contains new or unknown attributes or values for which it has | |||
| responses for returning unsupported attributes that the client | no support. In such cases, the IPP object processes what it can | |||
| supplied in the request. | and returns the unsupported attributes in the response. The | |||
| Unsupported Attribute group is defined for all operation responses | ||||
| for returning unsupported attributes that the Client supplied in | ||||
| the request. | ||||
| Later in this section, each operation is formally defined by | Later in this section, each operation is formally defined by | |||
| identifying the allowed and expected groups of attributes for each | identifying the allowed and expected groups of attributes for each | |||
| request and response. The model identifies a specific order for each | request and response. The model identifies a specific order for each | |||
| group in each request or response, but the attributes within each | group in each request or response, but the attributes within each | |||
| group may be in any order, unless specified otherwise. | group can be in any order, unless specified otherwise. | |||
| The attributes within a group MUST be unique; if an attribute with | The attributes within a group MUST be unique; if an attribute with | |||
| the same name occurs more than once, the group is mal-formed. | the same name occurs more than once, the group is malformed. Clients | |||
| Clients MUST NOT submit such malformed requests and Printers MUST NOT | MUST NOT submit such malformed requests and Printers MUST NOT return | |||
| return such malformed responses. If such a malformed request is | such malformed responses. If such a malformed request is submitted | |||
| submitted to a Printer, the Printer MUST either (1) reject the | to a Printer, the Printer MUST either (1) reject the request with the | |||
| request with the 'client-error-bad-request' status code (see section | 'client-error-bad-request' status code (RECOMMENDED - see | |||
| 13.1.4.1) or (2) process the request normally after selecting only | Appendix B.1.4.1) or (2) process the request normally after selecting | |||
| one of the attribute instances, depending on implementation. Which | only one of the attribute instances, depending on implementation. | |||
| attribute is selected when there are duplicate attributes depends on | Which attribute is selected when there are duplicate attributes | |||
| implementation. The IPP Printer MUST NOT use the values from more | depends on implementation. The IPP Printer MUST NOT use the values | |||
| than one such duplicate attribute instance. | from more than one such duplicate attribute instance. | |||
| Each attribute definition includes the attribute's name followed by | Each attribute definition includes the attribute's name followed by | |||
| the name of its attribute syntax(es) in parenthesizes. In addition, | the name of its attribute syntax(es) in parenthesizes. In addition, | |||
| each 'integer' attribute is followed by the allowed range in | each 'integer' attribute can be followed by the allowed range in | |||
| parentheses, (m:n), for values of that attribute. Each 'text' or | parentheses, (m:n), for values of that attribute. Each 'text' or | |||
| 'name' attribute is followed by the maximum size in octets in | 'name' attribute can be followed by the maximum size in octets in | |||
| parentheses, (size), for values of that attribute. For more details | parentheses, (size), for values of that attribute. For more details | |||
| on attribute syntax notation, see the descriptions of these | on attribute syntax notation, see the descriptions of these | |||
| attributes syntaxes in section 4.1. | attributes syntaxes in Section 5.1. | |||
| Note: Document data included in the operation is not strictly an | Note: Document data included in the operation is not strictly an | |||
| attribute, but it is treated as a special attribute group for | attribute, but it is treated as a special attribute group for | |||
| ordering purposes. The only operations that support supplying the | ordering purposes. The only operations defined in this document that | |||
| document data within an operation request are Print-Job and Send- | support supplying the Document data within an operation request are | |||
| Document. There are no operation responses that include document | Print-Job and Send-Document. There are no operations defined in this | |||
| data. | document whose responses include Document data. | |||
| Some operations are REQUIRED for IPP objects to support; the others | Some operations are REQUIRED for IPP objects to support; the others | |||
| are OPTIONAL (see section 5.2.2). Therefore, before using an | are OPTIONAL (see Section 6.2.2). Therefore, before using an | |||
| OPTIONAL operation, a client SHOULD first use the REQUIRED Get- | OPTIONAL operation, a Client SHOULD first use the REQUIRED Get- | |||
| Printer-Attributes operation to query the Printer's "operations- | Printer-Attributes operation to query the Printer's "operations- | |||
| supported" attribute in order to determine which OPTIONAL Printer and | supported" attribute in order to determine which OPTIONAL operations | |||
| Job operations are actually supported. The client SHOULD NOT use an | are actually supported. The Client SHOULD NOT use an OPTIONAL | |||
| OPTIONAL operation that is not supported. When an IPP object | operation that is not supported. When an IPP object receives a | |||
| receives a request to perform an operation it does not support, it | request to perform an operation it does not support, it MUST return | |||
| returns the 'server-error-operation-not-supported' status code (see | the 'server-error-operation-not-supported' status code (see | |||
| section 13.1.5.2). An IPP object is non-conformant if it does not | Appendix B.1.5.2). An IPP object is non-conformant if it does not | |||
| support a REQUIRED operation. | support a REQUIRED operation. | |||
| 3.1.4 Character Set and Natural Language Operation Attributes | 4.1.4. Character Set and Natural Language Operation Attributes | |||
| Some Job and Printer attributes have values that are text strings and | Some Job and Printer attributes have values that are text strings and | |||
| names intended for human understanding rather than machine | names intended for human understanding rather than machine | |||
| understanding (see the 'text' and 'name' attribute syntax | understanding (see the 'text' and 'name' attribute syntax | |||
| descriptions in section 4.1). The following sections describe two | descriptions in Section 5.1). The following sections describe two | |||
| special Operation Attributes called "attributes-charset" and | special operation attributes called "attributes-charset" and | |||
| "attributes-natural-language". These attributes are always part of | "attributes-natural-language" whose values are used when interpreting | |||
| the Operation Attributes group. For most attribute groups, the order | other attributes using the 'text' and 'name' attribute syntaxes. For | |||
| of the attributes within the group is not important. However, for | Job Creation operations, the IPP Printer implementation also saves | |||
| these two attributes within the Operation Attributes group, the order | these two attributes with the new Job object as Job Status | |||
| is critical. The "attributes-charset" attribute MUST be the first | attributes. | |||
| attribute in the group and the "attributes-natural-language" | ||||
| attribute MUST be the second attribute in the group. In other words, | ||||
| these attributes MUST be supplied in every IPP request and response, | ||||
| they MUST come first in the group, and MUST come in the specified | ||||
| order. For job creation operations, the IPP Printer implementation | ||||
| saves these two attributes with the new Job object as Job Description | ||||
| attributes. For the sake of brevity in this document, these | ||||
| operation attribute descriptions are not repeated with every | ||||
| operation request and response, but have a reference back to this | ||||
| section instead. | ||||
| 3.1.4.1 Request Operation Attributes | The "attributes-charset" and "attributes-natural-language" attributes | |||
| MUST be the first two attributes in every IPP request and response, | ||||
| as part of the initial operation attributes group of the IPP message. | ||||
| The "attributes-charset" attribute MUST be the first attribute in the | ||||
| group and the "attributes-natural-language" attribute MUST be the | ||||
| second attribute in the group. | ||||
| The client MUST supply and the Printer object MUST support the | For the sake of brevity in this document, these operation attribute | |||
| following REQUIRED operation attributes in every IPP/1.1 operation | descriptions are not repeated with every operation request and | |||
| response, but have a reference back to this section instead. | ||||
| 4.1.4.1. Request Operation Attributes | ||||
| The Client MUST supply and the Printer object MUST support the | ||||
| following REQUIRED operation attributes in every IPP operation | ||||
| request: | request: | |||
| "attributes-charset" (charset): | "attributes-charset" (charset): | |||
| This operation attribute identifies the charset (coded | ||||
| character set and encoding method) used by any 'text' and | ||||
| 'name' attributes that the client is supplying in this request. | ||||
| It also identifies the charset that the Printer object MUST use | ||||
| (if supported) for all 'text' and 'name' attributes and status | ||||
| messages that the Printer object returns in the response to | ||||
| this request. See Sections 4.1.1 and 4.1.2 for the definition | ||||
| of the 'text' and 'name' attribute syntaxes. | ||||
| All clients and IPP objects MUST support the 'utf-8' charset | This operation attribute identifies the charset (coded character set | |||
| [RFC2279] and MAY support additional charsets provided that | and encoding method) used by any 'text' and 'name' attributes that | |||
| they are registered with IANA [IANA-CS]. If the Printer object | the Client is supplying in this request. It also identifies the | |||
| does not support the client supplied charset value, the Printer | charset that the Printer object MUST use (if supported) for all | |||
| object MUST reject the request, set the "attributes-charset" to | 'text' and 'name' attributes and status messages that the Printer | |||
| 'utf-8' in the response, and return the 'client-error-charset- | object returns in the response to this request. See Sections 5.1.2 | |||
| not-supported' status code and any 'text' or 'name' attributes | and 5.1.3 for the definition of the 'text' and 'name' attribute | |||
| using the 'utf-8' charset. The Printer NEED NOT return any | syntaxes. | |||
| attributes in the Unsupported Attributes Group (See sections | ||||
| 3.1.7 and 3.2.1.2). The Printer object MUST indicate the | ||||
| charset(s) supported as the values of the "charset-supported" | ||||
| Printer attribute (see Section 4.4.18), so that the client can | ||||
| query to determine which charset(s) are supported. | ||||
| Note to client implementers: Since IPP objects are only | All Clients and IPP objects MUST support the 'utf-8' charset | |||
| required to support the 'utf-8' charset, in order to maximize | [RFC3629] and MAY support additional charsets provided that they are | |||
| interoperability with multiple IPP object implementations, a | registered with IANA [IANA-CS]. If the Printer object does not | |||
| client may want to supply 'utf-8' in the "attributes-charset" | support the Client supplied charset value, the Printer object MUST | |||
| operation attribute, even though the client is only passing and | reject the request, set the "attributes-charset" to 'utf-8' in the | |||
| able to present a simpler charset, such as US-ASCII [ASCII] or | response, and return the 'client-error-charset-not-supported' status | |||
| ISO-8859-1 [ISO8859-1]. Then the client will have to filter | code and any 'text' or 'name' attributes using the 'utf-8' charset. | |||
| out (or charset convert) those characters that are returned in | The Printer MAY return any attributes in the Unsupported Attributes | |||
| the response that it cannot present to its user. On the other | group (see Sections 4.1.7 and 4.2.1.2). The Printer object MUST | |||
| hand, if both the client and the IPP objects also support a | indicate the charset(s) supported as the values of the "charset- | |||
| charset in common besides utf-8, the client may want to use | supported" Printer attribute (see Section 5.4.18), so that the Client | |||
| that charset in order to avoid charset conversion or data loss. | can query to determine which charset(s) are supported. | |||
| See the 'charset' attribute syntax description in Section 4.1.7 | Note to Client implementers: Since IPP objects are only required to | |||
| for the syntax and semantic interpretation of the values of | support the 'utf-8' charset, in order to maximize interoperability | |||
| this attribute and for example values. | with multiple IPP object implementations, a Client SHOULD supply | |||
| 'utf-8' in the "attributes-charset" operation attribute, even though | ||||
| the Client is only passing and able to present a simpler charset, | ||||
| such as US-ASCII [ASCII] or ISO-8859-1 [ISO8859-1]. Then the Client | ||||
| will have to filter out (or charset convert) those characters that | ||||
| are returned in the response that it cannot present to its user. On | ||||
| the other hand, if both the Client and the IPP objects also support a | ||||
| charset in common besides 'utf-8', the Client can use that charset in | ||||
| order to avoid charset conversion or data loss. | ||||
| "attributes-natural-language" (naturalLanguage): | See the 'charset' attribute syntax description in Section 5.1.8 for | |||
| This operation attribute identifies the natural language used | the syntax and semantic interpretation of the values of this | |||
| by any 'text' and 'name' attributes that the client is | attribute and for example values. | |||
| supplying in this request. This attribute also identifies the | ||||
| natural language that the Printer object SHOULD use for all | ||||
| 'text' and 'name' attributes and status messages that the | ||||
| Printer object returns in the response to this request. See | ||||
| the 'naturalLanguage' attribute syntax description in section | ||||
| 4.1.8 for the syntax and semantic interpretation of the values | ||||
| of this attribute and for example values. | ||||
| There are no REQUIRED natural languages required for the | "attributes-natural-language" (naturalLanguage): | |||
| Printer object to support. However, the Printer object's | ||||
| "generated-natural-language-supported" attribute identifies the | ||||
| natural languages supported by the Printer object and any | ||||
| contained Job objects for all text strings generated by the IPP | ||||
| object. A client MAY query this attribute to determine which | ||||
| natural language(s) are supported for generated messages. | ||||
| For any of the attributes for which the Printer object | This operation attribute identifies the natural language used by any | |||
| generates text, i.e., for the "job-state-message", "printer- | 'text' and 'name' attributes that the Client is supplying in this | |||
| state-message", and status messages (see Section 3.1.6), the | request. This attribute also identifies the natural language that | |||
| Printer object MUST be able to generate these text strings in | the Printer object SHOULD use for all 'text' and 'name' attributes | |||
| any of its supported natural languages. If the client requests | and status messages that the Printer object returns in the response | |||
| a natural language that is not supported, the Printer object | to this request. See the 'naturalLanguage' attribute syntax | |||
| MUST return these generated messages in the Printer's | description in Section 5.1.9 for the syntax and semantic | |||
| configured natural language as specified by the Printer's | interpretation of the values of this attribute and for example | |||
| "natural-language-configured" attribute" (see Section 4.4.19). | values. | |||
| For other 'text' and 'name' attributes supplied by the client, | There are no REQUIRED natural languages required for the Printer | |||
| authentication system, operator, system administrator, or | object to support. However, the Printer's "generated-natural- | |||
| manufacturer (i.e., for "job-originating-user-name", "printer- | language-supported" attribute identifies the natural languages | |||
| name" (name), "printer-location" (text), "printer-info" (text), | supported by the Printer object and any contained Jobs for all text | |||
| and "printer-make-and-model" (text)), the Printer object is | strings generated by the IPP object. A Client MAY query this | |||
| only required to support the configured natural language of the | attribute to determine which natural language(s) are supported for | |||
| Printer identified by the Printer object's "natural-language- | generated messages. | |||
| configured" attribute, though support of additional natural | ||||
| languages for these attributes is permitted. | ||||
| For any 'text' or 'name' attribute in the request that is in a | For any of the attributes for which the Printer object generates | |||
| different natural language than the value supplied in the | text, i.e., for the "job-state-message", "printer-state-message", and | |||
| "attributes-natural-language" operation attribute, the client | status messages (see Section 4.1.6), the Printer object MUST be able | |||
| MUST use the Natural Language Override mechanism (see sections | to generate these text strings in any of its supported natural | |||
| 4.1.1.2 and 4.1.2.2) for each such attribute value supplied. | languages. If the Client requests a natural language that is not | |||
| The client MAY use the Natural Language Override mechanism | supported, the Printer object MUST return these generated messages in | |||
| redundantly, i.e., use it even when the value is in the same | the Printer's configured natural language as specified by the | |||
| natural language as the value supplied in the "attributes- | Printer's "natural-language-configured" attribute" (see | |||
| natural-language" operation attribute of the request. | Section 5.4.19). | |||
| The IPP object MUST accept any natural language and any Natural | For other 'text' and 'name' attributes supplied by the Client, | |||
| Language Override, whether the IPP object supports that natural | authentication system, Operator, Adminstrator, or manufacturer (i.e., | |||
| language or not (and independent of the value of the "ipp- | for "job-originating-user-name", "printer-name" (name), "printer- | |||
| attribute-fidelity" Operation attribute). That is the IPP | location" (text), "printer-info" (text), and "printer-make-and-model" | |||
| object accepts all client supplied values no matter what the | (text)), the Printer object is only required to support the | |||
| values are in the Printer object's "generated-natural- | configured natural language of the Printer identified by the | |||
| language-supported" attribute. That attribute, "generated- | Printer's "natural-language-configured" attribute, though support of | |||
| natural-language-supported", only applies to generated | additional natural languages for these attributes is permitted. | |||
| messages, not client supplied messages. The IPP object MUST | ||||
| remember that natural language for all client-supplied | ||||
| attributes, and when returning those attributes in response to | ||||
| a query, the IPP object MUST indicate that natural language. | ||||
| Each value whose attribute syntax type is 'text' or 'name' (see | For any 'text' or 'name' attribute in the request that is in a | |||
| sections 4.1.1 and 4.1.2) has an Associated Natural-Language. | different natural language than the value supplied in the | |||
| This document does not specify how this association is stored | "attributes-natural-language" operation attribute, the Client MUST | |||
| in a Printer or Job object. When such a value is encoded in a | use the Natural Language Override mechanism (see Sections 5.1.2.2 and | |||
| request or response, the natural language is either implicit or | 5.1.3.2) for each such attribute value supplied. The Client MAY use | |||
| explicit: | the Natural Language Override mechanism redundantly, i.e., use it | |||
| even when the value is in the same natural language as the value | ||||
| supplied in the "attributes-natural-language" operation attribute of | ||||
| the request. | ||||
| - In the implicit case, the value contains only the text/name | The IPP object MUST accept any natural language and any Natural | |||
| value, and the language is specified by the "attributes- | Language Override, whether the IPP object supports that natural | |||
| natural-language" operation attribute in the request or | language or not (and independent of the value of the "ipp-attribute- | |||
| response (see sections 4.1.1.1 textWithoutLanguage and | fidelity" operation attribute). That is, the IPP object accepts all | |||
| 4.1.2.1 nameWithoutLanguage). | Client supplied values no matter what the values are in the Printer's | |||
| "generated-natural-language-supported" attribute. That attribute, | ||||
| "generated-natural-language-supported", only applies to generated | ||||
| messages, not Client supplied messages. The IPP object MUST remember | ||||
| that natural language for all Client-supplied attributes, and when | ||||
| returning those attributes in response to a query, the IPP object | ||||
| MUST indicate that natural language. | ||||
| - In the explicit case (also known as the Natural-Language | Each value whose attribute syntax type is 'text' or 'name' (see | |||
| Override case), the value contains both the language and the | Sections 5.1.2 and 5.1.3) has an Associated Natural-Language. This | |||
| text/name value (see sections 4.1.1.2 textWithLanguage and | document does not specify how this association is stored in a Printer | |||
| 4.1.2.2 nameWithLanguage). | or Job object. When such a value is encoded in a request or | |||
| response, the natural language is either implicit or explicit: | ||||
| For example, the "job-name" attribute MAY be supplied by the | * In the implicit case, the value contains only the text/name value, | |||
| client in a create request. The text value for this attribute | and the language is specified by the "attributes-natural-language" | |||
| will be in the natural language identified by the "attribute- | operation attribute in the request or response (see Sections 5.1.2.1 | |||
| natural-language" attribute, or if different, as identified by | and 5.1.3.1). | |||
| the Natural Language Override mechanism. If supplied, the IPP | ||||
| object will use the value of the "job-name" attribute to | ||||
| populate the Job object's "job-name" attribute. Whenever any | ||||
| client queries the Job object's "job-name" attribute, the IPP | ||||
| object returns the attribute as stored and uses the Natural | ||||
| Language Override mechanism to specify the natural language, if | ||||
| it is different from that reported in the "attributes-natural- | ||||
| language" operation attribute of the response. The IPP object | ||||
| MAY use the Natural Language Override mechanism redundantly, | ||||
| i.e., use it even when the value is in the same natural | ||||
| language as the value supplied in the "attributes-natural- | ||||
| language" operation attribute of the response. | ||||
| An IPP object MUST NOT reject a request based on a supplied | * In the explicit case (also known as the Natural-Language Override | |||
| natural language in an "attributes-natural-language" Operation | case), the value contains both the language and the text/name value | |||
| attribute or in any attribute that uses the Natural Language | (see Sections 5.1.2.2 and 5.1.3.2). | |||
| Override. | ||||
| For example, the "job-name" attribute MAY be supplied by the Client | ||||
| in a Job Creation request. The text value for this attribute will be | ||||
| in the natural language identified by the "attribute-natural- | ||||
| language" attribute, or if different, as identified by the Natural | ||||
| Language Override mechanism. If supplied, the IPP object will use | ||||
| the value of the "job-name" attribute to populate the Job's "job- | ||||
| name" attribute. Whenever any Client queries the Job's "job-name" | ||||
| attribute, the IPP object returns the attribute as stored and uses | ||||
| the Natural Language Override mechanism to specify the natural | ||||
| language, if it is different from that reported in the "attributes- | ||||
| natural-language" operation attribute of the response. The IPP | ||||
| object MAY use the Natural Language Override mechanism redundantly, | ||||
| i.e., use it even when the value is in the same natural language as | ||||
| the value supplied in the "attributes-natural-language" operation | ||||
| attribute of the response. | ||||
| An IPP object MUST NOT reject a request based on a supplied natural | ||||
| language in an "attributes-natural-language" operation attribute or | ||||
| in any attribute that uses the Natural Language Override. | ||||
| Clients SHOULD NOT supply 'text' or 'name' attributes that use an | Clients SHOULD NOT supply 'text' or 'name' attributes that use an | |||
| illegal combination of natural language and charset. For example, | illegal combination of natural language and charset. For example, | |||
| suppose a Printer object supports charsets 'utf-8', 'iso-8859-1', and | suppose a Printer object supports charsets 'utf-8', 'iso-8859-1', and | |||
| 'iso-8859-7'. Suppose also, that it supports natural languages 'en' | 'iso-8859-7'. Suppose also, that it supports natural languages 'en' | |||
| (English), 'fr' (French), and 'el' (Greek). Although the Printer | (English), 'fr' (French), and 'el' (Greek). Although the Printer | |||
| object supports the charset 'iso-8859-1' and natural language 'el', | object supports the charset 'iso-8859-1' and natural language 'el', | |||
| it probably does not support the combination of Greek text strings | it probably does not support the combination of Greek text strings | |||
| using the 'iso-8859-1' charset. The Printer object handles this | using the 'iso-8859-1' charset. The Printer object handles this | |||
| apparent incompatibility differently depending on the context in | apparent incompatibility differently depending on the context in | |||
| which it occurs: | which it occurs: | |||
| - In a create request: If the client supplies a text or name | o In a Job Creation request: If the Client supplies a text or name | |||
| attribute (for example, the "job-name" operation attribute) that | attribute (for example, the "job-name" operation attribute) that | |||
| uses an apparently incompatible combination, it is a client | uses an apparently incompatible combination, it is a Client choice | |||
| choice that does not affect the Printer object or its correct | that does not affect the Printer object or its correct operation. | |||
| operation. Therefore, the Printer object simply accepts the | Therefore, the Printer object simply accepts the Client supplied | |||
| client supplied value, stores it with the Job object, and | value, stores it with the Job object, and responds back with the | |||
| responds back with the same combination whenever the client (or | same combination whenever the Client (or any client) queries for | |||
| any client) queries for that attribute. | that attribute. | |||
| - In a query-type operation, like Get-Printer-Attributes: If the | ||||
| client requests an apparently incompatible combination, the | o In a query-type operation, like Get-Printer-Attributes: If the | |||
| Printer object responds (as described in section 3.1.4.2) using | Client requests an apparently incompatible combination, the | |||
| the Printer's configured natural language rather than the | Printer object responds (as described in Section 4.1.4.2) using | |||
| natural language requested by the client. | the Printer's configured natural language rather than the natural | |||
| language requested by the Client. | ||||
| In either case, the Printer object does not reject the request | In either case, the Printer object does not reject the request | |||
| because of the apparent incompatibility. The potential incompatible | because of the apparent incompatibility. The potential incompatible | |||
| combination of charset and natural language can occur either at the | combination of charset and natural language can occur either at the | |||
| global operation level or at the Natural Language Override | global operation level or at the Natural Language Override attribute- | |||
| attribute-by-attribute level. In addition, since the response always | by-attribute level. In addition, since the response always includes | |||
| includes explicit charset and natural language information, there is | explicit charset and natural language information, there is never any | |||
| never any question or ambiguity in how the client interprets the | question or ambiguity in how the Client interprets the response. | |||
| response. | ||||
| 3.1.4.2 Response Operation Attributes | 4.1.4.2. Response Operation Attributes | |||
| The Printer object MUST supply and the client MUST support the | The Printer object MUST supply and the Client MUST support the | |||
| following REQUIRED operation attributes in every IPP/1.1 operation | following REQUIRED operation attributes in every IPP/1.1 operation | |||
| response: | response: | |||
| "attributes-charset" (charset): | "attributes-charset" (charset): | |||
| This operation attribute identifies the charset used by any | ||||
| 'text' and 'name' attributes that the Printer object is | ||||
| returning in this response. The value in this response MUST be | ||||
| the same value as the "attributes-charset" operation attribute | ||||
| supplied by the client in the request. If this is not possible | ||||
| (i.e., the charset requested is not supported), the request | ||||
| would have been rejected. See "attributes-charset" described | ||||
| in Section 3.1.4.1 above. | ||||
| If the Printer object supports more than just the 'utf-8' | This operation attribute identifies the charset used by any 'text' | |||
| charset, the Printer object MUST be able to code convert | and 'name' attributes that the Printer object is returning in this | |||
| between each of the charsets supported on a highest fidelity | response. The value in this response MUST be the same value as the | |||
| possible basis in order to return the 'text' and 'name' | "attributes-charset" operation attribute supplied by the Client in | |||
| attributes in the charset requested by the client. However, | the request. If this is not possible (i.e., the charset requested is | |||
| some information loss MAY occur during the charset conversion | not supported), the request would have been rejected. See | |||
| depending on the charsets involved. For example, the Printer | "attributes-charset" described in Section 4.1.4.1 above. | |||
| object may convert from a UTF-8 'a' to a US-ASCII 'a' (with no | ||||
| loss of information), from an ISO Latin 1 CAPITAL LETTER A WITH | ||||
| ACUTE ACCENT to US-ASCII 'A' (losing the accent), or from a | ||||
| UTF-8 Japanese Kanji character to some ISO Latin 1 error | ||||
| character indication such as '?', decimal code equivalent, or | ||||
| to the absence of a character, depending on implementation. | ||||
| Whether an implementation that supports more than one charset | If the Printer object supports more than just the 'utf-8' charset, | |||
| stores the data in the charset supplied by the client or code | the Printer object MUST be able to code convert between each of the | |||
| converts to one of the other supported charsets, depends on | charsets supported on a highest fidelity possible basis in order to | |||
| implementation. The strategy should try to minimize loss of | return the 'text' and 'name' attributes in the charset requested by | |||
| information during code conversion. On each response, such an | the Client. However, some information loss MAY occur during the | |||
| implementation converts from its internal charset to that | charset conversion depending on the charsets involved. For example, | |||
| requested. | the Printer object Clients convert from a UTF-8 'a' to a US-ASCII 'a' | |||
| (with no loss of information), from an ISO Latin 1 CAPITAL LETTER A | ||||
| WITH ACUTE ACCENT to US-ASCII 'A' (losing the accent), or from a | ||||
| UTF-8 Japanese Kanji character to some ISO Latin 1 error character | ||||
| indication such as '?', decimal code equivalent, or to the absence of | ||||
| a character, depending on implementation. | ||||
| "attributes-natural-language" (naturalLanguage): | Whether an implementation that supports more than one charset stores | |||
| This operation attribute identifies the natural language used | the data in the charset supplied by the Client or code converts to | |||
| by any 'text' and 'name' attributes that the IPP object is | one of the other supported charsets, depends on implementation. The | |||
| returning in this response. Unlike the "attributes-charset" | strategy should try to minimize loss of information during code | |||
| operation attribute, the IPP object NEED NOT return the same | conversion. On each response, such an implementation converts from | |||
| value as that supplied by the client in the request. The IPP | its internal charset to that requested. | |||
| object MAY return the natural language of the Job object or the | ||||
| Printer's configured natural language as identified by the | ||||
| Printer object's "natural-language-configured" attribute, | ||||
| rather than the natural language supplied by the client. For | ||||
| any 'text' or 'name' attribute or status message in the | ||||
| response that is in a different natural language than the value | ||||
| returned in the "attributes-natural-language" operation | ||||
| attribute, the IPP object MUST use the Natural Language | ||||
| Override mechanism (see sections 4.1.1.2 and 4.1.2.2) on each | ||||
| attribute value returned. The IPP object MAY use the Natural | ||||
| Language Override mechanism redundantly, i.e., use it even when | ||||
| the value is in the same natural language as the value supplied | ||||
| in the "attributes-natural-language" operation attribute of the | ||||
| response. | ||||
| 3.1.5 Operation Targets | "attributes-natural-language" (naturalLanguage): | |||
| This operation attribute identifies the natural language used by any | ||||
| 'text' and 'name' attributes that the IPP object is returning in this | ||||
| response. Unlike the "attributes-charset" operation attribute, the | ||||
| IPP object MAY return the natural language of the Job object or the | ||||
| Printer's configured natural language as identified by the Printer's | ||||
| "natural-language-configured" attribute, rather than the natural | ||||
| language supplied by the Client. For any 'text' or 'name' attribute | ||||
| or status message in the response that is in a different natural | ||||
| language than the value returned in the "attributes-natural-language" | ||||
| operation attribute, the IPP object MUST use the Natural Language | ||||
| Override mechanism (see Sections 5.1.2.2 and 5.1.3.2) on each | ||||
| attribute value returned. The IPP object MAY use the Natural | ||||
| Language Override mechanism redundantly, i.e., use it even when the | ||||
| value is in the same natural language as the value supplied in the | ||||
| "attributes-natural-language" operation attribute of the response. | ||||
| 4.1.5. Operation Targets | ||||
| All IPP operations are directed at IPP objects. For Printer | All IPP operations are directed at IPP objects. For Printer | |||
| operations, the operation is always directed at a Printer object | operations, the operation is always directed at a Printer object | |||
| using one of its URIs (i.e., one of the values in the Printer | using one of its URIs, i.e., one of the values in the Printer's | |||
| object's "printer-uri-supported" attribute). Even if the Printer | "printer-uri-supported" attribute. Even if the Printer object | |||
| object supports more than one URI, the client supplies only one URI | supports more than one URI, the Client supplies only one URI as the | |||
| as the target of the operation. The client identifies the target | target of the operation. The Client identifies the target object by | |||
| object by supplying the correct URI in the "printer-uri (uri)" | supplying the correct URI in the "printer-uri" operation attribute. | |||
| operation attribute. | ||||
| For Job operations, the operation is directed at either: | For Job operations, the operation is directed at either: | |||
| - The Job object itself using the Job object's URI. In this case, | o The Printer object that created the Job object using the Printer | |||
| the client identifies the target object by supplying the correct | object's URI and the Job's numeric identifier (Job ID). Since the | |||
| URI in the "job-uri (uri)" operation attribute. | Printer object that created the Job object generated the Job ID, | |||
| - The Printer object that created the Job object using both the | it MUST be able to correctly associate the Client supplied Job ID | |||
| Printer objects URI and the Job object's Job ID. Since the | with the correct Job object. The Client supplies the Printer's | |||
| Printer object that created the Job object generated the Job ID, | URI in the "printer-uri" operation attribute and the Job ID in the | |||
| it MUST be able to correctly associate the client supplied Job | "job-id" operation attribute. | |||
| ID with the correct Job object. The client supplies the Printer | ||||
| object's URI in the "printer-uri (uri)" operation attribute and | ||||
| the Job object's Job ID in the "job-id (integer(1:MAX))" | ||||
| operation attribute. | ||||
| If the operation is directed at the Job object directly using the Job | o The Job object itself using the Job's URI. In this case, the | |||
| object's URI, the client MUST NOT include the redundant "job-id" | Client identifies the target object by supplying the correct URI | |||
| in the "job-uri (uri)" operation attribute. | ||||
| Clients SHOULD send the "printer-uri" and "job-id" operation | ||||
| attributes in Job operations. | ||||
| If the operation is directed at the Job object directly using the | ||||
| Job's URI, the Client MUST NOT include the redundant "job-id" | ||||
| operation attribute. | operation attribute. | |||
| The operation target attributes are REQUIRED operation attributes | The operation target attributes are REQUIRED operation attributes | |||
| that MUST be included in every operation request. Like the charset | that MUST be included in every operation request. Like the charset | |||
| and natural language attributes (see section 3.1.4), the operation | and natural language attributes (see Section 4.1.4), the operation | |||
| target attributes are specially ordered operation attributes. In all | target attributes are specially ordered operation attributes. In all | |||
| cases, the operation target attributes immediately follow the | cases, the operation target attributes immediately follow the | |||
| "attributes-charset" and "attributes-natural-language" attributes | "attributes-charset" and "attributes-natural-language" attributes | |||
| within the operation attribute group, however the specific ordering | within the operation attribute group, however the specific ordering | |||
| rules are: | rules are: | |||
| - In the case where there is only one operation target attribute | o In the case where there is only one operation target attribute | |||
| (i.e., either only the "printer-uri" attribute or only the | (i.e., either only the "printer-uri" attribute or only the "job- | |||
| "job-uri" attribute), that attribute MUST be the third attribute | uri" attribute), that attribute MUST be the third attribute in the | |||
| in the operation attributes group. | operation attributes group. | |||
| - In the case where Job operations use two operation target | ||||
| attributes (i.e., the "printer-uri" and "job-id" attributes), | o In the case where Job operations use two operation target | |||
| the "printer-uri" attribute MUST be the third attribute and the | attributes (i.e., the "printer-uri" and "job-id" attributes), the | |||
| "job-id" attribute MUST be the fourth attribute. | "printer-uri" attribute MUST be the third attribute and the "job- | |||
| id" attribute MUST be the fourth attribute. | ||||
| In all cases, the target URIs contained within the body of IPP | In all cases, the target URIs contained within the body of IPP | |||
| operation requests and responses must be in absolute format rather | operation requests and responses MUST be in absolute format rather | |||
| than relative format (a relative URL identifies a resource with the | than relative format (a relative URL identifies a resource with the | |||
| scope of the HTTP server, but does not include scheme, host or port). | scope of the HTTP server, but does not include scheme, host or port). | |||
| The following rules apply to the use of port numbers in URIs that | The following rules apply to the use of port numbers in URIs that | |||
| identify IPP objects: | identify IPP objects: | |||
| 1. If the URI scheme allows the port number to be explicitly | 1. If the URI scheme allows the port number to be explicitly | |||
| included in the URI string, and a port number is specified | included in the URI string, and a port number is specified within | |||
| within the URI, then that port number MUST be used by the | the URI, then that port number MUST be used by the Client to | |||
| client to contact the IPP object. | contact the IPP object. | |||
| 2. If the URI scheme allows the port number to be explicitly | 2. If the URI scheme allows the port number to be explicitly | |||
| included in the URI string, and a port number is not specified | included in the URI string, and a port number is not specified | |||
| within the URI, then default port number implied by that URI | within the URI, then default port number implied by that URI | |||
| scheme MUST be used by the client to contact the IPP object. | scheme MUST be used by the Client to contact the IPP object. | |||
| 3. If the URI scheme does not allow an explicit port number to be | 3. If the URI scheme does not allow an explicit port number to be | |||
| specified within the URI, then the default port number implied | specified within the URI, then the default port number implied by | |||
| by that URI MUST be used by the client to contact the IPP | that URI MUST be used by the Client to contact the IPP object. | |||
| object. | ||||
| Note: The IPP "Encoding and Transport document [RFC2910] shows a | Note: The Internet Printing Protocol/1.1: IPP URL Scheme [RFC3510] | |||
| mapping of IPP onto HTTP/1.1 [RFC2616] and defines a new default port | and Internet Printing Protocol (IPP) over HTTPS Transport Binding and | |||
| number for using IPP over HTTP/1.1. | the 'ipps' URI Scheme [RFC7472] documents define the mapping of IPP | |||
| onto HTTP and HTTPS, respectively, and define and register a default | ||||
| port number. | ||||
| 3.1.6 Operation Response Status Codes and Status Messages | 4.1.6. Operation Response Status Codes and Status Messages | |||
| Every operation response includes a REQUIRED "status-code" parameter | Every operation response includes a REQUIRED "status-code" parameter | |||
| and an OPTIONAL "status-message" operation attribute, and an OPTIONAL | and MAY include the RECOMMENDED "status-message" and OPTIONAL | |||
| "detailed-status-message" operation attribute. The Print-URI and | "detailed-status-message" operation attributes. The Print-URI and | |||
| Send-URI response MAY include an OPTIONAL "document-access-error" | Send-URI response MAY include an OPTIONAL "document-access-error" | |||
| operation attribute. | operation attribute. | |||
| 3.1.6.1 "status-code" (type2 enum) | 4.1.6.1. "status-code" (type2 enum) | |||
| The REQUIRED "status-code" parameter provides information on the | The REQUIRED "status-code" parameter provides information on the | |||
| processing of a request. | processing of a request. | |||
| The status code is intended for use by automata. A client | The status code is intended for use by automata. A Client | |||
| implementation of IPP SHOULD convert status code values into any | implementation of IPP SHOULD convert status code values into any | |||
| localized message that has semantic meaning to the end user. | localized message that has semantic meaning to the End User. | |||
| The "status-code" value is a numeric value that has semantic meaning. | The "status-code" value is a numeric value that has semantic meaning. | |||
| The "status-code" syntax is similar to a "type2 enum" (see section | The "status-code" syntax is similar to a "type2 enum" (see | |||
| 4.1 on "Attribute Syntaxes") except that values can range only from | Section 5.1 on "Attribute Syntaxes") except that values can range | |||
| 0x0000 to 0x7FFF. Section 13 describes the status codes, assigns the | only from 0x0000 to 0x7FFF. Appendix B describes the status codes, | |||
| numeric values, and suggests a corresponding status message for each | assigns the numeric values, and suggests a corresponding status | |||
| status code for use by the client when the user's natural language is | message for each status code for use by the Client when the user's | |||
| English. | natural language is English. | |||
| If the Printer performs an operation with no errors and it encounters | If the Printer performs an operation with no errors and it encounters | |||
| no problems, it MUST return the status code 'successful-ok' in the | no problems, it MUST return the status code 'successful-ok' in the | |||
| response. See section 13. | response. See Appendix B. | |||
| If the client supplies unsupported values for the following | If the Client supplies unsupported values for the following | |||
| parameters or Operation attributes, the Printer object MUST reject | parameters or operation attributes, the Printer object MUST reject | |||
| the operation, NEED NOT return the unsupported attribute value in the | the operation, MAY return the unsupported attribute value in the | |||
| Unsupported Attributes group, and MUST return the indicated status | Unsupported Attributes group, and MUST return the indicated status | |||
| code: | code: | |||
| Parameter/Attribute Status code | +---------------------+---------------------------------------------+ | |||
| | Parameter/Attribute | Status code | | ||||
| +---------------------+---------------------------------------------+ | ||||
| | version-number | server-error-version-not-supported | | ||||
| +---------------------+---------------------------------------------+ | ||||
| | operation-id | server-error-operation-not-supported | | ||||
| +---------------------+---------------------------------------------+ | ||||
| | attributes-charset | client-error-charset-not-supported | | ||||
| +---------------------+---------------------------------------------+ | ||||
| | compression | client-error-compression-not-supported | | ||||
| +---------------------+---------------------------------------------+ | ||||
| | document-format | client-error-document-format-not-supported | | ||||
| +---------------------+---------------------------------------------+ | ||||
| | document-uri | client-error-uri-scheme-not-supported, | | ||||
| | | client-error-document-access-error | | ||||
| +---------------------+---------------------------------------------+ | ||||
| version-number server-error-version-not-supported | Table 1: Status Codes for All Requests | |||
| operation-id server-error-operation-not-supported | ||||
| attributes-charset client-error-charset-not-supported | ||||
| compression client-error-compression-not-supported | ||||
| document-format client-error-document-format-not-supported | ||||
| document-uri client-error-uri-scheme-not-supported, | ||||
| client-error-document-access-error | ||||
| If the client supplies unsupported values for other attributes, or | If the Client supplies unsupported values for other attributes, or | |||
| unsupported attributes, the Printer returns the status code defined | unsupported attributes, the Printer returns the status code defined | |||
| in section 3.1.7 on Unsupported Attributes. | in Section 4.1.7 on Unsupported Attributes. | |||
| 3.1.6.2 "status-message" (text(255)) | 4.1.6.2. "status-message" (text(255)) | |||
| The OPTIONAL "status-message" operation attribute provides a short | The RECOMMENDED "status-message" operation attribute provides a short | |||
| textual description of the status of the operation. The "status- | textual description of the status of the operation. The "status- | |||
| message" attribute's syntax is "text(255)", so the maximum length is | message" attribute's syntax is "text(255)", so the maximum length is | |||
| 255 octets (see section 4.1.1). The status message is intended for | 255 octets (see Section 5.1.2). The status message is intended for | |||
| the human end user. If a response does include a "status-message" | the human End User. If a response does include a "status-message" | |||
| attribute, an IPP client NEED NOT examine or display the messages, | attribute, an IPP Client SHOULD examine or display the messages in | |||
| however it SHOULD do so in some implementation specific manner. The | some implementation specific manner. The "status-message" is | |||
| "status-message" is especially useful for a later version of a | especially useful for a later version of a Printer to return as | |||
| Printer object to return as supplemental information for the human | supplemental information for the human user to accompany a status | |||
| user to accompany a status code that an earlier version of a client | code that an earlier version of a Client might not understand. | |||
| might not understand. | ||||
| If the Printer object supports the "status-message" operation | If the Printer supports the "status-message" operation attribute, it | |||
| attribute, the Printer object MUST be able to generate this message | MUST be able to generate this message in any of the natural languages | |||
| in any of the natural languages identified by the Printer object's | identified by the Printer's "generated-natural-language-supported" | |||
| "generated-natural-language-supported" attribute (see the | attribute and MUST honor any supported value for the "attributes- | |||
| "attributes-natural-language" operation attribute specified in | natural-language" operation attribute (Section 4.1.4.1) of the Client | |||
| section 3.1.4.1. Section 13 suggests the text for the status message | request. Appendix B suggests the text for the status message | |||
| returned by the Printer for use with the English natural language. | returned by the Printer for use with the English natural language. | |||
| As described in section 3.1.4.1 for any returned 'text' attribute, if | As described in Section 4.1.4.1 for any returned 'text' attribute, if | |||
| there is a choice for generating this message, the Printer object | there is a choice for generating this message, the Printer uses the | |||
| uses the natural language indicated by the value of the "attributes- | natural language indicated by the value of the "attributes-natural- | |||
| natural-language" in the client request if supported, otherwise the | language" in the Client request if supported, otherwise the Printer | |||
| Printer object uses the value in the Printer object's own "natural- | uses the value in the Printer's own "natural-language-configured" | |||
| language-configured" attribute. | attribute. | |||
| If the Printer object supports the "status-message" operation | If the Printer supports the "status-message" operation attribute, it | |||
| attribute, it SHOULD use the REQUIRED 'utf-8' charset to return a | SHOULD use the REQUIRED 'utf-8' charset to return a status message | |||
| status message for the following error status codes (see section 13): | for the following error status codes (see Appendix B): 'client-error- | |||
| 'client-error-bad-request', 'client-error-charset-not-supported', | bad-request', 'client-error-charset-not-supported', 'server-error- | |||
| 'server-error-internal-error', 'server-error-operation-not- | internal-error', 'server-error-operation-not-supported', and 'server- | |||
| supported', and 'server-error-version-not-supported'. In this case, | error-version-not-supported'. In this case, it MUST set the value of | |||
| it MUST set the value of the "attributes-charset" operation attribute | the "attributes-charset" operation attribute to 'utf-8' in the error | |||
| to 'utf-8' in the error response. | response. | |||
| 3.1.6.3 "detailed-status-message" (text(MAX)) | 4.1.6.3. "detailed-status-message" (text(MAX)) | |||
| The OPTIONAL "detailed-status-message" operation attribute provides | The OPTIONAL "detailed-status-message" operation attribute provides | |||
| additional more detailed technical and implementation-specific | additional more detailed technical and implementation-specific | |||
| information about the operation. The "detailed-status-message" | information about the operation for Adminstrators or other | |||
| experienced technical people. The "detailed-status-message" | ||||
| attribute's syntax is "text(MAX)", so the maximum length is 1023 | attribute's syntax is "text(MAX)", so the maximum length is 1023 | |||
| octets (see section 4.1.1). If the Printer objects supports the | octets (see Section 5.1.2). If the Printer supports the "detailed- | |||
| "detailed-status-message" operation attribute, the Printer NEED NOT | status-message" operation attribute, the Printer SHOULD localize the | |||
| localize the message, since it is intended for use by the system | message unless such localization would obscure the technical meaning | |||
| administrator or other experienced technical persons. Localization | of the message. Clients MUST NOT attempt to parse the value of this | |||
| might obscure the technical meaning of such messages. Clients MUST | attribute. See the "document-access-error" operation attribute | |||
| NOT attempt to parse the value of this attribute. See the | (Section 4.1.6.4) for additional errors that a program can process. | |||
| "document-access-error" operation attribute (section 3.1.6.4) for | ||||
| additional errors that a program can process. | ||||
| 3.1.6.4 "document-access-error" (text(MAX)) | 4.1.6.4. "document-access-error" (text(MAX)) | |||
| This OPTIONAL operation attribute provides additional information | This OPTIONAL operation attribute provides additional information | |||
| about any document access errors encountered by the Printer before it | about any Document access errors encountered by the Printer before it | |||
| returned a response to the Print-URI (section 3.2.2) or Send-URI | returned a response to the Print-URI (Section 4.2.2) or Send-URI | |||
| (section 3.3.1) operation. For errors in the protocol identified by | (Section 4.3.1) operation. For errors in the protocol identified by | |||
| the URI scheme in the "document-uri" operation attribute, such as | the URI scheme in the "document-uri" operation attribute, such as | |||
| 'http:' or 'ftp:', the error code is returned in parentheses, | 'http:' or 'ftp:', the error code is returned in parentheses, | |||
| followed by the URI. For example: | followed by the URI. For example: | |||
| (404) http://ftp.pwg.org/pub/pwg/ipp/new_MOD/ipp-model-v11.pdf | (404) http://ftp.pwg.org/pub/pwg/ipp/new_MOD/ipp-model-v11-990510.pdf | |||
| Most Internet protocols use decimal error codes (unlike IPP), so the | Most Internet protocols use decimal error codes (unlike IPP), so the | |||
| ASCII error code representation is in decimal. | ASCII error code representation is in decimal. | |||
| 3.1.7 Unsupported Attributes | 4.1.7. Unsupported Attributes | |||
| The Unsupported Attributes group contains attributes that are not | The Unsupported Attributes group contains attributes that are not | |||
| supported by the operation. This group is primarily for the job | supported by the operation. This group is primarily for the Job | |||
| creation operations, but all operations can return this group. | Creation operations, but all operations can return this group. | |||
| A Printer object MUST include an Unsupported Attributes group in a | A Printer MUST include an Unsupported Attributes group in a response | |||
| response if the status code is one of the following: 'successful- | if the status code is one of the following: 'successful-ok-ignored- | |||
| ok-ignored-or-substituted-attributes', 'successful-ok-conflicting- | or-substituted-attributes', 'successful-ok-conflicting-attributes', | |||
| attributes', 'client-error-attributes-or-values-not-supported' or | 'client-error-attributes-or-values-not-supported' or 'client-error- | |||
| 'client-error-conflicting-attributes'. | conflicting-attributes'. | |||
| If the status code is one of the four specified in the preceding | If the status code is one of the four specified in the preceding | |||
| paragraph, the Unsupported Attributes group MUST contain all of those | paragraph, the Unsupported Attributes group MUST contain all of those | |||
| attributes and only those attributes that are: | attributes and only those attributes that are: | |||
| a. an Operation or Job Template attribute supplied in the request, | a. an operation or Job Template attribute supplied in the request, | |||
| and | and | |||
| b. unsupported by the printer. See below for details on the three | b. unsupported by the printer. See below for details on the three | |||
| categories "unsupported" attributes. | categories "unsupported" attributes. | |||
| If the status code is one of those in the table in section 3.1.6.1, | If the status code is one of those in the table in Section 4.1.6.1, | |||
| the Unsupported Attributes group NEED NOT contain the unsupported | the OPTIONAL Unsupported Attributes group contains the unsupported | |||
| parameter or attribute indicated in that table. | parameter or attribute indicated in that table. | |||
| If the Printer object is not returning any Unsupported Attributes in | If the Printer is not returning any Unsupported Attributes in the | |||
| the response, the Printer object SHOULD omit Group 2 rather than | response, the Printer SHOULD omit Group 2 rather than sending an | |||
| sending an empty group. However, a client MUST be able to accept an | empty group. However, a Client MUST be able to accept an empty | |||
| empty group. | group. | |||
| Unsupported attributes fall into three categories: | Unsupported attributes fall into three categories: | |||
| 1. The Printer object does not support the supplied attribute (no | 1. The Printer does not support the supplied attribute (no matter | |||
| matter what the attribute syntax or value). | what the attribute syntax or value). | |||
| 2. The Printer object does support the attribute, but does not | 2. The Printer does support the attribute, but does not support some | |||
| support some or all of the particular attribute syntaxes or | or all of the particular attribute syntaxes or values supplied by | |||
| values supplied by the client (i.e., the Printer object does | the Client, i.e., the Printer does not have those attribute | |||
| not have those attribute syntaxes or values in its | syntaxes or values in its corresponding "xxx-supported" | |||
| corresponding "xxx-supported" attribute). | attribute. | |||
| 3. The Printer object does support the attributes and values | 3. The Printer does support the attributes and values supplied, but | |||
| supplied, but the particular values are in conflict with one | the particular values are in conflict with one another, because | |||
| another, because they violate a constraint, such as not being | they violate a constraint, such as not being able to staple | |||
| able to staple transparencies. | transparencies. | |||
| In the case of an unsupported attribute name, the Printer object | In the case of an unsupported attribute name, the Printer returns the | |||
| returns the client-supplied attribute with a substituted value of | Client-supplied attribute with a substituted value of 'unsupported'. | |||
| 'unsupported'. This value's syntax type is "out-of-band" and its | This value's syntax type is "out-of-band" and its encoding is defined | |||
| encoding is defined by special rules for "out-of-band" values in the | by special rules for "out-of-band" values in the "Encoding and | |||
| "Encoding and Transport" document [RFC2910]. Its value indicates no | Transport" document [RFC2910bis]. Its value indicates no support for | |||
| support for the attribute itself (see the beginning of section 4.1). | the attribute itself - see the beginning of Section 5.1. | |||
| In the case of a supported attribute with one or more unsupported | In the case of a supported attribute with one or more unsupported | |||
| attribute syntaxes or values, the Printer object simply returns the | attribute syntaxes or values, the Printer simply returns the Client- | |||
| client-supplied attribute with the unsupported attribute syntaxes or | supplied attribute with the unsupported attribute syntaxes or values | |||
| values as supplied by the client. This indicates support for the | as supplied by the Client. This indicates support for the attribute, | |||
| attribute, but no support for that particular attribute syntax or | but no support for that particular attribute syntax or value. If the | |||
| value. If the client supplies a multi-valued attribute with more | Client supplies a multi-valued attribute with more than one value and | |||
| than one value and the Printer object supports the attribute but only | the Printer supports the attribute but only supports a subset of the | |||
| supports a subset of the client-supplied attribute syntaxes or | Client-supplied attribute syntaxes or values, the Printer MUST return | |||
| values, the Printer object | only those attribute syntaxes or values that are unsupported. | |||
| MUST return only those attribute syntaxes or values that are | ||||
| unsupported. | ||||
| In the case of two (or more) supported attribute values that are in | In the case of two (or more) supported attribute values that are in | |||
| conflict with one another (although each is supported independently, | conflict with one another (although each is supported independently, | |||
| the values conflict when requested together within the same job), the | the values conflict when requested together within the same job), the | |||
| Printer object MUST return all the values that it ignores or | Printer MUST return all the values that it ignores or substitutes to | |||
| substitutes to resolve the conflict, but not any of the values that | resolve the conflict, but not any of the values that it is still | |||
| it is still using. The choice for exactly how to resolve the | using. The choice for exactly how to resolve the conflict is | |||
| conflict is implementation dependent. See sections 3.2.1.2 and 15. | implementation dependent. See Section 4.2.1.2 and Appendix C. See | |||
| See The Implementer's Guide [IPP-IIG] for an example. | the Implementor's Guides [RFC3196] [PWG5100.19] for examples. | |||
| 3.1.8 Versions | 4.1.8. Versions | |||
| Each operation request and response carries with it a "version- | Each operation request and response carries with it a "version- | |||
| number" parameter. Each value of the "version-number" is in the form | number" parameter. Each value of the "version-number" is in the form | |||
| "X.Y" where X is the major version number and Y is the minor version | "X.Y" where X is the major version number and Y is the minor version | |||
| number. By including a version number in the client request, it | number. By including a version number in the Client request, it | |||
| allows the client to identify which version of IPP it is interested | allows the Client to identify which version of IPP it is interested | |||
| in using, i.e., the version whose conformance requirements the client | in using, i.e., the version whose conformance requirements the Client | |||
| may be depending upon the Printer to meet. | can depend upon the Printer to meet. | |||
| If the IPP object does not support that major version number supplied | If the IPP object does not support that major version number supplied | |||
| by the client, i.e., the major version field of the "version-number" | by the Client, i.e., the major version field of the "version-number" | |||
| parameter does not match any of the values of the Printer's "ipp- | parameter does not match any of the values of the Printer's "ipp- | |||
| versions-supported" (see section 4.4.14), the object MUST respond | versions-supported" (see Section 5.4.14), the object MUST respond | |||
| with a status code of 'server-error-version-not-supported' along with | with a status code of 'server-error-version-not-supported' along with | |||
| the closest version number that is supported (see section 13.1.5.4). | the closest version number that is supported (see Appendix B.1.5.4). | |||
| If the major version number is supported, but the minor version | If the major version number is supported, but the minor version | |||
| number is not, the IPP object SHOULD accept and attempt to perform | number is not, the IPP object SHOULD accept and attempt to perform | |||
| the request (or reject the request if the operation is not | the request (or reject the request if the operation is not | |||
| supported), else it rejects the request and returns the 'server- | supported), else it rejects the request and returns the 'server- | |||
| error-version-not-supported' status code. In all cases, the IPP | error-version-not-supported' status code. In all cases, the IPP | |||
| object MUST return the "version-number" that it supports that is | object MUST return the "version-number" that it supports that is | |||
| closest to the version number supplied by the client in the request. | closest to the version number supplied by the Client in the request. | |||
| There is no version negotiation per se. However, if after receiving | There is no version negotiation per se. However, if after receiving | |||
| a 'server-error-version-not-supported' status code from an IPP | a 'server-error-version-not-supported' status code from an IPP | |||
| object, a client SHOULD try again with a different version number. A | object, a Client SHOULD try again with a different version number. A | |||
| client MAY also determine the versions supported either from a | Client MAY also determine the versions supported either from a | |||
| directory that conforms to Appendix E (see section 16) or by querying | directory that conforms to Appendix D or by querying the Printer's | |||
| the Printer object's "ipp-versions-supported" attribute (see section | "ipp-versions-supported" attribute (see Section 5.4.14) to determine | |||
| 4.4.14) to determine which versions are supported. | which versions are supported. | |||
| An IPP object implementation MUST support version '1.1', i.e., meet | An IPP/1.1 object implementation MUST support version '1.1', i.e., | |||
| the conformance requirements for IPP/1.1 as specified in this | meet the conformance requirements for IPP/1.1 as specified in this | |||
| document and [RFC2910]. It is recommended that IPP object | document and [RFC2910bis]. IPP implementations SHOULD accept any | |||
| implementations accept any request with the major version '1' (or | request with the major version '1' or '2', or reject the request if | |||
| reject the request if the operation is not supported). | the operation is not supported. | |||
| There is only one notion of "version number" that covers both IPP | There is only one notion of "version number" that covers both IPP | |||
| Model and IPP Protocol changes. Thus the version number MUST change | Model and IPP Protocol changes. Changes to the major version number | |||
| when introducing a new version of the Model and Semantics document | of the Model and Semantics document can indicate structural or | |||
| (this document) or a new version of the "Encoding and Transport" | syntactic changes that make it impossible for older version of IPP | |||
| document [RFC2910]. | Clients and Printers to correctly parse and correctly process the new | |||
| or changed attributes, operations and responses. If the major | ||||
| version number changes, the minor version number is set to zero. As | ||||
| an example, adding the REQUIRED "ipp-attribute-fidelity" attribute to | ||||
| version '1.1' (if it had not been part of version '1.0'), would have | ||||
| required a change to the major version number, since an IPP/1.0 | ||||
| Printer would not have processed a request with the correct semantics | ||||
| that contained the "ipp-attribute-fidelity" attribute that it did not | ||||
| know about. Items that might affect the changing of the major | ||||
| version number include any changes to the Model and Semantics | ||||
| document (this document) or the "Encoding and Transport" document | ||||
| [RFC2910bis] itself, such as: | ||||
| Changes to the major version number of the Model and Semantics | o reordering of ordered attributes or attribute sets | |||
| document indicate structural or syntactic changes that make it | ||||
| impossible for older version of IPP clients and Printer objects to | ||||
| correctly parse and correctly process the new or changed attributes, | ||||
| operations and responses. If the major version number changes, the | ||||
| minor version numbers is set to zero. As an example, adding the | ||||
| REQUIRED "ipp-attribute-fidelity" attribute to version '1.1' (if it | ||||
| had not been part of version '1.0'), would have required a change to | ||||
| the major version number, since an IPP/1.0 Printer would not have | ||||
| processed a request with the correct semantics that contained the | ||||
| "ipp-attribute-fidelity" attribute that it did not know about. Items | ||||
| that might affect the changing of the major version number include | ||||
| any changes to the Model and Semantics document (this document) or | ||||
| the "Encoding and Transport" document [RFC2910] itself, such as: | ||||
| - reordering of ordered attributes or attribute sets | o changes to the syntax of existing attributes | |||
| - changes to the syntax of existing attributes | ||||
| - adding REQUIRED (for an IPP object to support) operation | o adding REQUIRED (for an IPP object to support) operation attribute | |||
| attribute groups | groups | |||
| - adding values to existing REQUIRED operation attributes | ||||
| - adding REQUIRED operations | o adding values to existing REQUIRED operation attributes | |||
| o adding REQUIRED operations | ||||
| Changes to the minor version number indicate the addition of new | Changes to the minor version number indicate the addition of new | |||
| features, attributes and attribute values that may not be understood | features, attributes and attribute values that might not be | |||
| by all IPP objects, but which can be ignored if not understood. | understood by all IPP objects, but which can be ignored if not | |||
| Items that might affect the changing of the minor version number | understood. Items that might affect the changing of the minor | |||
| include any changes to the model objects and attributes but not the | version number include any changes to the model objects and | |||
| encoding and transport rules [RFC2910] (except adding attribute | attributes but not the encoding and transport rules [RFC2910bis] | |||
| syntaxes). Examples of such changes are: | (except adding attribute syntaxes). Examples of such changes are: | |||
| - grouping all extensions not included in a previous version into | o grouping all extensions not included in a previous version into a | |||
| a new version | new version | |||
| - adding new attribute values | ||||
| - adding new object attributes | ||||
| - adding OPTIONAL (for an IPP object to support) operation | ||||
| attributes (i.e., those attributes that an IPP object can ignore | ||||
| without confusing clients) | ||||
| - adding OPTIONAL (for an IPP object to support) operation | ||||
| attribute groups (i.e., those attributes that an IPP object can | ||||
| ignore without confusing clients) | ||||
| - adding new attribute syntaxes | ||||
| - adding OPTIONAL operations | ||||
| - changing Job Description attributes or Printer Description | ||||
| attributes from OPTIONAL to REQUIRED or vice versa. | ||||
| - adding OPTIONAL attribute syntaxes to an existing attribute. | ||||
| The encoding of the "version-number" MUST NOT change over any version | o adding new attribute values | |||
| number (either major or minor). This rule guarantees that all future | ||||
| versions will be backwards compatible with all previous versions (at | ||||
| least for checking the "version-number"). In addition, any protocol | ||||
| elements (attributes, error codes, tags, etc.) that are not carried | ||||
| forward from one version to the next are deprecated so that they can | ||||
| never be reused with new semantics. | ||||
| Implementations that support a certain version NEED NOT support ALL | o adding new object attributes | |||
| previous versions. As each new version is defined (through the | ||||
| release of a new IPP specification document), that version will | ||||
| specify which previous versions MUST and which versions SHOULD be | ||||
| supported in compliant implementations. | ||||
| 3.1.9 Job Creation Operations | o adding OPTIONAL (for an IPP object to support) operation | |||
| attributes (i.e., those attributes that an IPP object can ignore | ||||
| without confusing Clients) | ||||
| In order to "submit a print job" and create a new Job object, a | o adding OPTIONAL (for an IPP object to support) operation attribute | |||
| client issues a create request. A create request is any one of | groups (i.e., those attributes that an IPP object can ignore | |||
| without confusing Clients) | ||||
| o adding new attribute syntaxes | ||||
| o adding OPTIONAL operations | ||||
| o changing Job attributes or Printer attributes from OPTIONAL to | ||||
| REQUIRED or vice versa. | ||||
| o adding OPTIONAL attribute syntaxes to an existing attribute. | ||||
| The encoding [RFC2910bis] of the "version-number" MUST NOT change | ||||
| over any version number (either major or minor). This rule | ||||
| guarantees that all future versions will be backwards compatible with | ||||
| all previous versions (at least for checking the "version-number"). | ||||
| In addition, any protocol elements (attributes, error codes, tags, | ||||
| etc.) that are not carried forward from one version to the next are | ||||
| DEPRECATED so that they can never be reused with new semantics. | ||||
| Implementations that support a certain version SHOULD support all | ||||
| previous standards-track versions. As each new version is defined | ||||
| (through the release of a new IPP specification document), that | ||||
| version will specify which previous versions MUST and which versions | ||||
| SHOULD be supported in compliant implementations. | ||||
| 4.1.9. Job Creation Operations | ||||
| In order to "submit a print job" and create a new Job, a Client | ||||
| issues a Job Creation request. A Job Creation request is any one of | ||||
| following three operation requests: | following three operation requests: | |||
| - The Print-Job Request: A client that wants to submit a print job | o The Print-Job Request: A Client that wants to submit a print Job | |||
| with only a single document uses the Print-Job operation. The | with only a single Document can use the Print-Job operation. The | |||
| operation allows for the client to "push" the document data to | operation allows for the Client to "push" the Document data to the | |||
| the Printer object by including the document data in the request | Printer by including the Document data in the request itself. | |||
| itself. | Note that Clients SHOULD instead use the Create-Job and Send- | |||
| Document requests, if supported by the Printer, since they allow | ||||
| for Job monitoring and control during submission of the Document | ||||
| data. | ||||
| - The Print-URI Request: A client that wants to submit a print job | o The Print-URI Request: A Client that wants to submit a print Job | |||
| with only a single document (where the Printer object "pulls" | with only a single Document (where the Printer "pulls" the | |||
| the document data instead of the client "pushing" the data to | Document data instead of the Client "pushing" the data to the | |||
| the Printer object) uses the Print-URI operation. In this | Printer) uses the Print-URI operation. In this case, the Client | |||
| case, the client includes in the request only a URI reference to | includes in the request only a URI reference to the Document data | |||
| the document data (not the document data itself). | (not the Document data itself). | |||
| - The Create-Job Request: A client that wants to submit a print | o The Create-Job Request: A Client that wants to submit a print Job | |||
| job with multiple documents uses the Create-Job operation. This | with zero or more Documents uses the Create-Job operation. This | |||
| operation is followed by an arbitrary number (one or more) of | operation is followed by an arbitrary number of Send-Document and/ | |||
| Send-Document and/or Send-URI operations (each creating another | or Send-URI operations, each creating another Document for the | |||
| document for the newly create Job object). The Send-Document | newly created Job. The Send-Document operation includes the | |||
| operation includes the document data in the request (the client | Document data in the request (the Client "pushes" the Document | |||
| "pushes" the document data to the printer), and the Send-URI | data to the Printer), and the Send-URI operation includes only a | |||
| operation includes only a URI reference to the document data in | URI reference to the Document data in the request (the Printer | |||
| the request (the Printer "pulls" the document data from the | "pulls" the Document data from the referenced location). The last | |||
| referenced location). The last Send-Document or Send-URI | Send-Document or Send-URI request for a given Job includes a | |||
| request for a given Job object includes a "last-document" | "last-document" operation attribute set to 'true' indicating that | |||
| operation attribute set to 'true' indicating that this is the | this is the last request. | |||
| last request. | ||||
| Throughout this model document, the term "create request" is used to | Throughout this model document, the term "Job Creation request" is | |||
| refer to any of these three operation requests. | used to refer to any of these three operation requests. | |||
| A Create-Job operation followed by only one Send-Document operation | A Create-Job operation followed by only one Send-Document operation | |||
| is semantically equivalent to a Print-Job operation, however, for | is semantically equivalent to a Print-Job operation, however, the | |||
| performance reasons, the client SHOULD use the Print-Job operation | Client SHOULD use the Create-Job and Send-Document operations (when | |||
| for all single document jobs. Also, Print-Job is a REQUIRED | supported) for all single Document Jobs to allow for reliable Job | |||
| operation (all implementations MUST support it) whereas Create-Job is | control and monitoring. Print-Job is a REQUIRED operation (all | |||
| an OPTIONAL operation, hence some implementations might not support | implementations MUST support it) whereas Create-Job is an RECOMMENDED | |||
| it. | operation, hence some implementations might not support it. | |||
| Job submission time is the point in time when a client issues a | Job submission time is the point in time when a Client issues a Job | |||
| create request. The initial state of every Job object is the | Creation request. The initial state of every Job is the 'pending', | |||
| 'pending', 'pending-held', or 'processing' state (see section 4.3.7). | 'pending-held', or 'processing' state (see Section 5.3.7). When the | |||
| When the Printer object begins processing the print job, the Job | Printer begins processing the print job, the Job's state moves to | |||
| object's state moves to 'processing'. This is known as job | 'processing'. This is known as Job processing time. | |||
| processing time. There are validation checks that must be done at | ||||
| job submission time and others that must be performed at job | ||||
| processing time. | ||||
| At job submission time and at the time a Validate-Job operation is | At Job submission time and at the time a Validate-Job operation is | |||
| received, the Printer MUST do the following: | received, the Printer MUST do the following: | |||
| 1. Process the client supplied attributes and either accept or | 1. Process the Client supplied attributes and either accept or | |||
| reject the request | reject the request | |||
| 2. Validate the syntax of and support for the scheme of any client | ||||
| supplied URI | ||||
| At job submission time the Printer object MUST validate whether or | 2. Validate the syntax of and support for the scheme of any Client | |||
| not the supplied attributes, attribute syntaxes, and values are | supplied URI | |||
| supported by matching them with the Printer object's corresponding | ||||
| "xxx-supported" attributes. See section 3.1.7 for details. [IPP- | ||||
| IIG] presents suggested steps for an IPP object to either accept or | ||||
| reject any request and additional steps for processing create | ||||
| requests. | ||||
| At job submission time the Printer object NEED NOT perform the | At Job submission time the Printer MUST validate whether the supplied | |||
| validation checks reserved for job processing time such as: | attributes, attribute syntaxes, and values are supported by matching | |||
| them with the Printer's corresponding "xxx-supported" attributes. | ||||
| See Section 4.1.7 for details. [RFC3196] and [PWG5100.19] present | ||||
| suggested steps for an IPP object to either accept or reject any | ||||
| request and additional steps for processing Job Creation requests. | ||||
| 1. Validating the document data | At Job submission time the Printer MAY perform the validation checks | |||
| 2. Validating the actual contents of any client supplied URI | reserved for Job processing time such as: | |||
| (resolve the reference and follow the link to the document | ||||
| data) | ||||
| At job submission time, these additional job processing time | 1. Validating the format of the Document data | |||
| 2. Validating the actual contents of any Client supplied URI | ||||
| (resolve the reference and follow the link to the Document data) | ||||
| At Job submission time, these additional Job processing time | ||||
| validation checks are essentially useless, since they require | validation checks are essentially useless, since they require | |||
| actually parsing and interpreting the document data, are not | actually parsing and interpreting the Document data, are not | |||
| guaranteed to be 100% accurate, and MUST be done, yet again, at job | guaranteed to be 100% accurate, and MUST be done, yet again, at Job | |||
| processing time. Also, in the case of a URI, checking for | processing time. Also, in the case of a URI, checking for | |||
| availability at job submission time does not guarantee availability | availability at Job submission time does not guarantee availability | |||
| at job processing time. In addition, at job processing time, the | at Job processing time. In addition, at Job processing time, the | |||
| Printer object might discover any of the following conditions that | Printer might discover any of the following conditions that were not | |||
| were not detectable at job submission time: | detectable at Job submission time: | |||
| - runtime errors in the document data, | o runtime errors in the Document data, | |||
| - nested document data that is in an unsupported format, | ||||
| - the URI reference is no longer valid (i.e., the server hosting | ||||
| the document might be down), or | ||||
| - any other job processing error | ||||
| At job submission time, a Printer object, especially a non-spooling | o nested Document data that is in an unsupported format, | |||
| Printer, MAY accept jobs that it does not have enough space for. In | ||||
| such a situation, a Printer object MAY stop reading data from a | ||||
| client for an indefinite period of time. A client MUST be prepared | ||||
| for a write operation to block for an indefinite period of time (see | ||||
| section 5.1 on client conformance). | ||||
| When a Printer object has too little space for starting a new job, it | o the URI reference is no longer valid (i.e., the server hosting the | |||
| MAY reject a new create request. In this case, a Printer object MUST | Document might be down), or | |||
| o any other Job processing error | ||||
| At Job submission time, a Printer, especially a non-spooling Printer, | ||||
| MAY accept Jobs that it does not have enough space for. In such a | ||||
| situation, a Printer MAY stop reading data from a Client for an | ||||
| indefinite period of time. A Client MUST be prepared for a write | ||||
| operation to block for an indefinite period of time (see Section 6.1 | ||||
| on Client conformance). | ||||
| When a Printer has too little space for starting a new Job, it MAY | ||||
| reject a new Job Creation request. In this case, a Printer MUST | ||||
| return a response (in reply to the rejected request) with a status- | return a response (in reply to the rejected request) with a status- | |||
| code of 'server-error-busy' (see section 14.1.5.8) and it MAY close | code of 'server-error-busy' (see section 14.1.5.8) and it MAY close | |||
| the connection before receiving all bytes of the operation. A | the connection before receiving all bytes of the operation. A | |||
| Printer SHOULD indicate that it is temporarily unable to accept jobs | Printer SHOULD indicate that it is temporarily unable to accept Jobs | |||
| by setting the 'spool-space-full' value in its "printer-state- | by setting the 'spool-space-full' value in its "printer-state- | |||
| reasons" attribute and removing the value when it can accept another | reasons" attribute and removing the value when it can accept another | |||
| job (see section 4.4.12). | Job (see Section 5.4.12). | |||
| When receiving a 'server-error-busy' status-code in an operation | When receiving a 'server-error-busy' status-code in an operation | |||
| response, a client MUST be prepared for the Printer object to close | response, a Client MUST be prepared for the Printer to close the | |||
| the connection before the client has sent all of the data (especially | connection before the Client has sent all of the data (especially for | |||
| for the Print-Job operation). A client MUST be prepared to keep | the Print-Job operation). A Client MUST be prepared to keep | |||
| submitting a create request until the IPP Printer object accepts the | submitting a Job Creation request until the Printer accepts the Job | |||
| create request. | Creation request. | |||
| At job processing time, since the Printer object has already | At Job processing time, since the Printer has already responded with | |||
| responded with a successful status code in the response to the create | a successful status code in the response to the Job Creation request, | |||
| request, if the Printer object detects an error, the Printer object | if the Printer detects an error, the Printer is unable to inform the | |||
| is unable to inform the end user of the error with an operation | End User of the error with an operation status code. In this case, | |||
| status code. In this case, the Printer, depending on the error, can | the Printer, depending on the error, can set the Job's "job-state", | |||
| set the job object's "job-state", "job-state-reasons", or "job- | "job-state-reasons", and/or "job-state-message" attributes to the | |||
| state-message" attributes to the appropriate value(s) so that later | appropriate value(s) so that later queries can report the correct Job | |||
| queries can report the correct job status. | status. | |||
| Note: Asynchronous notification of events is outside the scope of | Note: Asynchronous notification of events is defined in IPP: Event | |||
| this IPP/1.1 document. | Notifications and Subscriptions [RFC3995]. | |||
| 3.2 Printer Operations | 4.2. Printer Operations | |||
| All Printer operations are directed at Printer objects. A client | All Printer operations are directed at Printers. A Client MUST | |||
| MUST always supply the "printer-uri" operation attribute in order to | always supply the "printer-uri" operation attribute in order to | |||
| identify the correct target of the operation. | identify the correct target of the operation. | |||
| 3.2.1 Print-Job Operation | 4.2.1. Print-Job Operation | |||
| This REQUIRED operation allows a client to submit a print job with | This REQUIRED operation allows a Client to submit a print Job with | |||
| only one document and supply the document data (rather than just a | only one Document and supply the Document data (rather than just a | |||
| reference to the data). See Section 15 for the suggested steps for | reference to the data). See Appendix C for the suggested steps for | |||
| processing create operations and their Operation and Job Template | processing Job Creation requests and their operation and Job Template | |||
| attributes. | attributes. | |||
| 3.2.1.1 Print-Job Request | 4.2.1.1. Print-Job Request | |||
| The following groups of attributes are supplied as part of the | The following groups of attributes are supplied as part of the Print- | |||
| Print-Job Request: | Job Request: | |||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Natural Language and Character Set: | Natural Language and Character Set: | |||
| The "attributes-charset" and "attributes-natural-language" | The "attributes-charset" and "attributes-natural-language" | |||
| attributes as described in section 3.1.4.1. The Printer object | attributes as described in Section 4.1.4.1. The Printer MUST | |||
| MUST copy these values to the corresponding Job Description | copy these values to the corresponding Job Status attributes | |||
| attributes described in sections 4.3.19 and 4.3.20. | described in Sections 5.3.19 and 5.3.20. | |||
| Target: | Target: | |||
| The "printer-uri" (uri) operation attribute which is the target | The "printer-uri" (uri) operation attribute which is the target | |||
| for this operation as described in section 3.1.5. | for this operation as described in Section 4.1.5. | |||
| Requesting User Name: | Requesting User Name: | |||
| The "requesting-user-name" (name(MAX)) attribute SHOULD be | The "requesting-user-name" (name(MAX)) attribute SHOULD be | |||
| supplied by the client as described in section 8.3. | supplied by the Client as described in Section 9.3. | |||
| "job-name" (name(MAX)): | "job-name" (name(MAX)): | |||
| The client OPTIONALLY supplies this attribute. The Printer | ||||
| object MUST support this attribute. It contains the client | The Client MAY supply and the Printer MUST support this | |||
| supplied Job name. If this attribute is supplied by the | attribute. It contains the Client supplied Job name. If this | |||
| client, its value is used for the "job-name" attribute of the | attribute is supplied by the Client, its value is used for the | |||
| newly created Job object. The client MAY automatically include | "job-name" attribute of the newly created Job. The Client MAY | |||
| any information that will help the end-user distinguish amongst | automatically include any information that will help the End | |||
| his/her jobs, such as the name of the application program along | User distinguish amongst his/her jobs, such as the name of the | |||
| with information from the document, such as the document name, | application program along with information from the document, | |||
| document subject, or source file name. If this attribute is | such as the Document name, document subject, or source file | |||
| not supplied by the client, the Printer generates a name to use | name. If this attribute is not supplied by the Client, the | |||
| in the "job-name" attribute of the newly created Job object | Printer generates a name to use in the "job-name" attribute of | |||
| (see Section 4.3.5). | the newly created Job (see Section 5.3.5). | |||
| "ipp-attribute-fidelity" (boolean): | "ipp-attribute-fidelity" (boolean): | |||
| The client OPTIONALLY supplies this attribute. The Printer | ||||
| object MUST support this attribute. The value 'true' indicates | The Client MAY supply and the Printer MUST support this | |||
| that total fidelity to client supplied Job Template attributes | attribute. The value 'true' indicates that total fidelity to | |||
| and values is required, else the Printer object MUST reject the | Client supplied Job Template attributes and values is required, | |||
| Print-Job request. The value 'false' indicates that a | otherwise the Printer MUST reject the Print-Job request. The | |||
| reasonable attempt to print the Job object is acceptable and | value 'false' indicates that a reasonable attempt to print the | |||
| the Printer object MUST accept the Print-Job request. If not | Job is acceptable and the Printer MUST accept the Print-Job | |||
| supplied, the Printer object assumes the value is 'false'. All | request. If not supplied, the Printer assumes the value is | |||
| Printer objects MUST support both types of job processing. See | 'false'. All Printers MUST support both types of Job | |||
| section 15 for a full description of "ipp-attribute-fidelity" | processing. See Appendix C for a full description of "ipp- | |||
| and its relationship to other attributes, especially the | attribute-fidelity" and its relationship to other attributes, | |||
| Printer object's "pdl-override-supported" attribute. | especially the Printer's "pdl-override-supported" attribute. | |||
| "document-name" (name(MAX)): | "document-name" (name(MAX)): | |||
| The client OPTIONALLY supplies this attribute. The Printer | ||||
| object MUST support this attribute. It contains the client | ||||
| supplied document name. The document name MAY be different | ||||
| than the Job name. Typically, the client software | ||||
| automatically supplies the document name on behalf of the end | ||||
| user by using a file name or an application generated name. If | ||||
| this attribute is supplied, its value can be used in a manner | ||||
| defined by each implementation. Examples include: printed | ||||
| along with the Job (job start sheet, page adornments, etc.), | ||||
| used by accounting or resource tracking management tools, or | ||||
| even stored along with the document as a document level | ||||
| attribute. IPP/1.1 does not support the concept of document | ||||
| level attributes. | ||||
| "compression" (type3 keyword): | The Client MAY supply and the Printer MUST support this | |||
| The client OPTIONALLY supplies this attribute. The Printer | attribute. It contains the Client supplied Document name. The | |||
| object MUST support this attribute and the "compression- | Document name MAY be different than the Job name. Typically, | |||
| supported" attribute (see section 4.4.32). The client supplied | the Client software automatically supplies the Document name on | |||
| "compression" operation attribute identifies the compression | behalf of the End User by using a file name or an application | |||
| algorithm used on the document data. The following cases exist: | generated name. If this attribute is supplied, its value can | |||
| be used in a manner defined by each implementation. Examples | ||||
| include: printed along with the Job (Job start sheet, page | ||||
| adornments, etc.), used by accounting or resource tracking | ||||
| management tools, or even stored along with the Document as a | ||||
| Document level attribute. | ||||
| a) If the client omits this attribute, the Printer object MUST | "compression" (type2 keyword): | |||
| assume that the data is not compressed (i.e. the Printer | ||||
| follows the rules below as if the client supplied the | ||||
| "compression" attribute with a value of 'none'). | ||||
| b) If the client supplies this attribute, but the value is not | ||||
| supported by the Printer object, i.e., the value is not one | ||||
| of the values of the Printer object's "compression- | ||||
| supported" attribute, the Printer object MUST reject the | ||||
| request, and return the 'client-error-compression-not- | ||||
| supported' status code. See section 3.1.7 for returning | ||||
| unsupported attributes and values. | ||||
| c) If the client supplies the attribute and the Printer object | The Client MAY supply and the Printer MUST support this | |||
| supports the attribute value, the Printer object uses the | attribute. The Client supplied "compression" operation | |||
| corresponding decompression algorithm on the document data. | attribute identifies the compression algorithm used on the | |||
| d) If the decompression algorithm fails before the Printer | Document data. The following cases exist: | |||
| returns an operation response, the Printer object MUST | ||||
| reject the request and return the 'client-error- | a. If the Client omits this attribute, the Printer MUST assume | |||
| compression-error' status code. | that the data is not compressed, i.e., the Printer follows | |||
| e) If the decompression algorithm fails after the Printer | the rules below as if the Client supplied the "compression" | |||
| returns an operation response, the Printer object MUST abort | attribute with a value of 'none'. | |||
| the job and add the 'compression-error' value to the job's | ||||
| "job-state-reasons" attribute. | b. If the Client supplies this attribute, but the value is not | |||
| f) If the decompression algorithm succeeds, the document data | supported by the Printer, i.e., the value is not one of the | |||
| MUST then have the format specified by the job's "document- | values of the Printer's "compression-supported" attribute, | |||
| format" attribute, if supplied (see "document-format" | the Printer MUST reject the request, and return the | |||
| operation attribute definition below). | 'client-error-compression-not-supported' status code. See | |||
| Section 4.1.7 for returning unsupported attributes and | ||||
| values. | ||||
| c. If the Client supplies the attribute and the Printer | ||||
| supports the attribute value, the Printer uses the | ||||
| corresponding decompression algorithm on the Document data. | ||||
| d. If the decompression algorithm fails before the Printer | ||||
| returns an operation response, the Printer MUST reject the | ||||
| request and return the 'client-error-compression-error' | ||||
| status code. | ||||
| e. If the decompression algorithm fails after the Printer | ||||
| returns an operation response, the Printer MUST abort the | ||||
| Job and add the 'compression-error' value to the Job's | ||||
| "job-state-reasons" attribute. | ||||
| f. If the decompression algorithm succeeds, the Document data | ||||
| MUST then have the format specified by the Job's "document- | ||||
| format" attribute, if supplied (see "document-format" | ||||
| operation attribute definition below). | ||||
| "document-format" (mimeMediaType): | "document-format" (mimeMediaType): | |||
| The client OPTIONALLY supplies this attribute. The Printer | ||||
| object MUST support this attribute. The value of this | ||||
| attribute identifies the format of the supplied document data. | ||||
| The following cases exist: | ||||
| a) If the client does not supply this attribute, the Printer | The Client MAY supply and the Printer MUST support this | |||
| object assumes that the document data is in the format | attribute. The value identifies the format of the supplied | |||
| defined by the Printer object's "document-format-default" | Document data. The following cases exist: | |||
| attribute. (i.e. the Printer follows the rules below as if | ||||
| the client supplied the "document-format" attribute with a | ||||
| value equal to the printer's default value). | ||||
| b) If the client supplies this attribute, but the value is not | ||||
| supported by the Printer object, i.e., the value is not one | ||||
| of the values of the Printer object's "document-format- | ||||
| supported" attribute, the Printer object MUST reject the | ||||
| request and return the 'client-error-document-format-not- | ||||
| supported' status code. | ||||
| c) If the client supplies this attribute and its value is | ||||
| 'application/octet-stream' (i.e. to be auto-sensed, see | ||||
| Section 4.1.9.1), and the format is not one of the | ||||
| document-formats that the Printer can auto-sense, and this | ||||
| check occurs before the Printer returns an operation | ||||
| response, then the Printer MUST reject the request and | ||||
| return the 'client-error-document-format-not-supported' | ||||
| status code. | ||||
| d) If the client supplies this attribute, and the value is | ||||
| supported by the Printer object, the Printer is capable of | ||||
| interpreting the document data. | ||||
| e) If interpreting of the document data fails before the | a. If the Client does not supply this attribute, the Printer | |||
| Printer returns an operation response, the Printer object | assumes that the Document data is in the format defined by | |||
| MUST reject the request and return the 'client-error- | the Printer's "document-format-default" attribute. (i.e. | |||
| document-format-error' status code. | the Printer follows the rules below as if the Client | |||
| f) If interpreting of the document data fails after the Printer | supplied the "document-format" attribute with a value equal | |||
| returns an operation response, the Printer object MUST abort | to the Printer's default value). | |||
| the job and add the 'document-format-error' value to the | ||||
| job's "job-state-reasons" attribute. | b. If the Client supplies this attribute, but the value is not | |||
| supported by the Printer, i.e., the value is not one of the | ||||
| values of the Printer's "document-format-supported" | ||||
| attribute, the Printer MUST reject the request and return | ||||
| the 'client-error-document-format-not-supported' status | ||||
| code. | ||||
| c. If the Client supplies this attribute and its value is | ||||
| 'application/octet-stream' (i.e., to be auto-sensed, see | ||||
| Section 5.1.10.1), and the format is not one of the | ||||
| Document formats that the Printer can auto-sense, and this | ||||
| check occurs before the Printer returns an operation | ||||
| response, then the Printer MUST reject the request and | ||||
| return the 'client-error-document-format-not-supported' | ||||
| status code. | ||||
| d. If the Client supplies this attribute, and the value is | ||||
| supported by the Printer, the Printer is capable of | ||||
| interpreting the Document data. | ||||
| e. If interpretation of the Document data fails before the | ||||
| Printer returns an operation response, the Printer MUST | ||||
| reject the request and return the 'client-error-document- | ||||
| format-error' status code. | ||||
| f. If interpretation of the Document data fails after the | ||||
| Printer returns an operation response, the Printer MUST | ||||
| abort the Job and add the 'document-format-error' value to | ||||
| the Job's "job-state-reasons" attribute. | ||||
| "document-natural-language" (naturalLanguage): | "document-natural-language" (naturalLanguage): | |||
| The client OPTIONALLY supplies this attribute. The Printer | ||||
| object OPTIONALLY supports this attribute. This attribute | The Client MAY supply and the Printer SHOULD support this | |||
| specifies the natural language of the document for those | attribute. The value specifies the natural language of the | |||
| document-formats that require a specification of the natural | Document content for those Document formats that require a | |||
| language in order to image the document unambiguously. There | specification of the natural language in order to properly | |||
| are no particular values required for the Printer object to | image the Document. | |||
| support. | ||||
| "job-k-octets" (integer(0:MAX)): | "job-k-octets" (integer(0:MAX)): | |||
| The client OPTIONALLY supplies this attribute. The Printer | ||||
| object OPTIONALLY supports this attribute and the "job-k- | The Client MAY supply and the Printer SHOULD support this | |||
| octets-supported" attribute (see section 4.4.33). The client | attribute. The Client supplied "job-k-octets" operation | |||
| supplied "job-k-octets" operation attribute identifies the | attribute identifies the total size of the Document(s) in K | |||
| total size of the document(s) in K octets being submitted (see | octets being submitted (see Section 5.3.17.1 for the complete | |||
| section 4.3.17.1 for the complete semantics). If the client | semantics). If the Client supplies the attribute and the | |||
| supplies the attribute and the Printer object supports the | Printer supports the attribute, the value of the attribute is | |||
| attribute, the value of the attribute is used to populate the | used to populate the Job's "job-k-octets" Job Description | |||
| Job object's "job-k-octets" Job Description attribute. | attribute. | |||
| For this attribute and the following two attributes ("job- | For this attribute and the following two attributes ("job- | |||
| impressions", and "job-media-sheets"), if the client supplies | impressions", and "job-media-sheets"), if the Client supplies | |||
| the attribute, but the Printer object does not support the | the attribute, but the Printer does not support the attribute, | |||
| attribute, the Printer object ignores the client-supplied | the Printer ignores the Client-supplied value. If the Client | |||
| value. If the client supplies the attribute and the Printer | supplies the attribute and the Printer supports the attribute, | |||
| supports the attribute, and the value is within the range of | and the value is within the range of the corresponding | |||
| the corresponding Printer object's "xxx-supported" attribute, | Printer's "xxx-supported" attribute, the Printer MUST use the | |||
| the Printer object MUST use the value to populate the Job | value to populate the Job's "xxx" attribute. If the Client | |||
| object's "xxx" attribute. If the client supplies the attribute | supplies the attribute and the Printer supports the attribute, | |||
| and the Printer supports the attribute, but the value is | but the value is outside the range of the corresponding | |||
| outside the range of the corresponding Printer object's "xxx- | Printer's "xxx-supported" attribute, the Printer MUST copy the | |||
| supported" attribute, the Printer object MUST copy the | attribute and its value to the Unsupported Attributes group, | |||
| attribute and its value to the Unsupported Attributes response | reject the request, and return the 'client-error-attributes-or- | |||
| group, reject the request, and return the 'client-error- | values-not-supported' status code. If the Client does not | |||
| attributes-or-values-not-supported' status code. If the client | supply the attribute, the Printer SHOULD populate the | |||
| does not supply the attribute, the Printer object MAY choose to | corresponding Job attribute if it supports the attribute and is | |||
| populate the corresponding Job object attribute depending on | able to calculate or discern the correct value. | |||
| whether the Printer object supports the attribute and is able | ||||
| to calculate or discern the correct value. | ||||
| "job-impressions" (integer(0:MAX)): | "job-impressions" (integer(0:MAX)): | |||
| The client OPTIONALLY supplies this attribute. The Printer | ||||
| object OPTIONALLY supports this attribute and the "job- | The Client MAY supply and the Printer SHOULD support this | |||
| impressions-supported" attribute (see section 4.4.34). The | attribute. The Client supplied "job-impressions" operation | |||
| client supplied "job-impressions" operation attribute | attribute identifies the total size in number of Impressions of | |||
| identifies the total size in number of impressions of the | the Document(s) being submitted (see Section 5.3.17.2 for the | |||
| document(s) being submitted (see section 4.3.17.2 for the | ||||
| complete semantics). | complete semantics). | |||
| See last paragraph under "job-k-octets". | See last paragraph under "job-k-octets". | |||
| "job-media-sheets" (integer(0:MAX)): | "job-media-sheets" (integer(0:MAX)): | |||
| The client OPTIONALLY supplies this attribute. The Printer | ||||
| object OPTIONALLY supports this attribute and the "job-media- | The Client MAY supply and the Printer SHOULD support this | |||
| sheets-supported" attribute (see section 4.4.35). The client | attribute. The Client supplied "job-media-sheets" operation | |||
| supplied "job-media-sheets" operation attribute identifies the | attribute identifies the total number of Media Sheets to be | |||
| total number of media sheets to be produced for this job (see | produced for this Job (see Section 5.3.17.3 for the complete | |||
| section 4.3.17.3 for the complete semantics). | semantics). | |||
| See last paragraph under "job-k-octets". | See last paragraph under "job-k-octets". | |||
| Group 2: Job Template Attributes | Group 2: Job Template Attributes | |||
| The client OPTIONALLY supplies a set of Job Template attributes as | The Client MAY supply a set of Job Template attributes as defined | |||
| defined in section 4.2. If the client is not supplying any Job | in Section 5.2. If the Client is not supplying any Job Template | |||
| Template attributes in the request, the client SHOULD omit Group 2 | attributes in the request, the Client SHOULD omit Group 2 rather | |||
| rather than sending an empty group. However, a Printer object | than sending an empty group. However, a Printer MUST be able to | |||
| MUST be able to accept an empty group. | accept an empty group. | |||
| Group 3: Document Content | Group 3: Document Data | |||
| The client MUST supply the document data to be processed. | The Client MUST supply the Document data to be processed. | |||
| In addition to the MANDATORY parameters required for every | The simplest Print-Job Request consists of just the "attributes- | |||
| operation request, the simplest Print-Job Request consists of just | charset" and "attributes-natural-language" operation attributes, the | |||
| the "attributes-charset" and "attributes-natural-language" | "printer-uri" target operation attribute, and the Document Data. In | |||
| operation attributes; the "printer-uri" target operation | this simple case, the Printer: | |||
| attribute; the Document Content and nothing else. In this simple | ||||
| case, the Printer object: | ||||
| - creates a new Job object (the Job object contains a single | o creates a new Job containing a single Document, | |||
| document), | ||||
| - stores a generated Job name in the "job-name" attribute in the | ||||
| natural language and charset requested (see Section 3.1.4.1) (if | ||||
| those are supported, otherwise using the Printer object's | ||||
| default natural language and charset), and | ||||
| - at job processing time, uses its corresponding default value | o stores a generated Job name in the "job-name" attribute in the | |||
| attributes for the supported Job Template attributes that were | natural language and charset requested (see Section 4.1.4.1) (if | |||
| not supplied by the client as IPP attribute or embedded | those are supported, otherwise using the Printer's default natural | |||
| instructions in the document data. | language and charset), and | |||
| 3.2.1.2 Print-Job Response | o at Job processing time, uses its corresponding default value | |||
| attributes for the supported Job Template attributes that were not | ||||
| supplied by the Client as IPP attribute or embedded instructions | ||||
| in the Document data. | ||||
| The Printer object MUST return to the client the following sets of | 4.2.1.2. Print-Job Response | |||
| The Printer MUST return to the Client the following sets of | ||||
| attributes as part of the Print-Job Response: | attributes as part of the Print-Job Response: | |||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Natural Language and Character Set: | ||||
| The "attributes-charset" and "attributes-natural-language" | ||||
| attributes as described in Section 4.1.4.2. | ||||
| Status Message: | Status Message: | |||
| In addition to the REQUIRED status code returned in every | In addition to the REQUIRED status code returned in every | |||
| response, the response OPTIONALLY includes a "status-message" | response, the response MAY include a "status-message" | |||
| (text(255)) and/or a "detailed-status-message" (text(MAX)) | (text(255)) and/or a "detailed-status-message" (text(MAX)) | |||
| operation attribute as described in sections 13 and 3.1.6. If | operation attribute as described in Appendix B and | |||
| the client supplies unsupported or conflicting Job Template | Section 4.1.6. If the Client supplies unsupported or | |||
| attributes or values, the Printer object MUST reject or accept | conflicting Job Template attributes or values, the Printer MUST | |||
| the Print-Job request depending on the whether the client | reject or accept the Print-Job request depending on the whether | |||
| supplied a 'true' or 'false' value for the "ipp-attribute- | the Client supplied a 'true' or 'false' value for the "ipp- | |||
| fidelity" operation attribute. See the Implementer's Guide | attribute-fidelity" operation attribute. See the Implementor's | |||
| [IPP-IIG] for a complete description of the suggested steps for | Guides [RFC3196] [PWG5100.19] for a complete description of the | |||
| processing a create request. | suggested steps for processing a Job Creation request. | |||
| Natural Language and Character Set: | ||||
| The "attributes-charset" and "attributes-natural-language" | ||||
| attributes as described in section 3.1.4.2. | ||||
| Group 2: Unsupported Attributes | Group 2: Unsupported Attributes | |||
| See section 3.1.7 for details on returning Unsupported Attributes. | See Section 4.1.7 for details on returning Unsupported Attributes. | |||
| The value of the "ipp-attribute-fidelity" supplied by the client | The value of the "ipp-attribute-fidelity" supplied by the Client | |||
| does not affect what attributes the Printer object returns in this | does not affect what attributes the Printer returns in this group. | |||
| group. The value of "ipp-attribute-fidelity" only affects whether | The value of "ipp-attribute-fidelity" only affects whether the | |||
| the Print-Job operation is accepted or rejected. If the job is | Print-Job operation is accepted or rejected. If the Job is | |||
| accepted, the client may query the job using the Get-Job- | accepted, the Client can query the Job using the Get-Job- | |||
| Attributes operation requesting the unsupported attributes that | Attributes operation requesting the unsupported attributes that | |||
| were returned in the create response to see which attributes were | were returned in the create response to see which attributes were | |||
| ignored (not stored on the Job object) and which attributes were | ignored (not stored on the Job) and which attributes were stored | |||
| stored with other (substituted) values. | with other (substituted) values. | |||
| Group 3: Job Object Attributes | Group 3: Job Attributes | |||
| "job-id" (integer(1:MAX)): | ||||
| The Printer MUST return the Job's ID in the REQUIRED "job-id" | ||||
| Job attribute. The Client uses this "job-id" attribute in | ||||
| conjunction with the "printer-uri" attribute used in the Print- | ||||
| Job Request when directing Job operations at the Printer. | ||||
| "job-uri" (uri): | "job-uri" (uri): | |||
| The Printer object MUST return the Job object's URI by | ||||
| returning the contents of the REQUIRED "job-uri" Job object | ||||
| attribute. The client uses the Job object's URI when directing | ||||
| operations at the Job object. The Printer object always uses | ||||
| its configured security policy when creating the new URI. | ||||
| However, if the Printer object supports more than one URI, the | ||||
| Printer object also uses information about which URI was used | ||||
| in the Print-Job Request to generated the new URI so that the | ||||
| new URI references the correct access channel. In other words, | ||||
| if the Print-Job Request comes in over a secure channel, the | ||||
| Printer object MUST generate a Job URI that uses the secure | ||||
| channel as well. | ||||
| "job-id" (integer(1:MAX)): | The Printer MUST return the Job's URI by returning the contents | |||
| The Printer object MUST return the Job object's Job ID by | of the REQUIRED "job-uri" Job attribute. | |||
| returning the REQUIRED "job-id" Job object attribute. The | ||||
| client uses this "job-id" attribute in conjunction with the | ||||
| "printer-uri" attribute used in the Print-Job Request when | ||||
| directing Job operations at the Printer object. | ||||
| "job-state" (type1 enum): | "job-state" (type1 enum): | |||
| The Printer object MUST return the Job object's REQUIRED "job- | ||||
| state" attribute. The value of this attribute (along with the | The Printer MUST return the Job's REQUIRED "job-state" | |||
| value of the next attribute: "job-state-reasons") is taken | attribute. The value of this attribute along with the value of | |||
| from a "snapshot" of the new Job object at some meaningful | the "job-state-reasons" attribute is a "snapshot" of the new | |||
| point in time (implementation defined) between when the Printer | Job's state when the Printer returns the response. | |||
| object receives the Print-Job Request and when the Printer | ||||
| object returns the response. | ||||
| "job-state-reasons" (1setOf type2 keyword): | "job-state-reasons" (1setOf type2 keyword): | |||
| The Printer object MUST return the Job object's REQUIRED "job- | ||||
| state-reasons" attribute. | The Printer MUST return the Job's REQUIRED "job-state-reasons" | |||
| attribute. | ||||
| "job-state-message" (text(MAX)): | "job-state-message" (text(MAX)): | |||
| The Printer object OPTIONALLY returns the Job object's OPTIONAL | ||||
| "job-state-message" attribute. If the Printer object supports | The Printer SHOULD return the Job's RECOMMENDED "job-state- | |||
| this attribute then it MUST be returned in the response. If | message" attribute. If the Printer supports this attribute | |||
| this attribute is not returned in the response, the client can | then it MUST be returned in the response. If this attribute is | |||
| assume that the "job-state-message" attribute is not supported | not returned in the response, the Client can assume that the | |||
| and will not be returned in a subsequent Job object query. | "job-state-message" attribute is not supported and will not be | |||
| returned in a subsequent Job query. | ||||
| "number-of-intervening-jobs" (integer(0:MAX)): | "number-of-intervening-jobs" (integer(0:MAX)): | |||
| The Printer object OPTIONALLY returns the Job object's OPTIONAL | ||||
| "number-of-intervening-jobs" attribute. If the Printer object | ||||
| supports this attribute then it MUST be returned in the | ||||
| response. If this attribute is not returned in the response, | ||||
| the client can assume that the "number-of-intervening-jobs" | ||||
| attribute is not supported and will not be returned in a | ||||
| subsequent Job object query. | ||||
| Note: Since any printer state information which affects a job's | The Printer SHOULD return the Job's RECOMMENDED "number-of- | |||
| state is reflected in the "job-state" and "job-state-reasons" | intervening-jobs" attribute. If the Printer supports this | |||
| attributes, it is sufficient to return only these attributes | attribute then it MUST be returned in the response. If this | |||
| and no specific printer status attributes. | attribute is not returned in the response, the Client can | |||
| assume that the "number-of-intervening-jobs" attribute is not | ||||
| supported and will not be returned in a subsequent Job query. | ||||
| Note: In addition to the MANDATORY parameters required for every | Note: Since any Printer state information which affects a Job's state | |||
| operation response, the simplest response consists of the just the | is reflected in the "job-state" and "job-state-reasons" attributes, | |||
| "attributes-charset" and "attributes-natural-language" operation | it is sufficient to return only these attributes and no additional | |||
| attributes and the "job-uri", "job-id", and "job-state" Job Object | Printer Status attributes. | |||
| Attributes. In this simplest case, the status code is 'successful- | ||||
| ok' and there is no "status-message" or "detailed-status-message" | ||||
| operation attribute. | ||||
| 3.2.2 Print-URI Operation | Note: The simplest response consists of the just the "attributes- | |||
| charset" and "attributes-natural-language" operation attributes and | ||||
| the "job-uri", "job-id", and "job-state" Job attributes. In this | ||||
| simplest case, the status code is 'successful-ok' and there is no | ||||
| "status-message" or "detailed-status-message" operation attribute. | ||||
| 4.2.2. Print-URI Operation | ||||
| This OPTIONAL operation is identical to the Print-Job operation | This OPTIONAL operation is identical to the Print-Job operation | |||
| (section 3.2.1) except that a client supplies a URI reference to the | (Section 4.2.1) except that a Client supplies a URI reference to the | |||
| document data using the "document-uri" (uri) operation attribute (in | Document data using the "document-uri" (uri) operation attribute (in | |||
| Group 1) rather than including the document data itself. Before | Group 1) rather than including the Document data itself. Before | |||
| returning the response, the Printer MUST validate that the Printer | returning the response, the Printer MUST validate that the Printer | |||
| supports the retrieval method (e.g., http, ftp, etc.) implied by the | supports the retrieval method (e.g., 'http', 'ftp', etc.) implied by | |||
| URI, and MUST check for valid URI syntax. If the client-supplied URI | the URI, and MUST check for valid URI syntax. If the Client-supplied | |||
| scheme is not supported, i.e. the value is not in the Printer | URI scheme is not supported, i.e. the value is not in the Printer's | |||
| object's "referenced-uri-scheme-supported" attribute, the Printer | "referenced-uri-scheme-supported" attribute, the Printer MUST reject | |||
| object MUST reject the request and return the 'client-error-uri- | the request and return the 'client-error-uri-scheme-not-supported' | |||
| scheme-not-supported' status code. | status code. | |||
| The IPP Printer MAY validate the accessibility of the document as | The Printer MAY validate the accessibility of the Document as part of | |||
| part of the operation or subsequently. If the Printer determines an | the operation or subsequently. If the Printer discovers an | |||
| accessibility problem before returning an operation response, it | accessibility problem before returning an operation response, it MUST | |||
| rejects the request and returns the 'client-error-document-access- | reject the request and return the 'client-error-document-access- | |||
| error' status code. The Printer MAY also return a specific document | error' status code. The Printer MAY also return a specific Document | |||
| access error code using the "document-access-error" operation | access error code using the "document-access-error" operation | |||
| attribute (see section 3.1.6.4). | attribute (see Section 4.1.6.4). | |||
| If the Printer determines this document accessibility problem after | If the Printer discovers this Document accessibility problem after | |||
| accepting the request and returning an operation response with one of | accepting the request and returning an operation response with one of | |||
| the successful status codes, the Printer adds the 'document-access- | the successful status codes, the Printer MUST add the 'document- | |||
| error' value to the job's "job-state-reasons" attribute and MAY | access-error' value to the Job's "job-state-reasons" attribute and | |||
| populate the job's "job-document-access-errors" Job Description | MAY populate the Job's "job-document-access-errors" Job Status | |||
| attribute (see section 4.3.11). See The Implementer's Guide [IPP- | attribute (see Section 5.3.11). See The Implementor's Guides | |||
| IIG] for suggested additional checks. | [RFC3196] [PWG5100.19] for suggested additional checks. | |||
| If the Printer object supports this operation, it MUST support the | If the Printer supports this operation, it MUST support the | |||
| "reference-uri-schemes-supported" Printer attribute (see section | "reference-uri-schemes-supported" Printer attribute (see | |||
| 4.4.27). | Section 5.4.27). | |||
| It is up to the IPP object to interpret the URI and subsequently | It is up to the Printer to interpret the URI and subsequently "pull" | |||
| "pull" the document from the source referenced by the URI string. | the Document data from the source referenced by the URI string. | |||
| 3.2.3 Validate-Job Operation | 4.2.3. Validate-Job Operation | |||
| This REQUIRED operation is similar to the Print-Job operation | This REQUIRED operation is similar to the Print-Job operation | |||
| (section 3.2.1) except that a client supplies no document data and | (Section 4.2.1) except that a Client supplies no Document data and | |||
| the Printer allocates no resources (i.e., it does not create a new | the Printer allocates no resources, i.e., it does not create a new | |||
| Job object). This operation is used only to verify capabilities of a | Job. This operation is used only to verify capabilities of a Printer | |||
| printer object against whatever attributes are supplied by the client | against whatever attributes are supplied by the Client in the | |||
| in the Validate-Job request. By using the Validate-Job operation a | Validate-Job request. By using the Validate-Job operation a Client | |||
| client can validate that an identical Print-Job operation (with the | can validate that an identical Job Creation request (with the | |||
| document data) would be accepted. The Validate-Job operation also | Document data) would be accepted. The Validate-Job operation also | |||
| performs the same security negotiation as the Print-Job operation | performs the same security negotiation as the Print-Job, Print-URI, | |||
| (see section 8), so that a client can check that the client and | and Create-Job operations (see Section 9) so that a Client can check | |||
| Printer object security requirements can be met before performing a | that the Client and Printer security requirements can be met before | |||
| Print-Job operation. | performing a Job Creation request. | |||
| The Validate-Job operation does not accept a "document-uri" attribute | The Validate-Job operation does not accept a "document-uri" attribute | |||
| in order to allow a client to check that the same Print-URI operation | in order to allow a Client to check that the same Print-URI operation | |||
| will be accepted, since the client doesn't send the data with the | will be accepted, since the Client doesn't send the data with the | |||
| Print-URI operation. The client SHOULD just issue the Print-URI | Print-URI operation. The Client SHOULD just issue the Print-URI | |||
| request. | request. | |||
| The Printer object returns the same status codes, Operation | The Printer returns the same status codes, Operation Attributes | |||
| Attributes (Group 1) and Unsupported Attributes (Group 2) as the | (Group 1) and Unsupported Attributes (Group 2) as the Print-Job | |||
| Print-Job operation. However, no Job Object Attributes (Group 3) are | operation. However, no Job Attributes (Group 3) are returned, since | |||
| returned, since no Job object is created. | no Job is created. | |||
| 3.2.4 Create-Job Operation | 4.2.4. Create-Job Operation | |||
| This OPTIONAL operation is similar to the Print-Job operation | This RECOMMENDED operation is similar to the Print-Job operation | |||
| (section 3.2.1) except that in the Create-Job request, a client does | (Section 4.2.1) except that in the Create-Job request, a Client does | |||
| not supply document data or any reference to document data. Also, | not supply Document data or any reference to Document data. Also, | |||
| the client does not supply any of the "document-name", "document- | the Client does not supply any of the "document-name", "document- | |||
| format", "compression", or "document-natural-language" operation | format", "compression", or "document-natural-language" operation | |||
| attributes. This operation is followed by one or more Send-Document | attributes. This operation is followed by one or more Send-Document | |||
| or Send-URI operations. In each of those operation requests, the | or Send-URI operations. In each of those operation requests, the | |||
| client OPTIONALLY supplies the "document-name", "document-format", | Client MAY supply the "document-name", "document-format", and | |||
| and "document-natural-language" attributes for each document in the | "document-natural-language" attributes for each Document in the Job. | |||
| multi-document Job object. | ||||
| If a Printer object supports the Create-Job operation, it MUST also | If a Printer supports the Create-Job operation, it MUST also support | |||
| support the Send-Document operation and also MAY support the Send-URI | the Send-Document operation. If the Printer supports the Create-Job | |||
| and Print-URI operations, it MUST also support the Send-URI | ||||
| operation. | operation. | |||
| If the Printer object supports this operation, it MUST support the | If the Printer supports this operation, it MUST support the | |||
| "multiple-operation-time-out" Printer attribute (see section 4.4.31). | "multiple-operation-time-out" Printer attribute (see Section 5.4.31). | |||
| If the Printer object supports this operation, then it MUST support | If the Printer supports this operation, then it MUST support the | |||
| the "multiple-document-jobs-supported" Printer Description attribute | "multiple-document-jobs-supported" Printer Description attribute (see | |||
| (see section 4.4.16) and indicate whether or not it supports | Section 5.4.16) and indicate whether it supports multiple-document | |||
| multiple-document jobs. | Jobs. | |||
| If the Printer object supports this operation and supports multiple | If the Printer supports this operation and supports multiple | |||
| documents in a job, then it MUST support the "multiple-document- | Documents in a job, then it MUST support the "multiple-document- | |||
| handling" Job Template job attribute with at least one value (see | handling" Job Template attribute with at least one value (see | |||
| section 4.2.4) and the associated "multiple-document-handling- | Section 5.2.4) and the associated "multiple-document-handling- | |||
| default" and "multiple-document-handling-supported" Job Template | default" and "multiple-document-handling-supported" Printer | |||
| Printer attributes (see section 4.2). | attributes (see Section 5.2). | |||
| After the Create-Job operation has completed, the value of the "job- | After the Create-Job operation has completed, the value of the "job- | |||
| state" attribute is similar to the "job-state" after a Print-Job, | state" attribute is similar to the "job-state" after a Print-Job, | |||
| even though no document-data has arrived. A Printer MAY set the | even though no Document data has arrived. A Printer MAY set the | |||
| 'job-data-insufficient' value of the job's "job-state-reason" | 'job-data-insufficient' value of the Job's "job-state-reason" | |||
| attribute to indicate that processing cannot begin until sufficient | attribute to indicate that processing cannot begin until sufficient | |||
| data has arrived and set the "job-state" to either 'pending' or | data has arrived and set the "job-state" to either 'pending' or | |||
| 'pending-held'. A non-spooling printer that doesn't implement the | 'pending-held'. A non-spooling Printer that doesn't implement the | |||
| 'pending' job state may even set the "job-state" to 'processing', | 'pending' Job state Clients even set the "job-state" to 'processing', | |||
| even though there is not yet any data to process. See sections 4.3.7 | even though there is not yet any data to process. See Sections 5.3.7 | |||
| and 4.3.8. | and 5.3.8. | |||
| 3.2.5 Get-Printer-Attributes Operation | 4.2.5. Get-Printer-Attributes Operation | |||
| This REQUIRED operation allows a client to request the values of the | This REQUIRED operation allows a Client to request the values of the | |||
| attributes of a Printer object. In the request, the client supplies | attributes of a Printer. In the request, the Client supplies the set | |||
| the set of Printer attribute names and/or attribute group names in | of Printer attribute names and/or attribute group names in which the | |||
| which the requester is interested. In the response, the Printer | requester is interested. In the response, the Printer returns a | |||
| object returns a corresponding attribute set with the appropriate | corresponding attribute set with the appropriate attribute values | |||
| attribute values filled in. | filled in. | |||
| For Printer objects, the possible names of attribute groups are: | For Printers, the possible names of attribute groups are: | |||
| - 'job-template': the subset of the Job Template attributes that | o 'job-template': the subset of the Job Template attributes that | |||
| apply to a Printer object (the last two columns of the table in | apply to a Printer (the last two columns of the table in | |||
| Section 4.2) that the implementation supports for Printer | Section 5.2) that the implementation supports for Printers. | |||
| objects. | ||||
| - 'printer-description': the subset of the attributes specified in | ||||
| Section 4.4 that the implementation supports for Printer | ||||
| objects. | ||||
| - 'all': the special group 'all' that includes all attributes that | o 'printer-description': the subset of the attributes specified in | |||
| the implementation supports for Printer objects. | Section 5.4 that the implementation supports for Printers. | |||
| Since a client MAY request specific attributes or named groups, there | o 'all': the special group 'all' that includes all attributes that | |||
| is a potential that there is some overlap. For example, if a client | the implementation supports for Printers. | |||
| requests, 'printer-name' and 'all', the client is actually requesting | ||||
| Since a Client MAY request specific attributes or named groups, there | ||||
| is a potential that there is some overlap. For example, if a Client | ||||
| requests, 'printer-name' and 'all', the Client is actually requesting | ||||
| the "printer-name" attribute twice: once by naming it explicitly, and | the "printer-name" attribute twice: once by naming it explicitly, and | |||
| once by inclusion in the 'all' group. In such cases, the Printer | once by inclusion in the 'all' group. In such cases, the Printer | |||
| object NEED NOT return each attribute only once in the response even | returns each attribute only once in the response even if it is | |||
| if it is requested multiple times. The client SHOULD NOT request the | requested multiple times. The Client SHOULD NOT request the same | |||
| same attribute in multiple ways. | attribute in multiple ways. | |||
| It is NOT REQUIRED that a Printer object support all attributes | Printers MUST support all group names and MUST return all supported | |||
| belonging to a group (since some attributes are OPTIONAL). However, | attributes belonging to the group. | |||
| it is REQUIRED that each Printer object support all group names. | ||||
| 3.2.5.1 Get-Printer-Attributes Request | 4.2.5.1. Get-Printer-Attributes Request | |||
| The following sets of attributes are part of the Get-Printer- | The following sets of attributes are part of the Get-Printer- | |||
| Attributes Request: | Attributes Request: | |||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Natural Language and Character Set: | Natural Language and Character Set: | |||
| The "attributes-charset" and "attributes-natural-language" | The "attributes-charset" and "attributes-natural-language" | |||
| attributes as described in section 3.1.4.1. | attributes as described in Section 4.1.4.1. | |||
| Target: | Target: | |||
| The "printer-uri" (uri) operation attribute which is the target | The "printer-uri" (uri) operation attribute which is the target | |||
| for this operation as described in section 3.1.5. | for this operation as described in Section 4.1.5. | |||
| Requesting User Name: | Requesting User Name: | |||
| The "requesting-user-name" (name(MAX)) attribute SHOULD be | The "requesting-user-name" (name(MAX)) attribute SHOULD be | |||
| supplied by the client as described in section 8.3. | supplied by the Client as described in Section 9.3. | |||
| "requested-attributes" (1setOf keyword): | "requested-attributes" (1setOf keyword): | |||
| The client OPTIONALLY supplies a set of attribute names and/or | ||||
| attribute group names in whose values the requester is | The Client MAY supply a set of attribute names and/or attribute | |||
| interested. The Printer object MUST support this attribute. | group names in whose values the requester is interested. The | |||
| If the client omits this attribute, the Printer MUST respond as | Printer MUST support this attribute. If the Client omits this | |||
| if this attribute had been supplied with a value of 'all'. | attribute, the Printer MUST respond as if this attribute had | |||
| been supplied with a value of 'all'. | ||||
| "document-format" (mimeMediaType): | "document-format" (mimeMediaType): | |||
| The client OPTIONALLY supplies this attribute. The Printer | ||||
| object MUST support this attribute. This attribute is useful | ||||
| for a Printer object to determine the set of supported | ||||
| attribute values that relate to the requested document format. | ||||
| The Printer object MUST return the attributes and values that | ||||
| it uses to validate a job on a create or Validate-Job operation | ||||
| in which this document format is supplied. The Printer object | ||||
| SHOULD return only (1) those attributes that are supported for | ||||
| the specified format and (2) the attribute values that are | ||||
| supported for the specified document format. By specifying the | ||||
| document format, the client can get the Printer object to | ||||
| eliminate the attributes and values that are not supported for | ||||
| a specific document format. For example, a Printer object | ||||
| might have multiple interpreters to support both | ||||
| 'application/postscript' (for PostScript) and 'text/plain' (for | ||||
| text) documents. However, for only one of those interpreters | ||||
| might the Printer object be able to support "number-up" with | ||||
| values of '1', '2', and '4'. For the other interpreter it | ||||
| might be able to only support "number-up" with a value of '1'. | ||||
| Thus a client can use the Get-Printer-Attributes operation to | ||||
| obtain the attributes and values that will be used to | ||||
| accept/reject a create job operation. | ||||
| If the Printer object does not distinguish between different | The Client MAY supply and the Printer MUST support this | |||
| sets of supported values for each different document format | attribute. It is useful for a Client to determine the set of | |||
| when validating jobs in the create and Validate-Job operations, | supported attribute values that relate to the requested | |||
| it MUST NOT distinguish between different document formats in | Document format. The Printer MUST return the attributes and | |||
| the Get-Printer-Attributes operation. If the Printer object | values that it uses to validate a Job on a create or Validate- | |||
| does distinguish between different sets of supported values for | Job operation in which this Document format is supplied. The | |||
| each different document format specified by the client, this | Printer SHOULD return only (1) those attributes that are | |||
| specialization applies only to the following Printer object | supported for the specified format and (2) the attribute values | |||
| that are supported for the specified Document format. By | ||||
| specifying the Document format, the Client can get the Printer | ||||
| to eliminate the attributes and values that are not supported | ||||
| for a specific Document format. For example, a Printer might | ||||
| have multiple interpreters to support both 'application/ | ||||
| postscript' (for PostScript) and 'text/plain' (for text) | ||||
| Documents. However, only one of those interpreters might | ||||
| support the "number-up" Job Template attribute with values of | ||||
| '1', '2', and '4'. The other interpreter might only be able to | ||||
| support the "number-up" Job Template attribute with a value of | ||||
| '1'. Thus a Client can use the Get-Printer-Attributes | ||||
| operation to obtain the attributes and values that will be used | ||||
| to accept/reject a Job Creation request. | ||||
| If the Printer does not distinguish between different sets of | ||||
| supported values for each different Document format when | ||||
| validating Jobs in the create and Validate-Job operations, it | ||||
| MUST NOT distinguish between different Document formats in the | ||||
| Get-Printer-Attributes operation. If the Printer does | ||||
| distinguish between different sets of supported values for each | ||||
| different Document format specified by the Client, this | ||||
| specialization applies only to the following Printer | ||||
| attributes: | attributes: | |||
| - Printer attributes that are Job Template attributes ("xxx- | + Printer attributes that are Job Template attributes ("xxx- | |||
| default" "xxx-supported", and "xxx-ready" in the Table in | default" "xxx-supported", and "xxx-ready" in the Table in | |||
| Section 4.2), | Section 5.2), | |||
| - "pdl-override-supported", | ||||
| - "compression-supported", | ||||
| - "job-k-octets-supported", | ||||
| - "job-impressions-supported", | ||||
| - "job-media-sheets-supported", | ||||
| - "printer-driver-installer", | ||||
| - "color-supported", and | ||||
| - "reference-uri-schemes-supported" | ||||
| The values of all other Printer object attributes (including | + "pdl-override-supported", | |||
| "document-format-supported") remain invariant with respect to the | ||||
| client supplied document format (except for new Printer | ||||
| description attribute as registered according to section 6.2). | ||||
| If the client omits this "document-format" operation attribute, | + "compression-supported", | |||
| the Printer object MUST respond as if the attribute had been | ||||
| supplied with the value of the Printer object's "document-format- | ||||
| default" attribute. It is RECOMMENDED that the client always | ||||
| supply a value for "document-format", since the Printer object's | ||||
| "document-format-default" may be 'application/octet-stream', in | ||||
| which case the returned attributes and values are for the union of | ||||
| the document formats that the Printer can automatically sense. | ||||
| For more details, see the description of the 'mimeMediaType' | ||||
| attribute syntax in section 4.1.9. | ||||
| If the client supplies a value for the "document-format" Operation | + "job-k-octets-supported", | |||
| attribute that is not supported by the Printer, i.e., is not among | ||||
| the values of the Printer object's "document-format-supported" | ||||
| attribute, the Printer object MUST reject the operation and return | ||||
| the 'client-error-document-format-not-supported' status code. | ||||
| 3.2.5.2 Get-Printer-Attributes Response | + "job-impressions-supported, | |||
| The Printer object returns the following sets of attributes as part | + "job-media-sheets-supported" | |||
| of the Get-Printer-Attributes Response: | ||||
| + "printer-driver-installer", | ||||
| + "color-supported", and | ||||
| + "reference-uri-schemes-supported" | ||||
| The values of all other Printer attributes (including | ||||
| "document-format-supported") remain invariant with respect to | ||||
| the Client supplied Document format (except for new Printer | ||||
| Description attribute as registered according to Section 7.2). | ||||
| If the Client omits this "document-format" operation attribute, | ||||
| the Printer MUST respond as if the attribute had been supplied | ||||
| with the value of the Printer's "document-format-default" | ||||
| attribute. Clients SHOULD always supply a value for "document- | ||||
| format", since the Printer's "document-format-default" Clients | ||||
| be 'application/octet-stream', in which case the returned | ||||
| attributes and values are for the union of the Document formats | ||||
| that the Printer can automatically sense. For more details, | ||||
| see the description of the 'mimeMediaType' attribute syntax in | ||||
| Section 5.1.10. | ||||
| If the Client supplies a value for the "document-format" | ||||
| operation attribute that is not supported by the Printer, i.e., | ||||
| is not among the values of the Printer's "document-format- | ||||
| supported" attribute, the Printer MUST reject the operation and | ||||
| return the 'client-error-document-format-not-supported' status | ||||
| code. | ||||
| 4.2.5.2. Get-Printer-Attributes Response | ||||
| The Printer returns the following sets of attributes as part of the | ||||
| Get-Printer-Attributes Response: | ||||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Natural Language and Character Set: | ||||
| The "attributes-charset" and "attributes-natural-language" | ||||
| attributes as described in Section 4.1.4.2. | ||||
| Status Message: | Status Message: | |||
| In addition to the REQUIRED status code returned in every | ||||
| response, the response OPTIONALLY includes a "status-message" | ||||
| (text(255)) and/or a "detailed-status-message" (text(MAX)) | ||||
| operation attribute as described in sections 13 and 3.1.6. | ||||
| Natural Language and Character Set: | In addition to the REQUIRED status code returned in every | |||
| The "attributes-charset" and "attributes-natural-language" | response, the response MAY include a "status-message" | |||
| attributes as described in section 3.1.4.2. | (text(255)) and/or a "detailed-status-message" (text(MAX)) | |||
| operation attribute as described in Appendix B and | ||||
| Section 4.1.6. | ||||
| Group 2: Unsupported Attributes | Group 2: Unsupported Attributes | |||
| See section 3.1.7 for details on returning Unsupported Attributes. | See Section 4.1.7 for details on returning Unsupported Attributes. | |||
| The response NEED NOT contain the "requested-attributes" operation | The response MAY contain the "requested-attributes" operation | |||
| attribute with any supplied values (attribute keywords) that were | attribute with any supplied values (attribute keywords) that were | |||
| requested by the client but are not supported by the IPP object. | requested by the Client but are not supported by the Printer. If | |||
| If the Printer object does return unsupported attributes | the Printer does return unsupported attributes referenced in the | |||
| referenced in the "requested-attributes" operation attribute and | "requested-attributes" operation attribute and that attribute | |||
| that attribute included group names, such as 'all', the | included group names, such as 'all', the unsupported attributes | |||
| unsupported attributes MUST NOT include attributes described in | MUST NOT include attributes described in the standard but not | |||
| the standard but not supported by the implementation. | supported by the implementation. | |||
| Group 3: Printer Object Attributes | Group 3: Printer Attributes | |||
| This is the set of requested attributes and their current values. | This is the set of requested attributes and their current values. | |||
| The Printer object ignores (does not respond with) any requested | The Printer ignores (does not respond with) any requested | |||
| attribute which is not supported. The Printer object MAY respond | attribute which is not supported. The Printer MAY respond with a | |||
| with a subset of the supported attributes and values, depending on | subset of the supported attributes and values, depending on the | |||
| the security policy in force. However, the Printer object MUST | security policy in force. However, the Printer MUST respond with | |||
| respond with the 'unknown' value for any supported attribute | the 'unknown' value for any supported attribute (including all | |||
| (including all REQUIRED attributes) for which the Printer object | REQUIRED attributes) for which the Printer does not know the | |||
| does not know the value. Also the Printer object MUST respond | value. Also the Printer MUST respond with the 'no-value' for any | |||
| with the 'no-value' for any supported attribute (including all | supported attribute (including all REQUIRED attributes) for which | |||
| REQUIRED attributes) for which the system administrator has not | the Adminstrator has not configured a value. See the description | |||
| configured a value. See the description of the "out-of-band" | of the "out-of-band" values in the beginning of Section 5.1. | |||
| values in the beginning of Section 4.1. | ||||
| 3.2.6 Get-Jobs Operation | 4.2.6. Get-Jobs Operation | |||
| This REQUIRED operation allows a client to retrieve the list of Job | This REQUIRED operation allows a Client to retrieve the list of Jobs | |||
| objects belonging to the target Printer object. The client may also | belonging to the target Printer. The Client can also supply a list | |||
| supply a list of Job attribute names and/or attribute group names. A | of Job attribute names and/or attribute group names. A group of Job | |||
| group of Job object attributes will be returned for each Job object | attributes will be returned for each Job that is returned. | |||
| that is returned. | ||||
| This operation is similar to the Get-Job-Attributes operation, except | This operation is similar to the Get-Job-Attributes operation, except | |||
| that this Get-Jobs operation returns attributes from possibly more | that this Get-Jobs operation returns attributes from possibly more | |||
| than one object. | than one Job. | |||
| 3.2.6.1 Get-Jobs Request | 4.2.6.1. Get-Jobs Request | |||
| The client submits the Get-Jobs request to a Printer object. | The Client submits the Get-Jobs request to a Printer. | |||
| The following groups of attributes are part of the Get-Jobs Request: | The following groups of attributes are part of the Get-Jobs Request: | |||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Natural Language and Character Set: | Natural Language and Character Set: | |||
| The "attributes-charset" and "attributes-natural-language" | The "attributes-charset" and "attributes-natural-language" | |||
| attributes as described in section 3.1.4.1. | attributes as described in Section 4.1.4.1. | |||
| Target: | Target: | |||
| The "printer-uri" (uri) operation attribute which is the target | The "printer-uri" (uri) operation attribute which is the target | |||
| for this operation as described in section 3.1.5. | for this operation as described in Section 4.1.5. | |||
| Requesting User Name: | Requesting User Name: | |||
| The "requesting-user-name" (name(MAX)) attribute SHOULD be | The "requesting-user-name" (name(MAX)) attribute SHOULD be | |||
| supplied by the client as described in section 8.3. | supplied by the Client as described in Section 9.3. | |||
| "limit" (integer(1:MAX)): | "limit" (integer(1:MAX)): | |||
| The client OPTIONALLY supplies this attribute. The Printer | ||||
| object MUST support this attribute. It is an integer value that | The Client MAY supply and the Printer MUST support this | |||
| determines the maximum number of jobs that a client will | attribute. It is an integer value that determines the maximum | |||
| receive from the Printer even if "which-jobs" or "my-jobs" | number of Jobs that a Client will receive from the Printer even | |||
| constrain which jobs are returned. The limit is a "stateless | if "which-jobs" or "my-jobs" constrain which Jobs are returned. | |||
| limit" in that if the value supplied by the client is 'N', then | The limit is a "stateless limit" in that if the value supplied | |||
| only the first 'N' jobs are returned in the Get-Jobs Response. | by the Client is 'N', then only the first 'N' Jobs are returned | |||
| There is no mechanism to allow for the next 'M' jobs after the | in the Get-Jobs Response. If the Client does not supply this | |||
| first 'N' jobs. If the client does not supply this attribute, | attribute, the Printer responds with all applicable Jobs. | |||
| the Printer object responds with all applicable jobs. | ||||
| "requested-attributes" (1setOf type2 keyword): | "requested-attributes" (1setOf type2 keyword): | |||
| The client OPTIONALLY supplies this attribute. The Printer | ||||
| object MUST support this attribute. It is a set of Job | The Client MAY supply and the Printer MUST support this | |||
| attribute names and/or attribute groups names in whose values | attribute. It is a set of Job attribute names and/or attribute | |||
| the requester is interested. This set of attributes is | groups names in whose values the requester is interested. This | |||
| returned for each Job object that is returned. The allowed | set of attributes is returned for each Job that is returned. | |||
| attribute group names are the same as those defined in the | The allowed attribute group names are the same as those defined | |||
| Get-Job-Attributes operation in section 3.3.4. If the client | in the Get-Job-Attributes operation in Section 4.3.4. If the | |||
| does not supply this attribute, the Printer MUST respond as if | Client does not supply this attribute, the Printer MUST respond | |||
| the client had supplied this attribute with two values: 'job- | as if the Client had supplied this attribute with two values: | |||
| uri' and 'job-id'. | 'job-uri' and 'job-id'. | |||
| "which-jobs" (type2 keyword): | "which-jobs" (type2 keyword): | |||
| The client OPTIONALLY supplies this attribute. The Printer | ||||
| object MUST support this attribute. It indicates which Job | ||||
| objects MUST be returned by the Printer object. The values for | ||||
| this attribute are: | ||||
| 'completed': This includes any Job object whose state is | The Client MAY supply and the Printer MUST support this | |||
| 'completed', 'canceled', or 'aborted'. | attribute. It indicates which Jobs MUST be returned by the | |||
| 'not-completed': This includes any Job object whose state is | Printer. The values for this attribute include: | |||
| 'pending', 'processing', 'processing-stopped', or 'pending- | ||||
| held'. | ||||
| A Printer object MUST support both values. However, if the | + 'completed': Any Job whose state is 'completed', 'canceled', | |||
| implementation does not keep jobs in the 'completed', | or 'aborted'. | |||
| 'canceled', and 'aborted' states, then it returns no jobs when | ||||
| + 'not-completed': Any Job whose state is 'pending', | ||||
| 'processing', 'processing-stopped', or 'pending-held'. | ||||
| A Printer MUST support both values. However, if the | ||||
| implementation does not keep Jobs in the 'completed', | ||||
| 'canceled', and 'aborted' states, then it returns no Jobs when | ||||
| the 'completed' value is supplied. | the 'completed' value is supplied. | |||
| If a client supplies some other value, the Printer object MUST | If a Client supplies some other value that is not supported by | |||
| copy the attribute and the unsupported value to the Unsupported | the Printer, the Printer MUST copy the attribute and the | |||
| Attributes response group, reject the request, and return the | unsupported value to the Unsupported Attributes group, reject | |||
| 'client-error-attributes-or-values-not-supported' status code. | the request, and return the 'client-error-attributes-or-values- | |||
| not-supported' status code. | ||||
| If the client does not supply this attribute, the Printer | If the Client does not supply this attribute, the Printer MUST | |||
| object MUST respond as if the client had supplied the attribute | respond as if the Client had supplied the attribute with a | |||
| with a value of 'not-completed'. | value of 'not-completed'. | |||
| "my-jobs" (boolean): | "my-jobs" (boolean): | |||
| The client OPTIONALLY supplies this attribute. The Printer | ||||
| object MUST support this attribute. It indicates whether jobs | ||||
| from all users or just the jobs submitted by the requesting | ||||
| user of this request MUST be considered as candidate jobs to be | ||||
| returned by the Printer object. If the client does not supply | ||||
| this attribute, the Printer object MUST respond as if the | ||||
| client had supplied the attribute with a value of 'false', | ||||
| i.e., jobs from all users. The means for authenticating the | ||||
| requesting user and matching the jobs is described in section | ||||
| 8. | ||||
| 3.2.6.2 Get-Jobs Response | The Client MAY supply and the Printer MUST support this | |||
| attribute. It indicates whether Jobs from all users or just | ||||
| the Jobs submitted by the requesting user of this request MUST | ||||
| be considered as candidate Jobs to be returned by the Printer. | ||||
| If the Client does not supply this attribute, the Printer MUST | ||||
| respond as if the Client had supplied the attribute with a | ||||
| value of 'false', i.e., Jobs from all users. The means for | ||||
| authenticating the requesting user and matching the Jobs is | ||||
| described in Section 9. | ||||
| The Printer object returns all of the Job objects up to the number | 4.2.6.2. Get-Jobs Response | |||
| specified by the "limit" attribute that match the criteria as defined | ||||
| by the attribute values supplied by the client in the request. It is | ||||
| possible that no Job objects are returned since there may literally | ||||
| be no Job objects at the Printer, or there may be no Job objects that | ||||
| match the criteria supplied by the client. If the client requests | ||||
| any Job attributes at all, there is a set of Job Object Attributes | ||||
| returned for each Job object. | ||||
| It is not an error for the Printer to return 0 jobs. If the response | The Printer returns all of the Jobs up to the number specified by the | |||
| returns 0 jobs because there are no jobs matching the criteria, and | "limit" attribute that match the criteria as defined by the attribute | |||
| the request would have returned 1 or more jobs with a status code of | values supplied by the Client in the request. It is possible that no | |||
| 'successful-ok' if there had been jobs matching the criteria, then | Jobs are returned since there can literally be no Jobs at the | |||
| the status code for 0 jobs MUST be 'successful-ok'. | Printer, or there can be no Jobs that match the criteria supplied by | |||
| the Client. If the Client requests any Job attributes at all, there | ||||
| is a set of Job Attributes returned for each Job. | ||||
| It is not an error for the Printer to return 0 Jobs. If the response | ||||
| returns 0 Jobs because there are no Jobs matching the criteria, and | ||||
| the request would have returned 1 or more Jobs with a status code of | ||||
| 'successful-ok' if there had been Jobs matching the criteria, then | ||||
| the status code for 0 Jobs MUST be 'successful-ok'. | ||||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Natural Language and Character Set: | ||||
| The "attributes-charset" and "attributes-natural-language" | ||||
| attributes as described in Section 4.1.4.2. | ||||
| Status Message: | Status Message: | |||
| In addition to the REQUIRED status code returned in every | ||||
| response, the response OPTIONALLY includes a "status-message" | ||||
| (text(255)) and/or a "detailed-status-message" (text(MAX)) | ||||
| operation attribute as described in sections 13 and 3.1.6. | ||||
| Natural Language and Character Set: | In addition to the REQUIRED status code returned in every | |||
| The "attributes-charset" and "attributes-natural-language" | response, the response MAY include a "status-message" | |||
| attributes as described in section 3.1.4.2. | (text(255)) and/or a "detailed-status-message" (text(MAX)) | |||
| operation attribute as described in Appendix B and | ||||
| Section 4.1.6. | ||||
| Group 2: Unsupported Attributes | Group 2: Unsupported Attributes | |||
| See section 3.1.7 for details on returning Unsupported Attributes. | See Section 4.1.7 for details on returning Unsupported Attributes. | |||
| The response NEED NOT contain the "requested-attributes" operation | The response MAY contain the "requested-attributes" operation | |||
| attribute with any supplied values (attribute keywords) that were | attribute with any supplied values (attribute keywords) that were | |||
| requested by the client but are not supported by the IPP object. | requested by the Client but are not supported by the Printer. If | |||
| If the Printer object does return unsupported attributes | the Printer does return unsupported attributes referenced in the | |||
| referenced in the "requested-attributes" operation attribute and | "requested-attributes" operation attribute and that attribute | |||
| that attribute included group names, such as 'all', the | included group names, such as 'all', the unsupported attributes | |||
| unsupported attributes MUST NOT include attributes described in | MUST NOT include attributes described in the standard but not | |||
| the standard but not supported by the implementation. | supported by the implementation. | |||
| Groups 3 to N: Job Object Attributes | Groups 3 to N: Job Attributes | |||
| The Printer object responds with one set of Job Object Attributes | The Printer responds with one set of Job Attributes for each | |||
| for each returned Job object. The Printer object ignores (does | returned Job. The Printer ignores (does not respond with) any | |||
| not respond with) any requested attribute or value which is not | requested attribute or value which is not supported or which is | |||
| supported or which is restricted by the security policy in force, | restricted by the security policy in force, including whether the | |||
| including whether the requesting user is the user that submitted | requesting user is the user that submitted the Job (Job | |||
| the job (job originating user) or not (see section 8). However, | originating user) or not (see Section 9). However, the Printer | |||
| the Printer object MUST respond with the 'unknown' value for any | MUST respond with the 'unknown' value for any supported attribute | |||
| supported attribute (including all REQUIRED attributes) for which | (including all REQUIRED attributes) for which the Printer does not | |||
| the Printer object does not know the value, unless it would | know the value, unless it would violate the security policy. See | |||
| violate the security policy. See the description of the "out-of- | the description of the "out-of-band" values in the beginning of | |||
| band" values in the beginning of Section 4.1. | Section 5.1. | |||
| Jobs are returned in the following order: | Jobs are returned in the following order: | |||
| - If the client requests all 'completed' Jobs (Jobs in the | * If the Client requests all 'completed' Jobs (Jobs in the | |||
| 'completed', 'aborted', or 'canceled' states), then the Jobs are | 'completed', 'aborted', or 'canceled' states), then the Jobs | |||
| returned newest to oldest (with respect to actual completion | are returned newest to oldest (with respect to actual | |||
| time) | completion time) | |||
| - If the client requests all 'not-completed' Jobs (Jobs in the | ||||
| 'pending', 'processing', 'pending-held', and 'processing- | ||||
| stopped' states), then Jobs are returned in relative | ||||
| chronological order of expected time to complete (based on | ||||
| whatever scheduling algorithm is configured for the Printer | ||||
| object). | ||||
| 3.2.7 Pause-Printer Operation | * If the Client requests all 'not-completed' Jobs (Jobs in the | |||
| 'pending', 'processing', 'pending-held', and 'processing- | ||||
| stopped' states), then Jobs are returned in relative | ||||
| chronological order of expected time to complete (based on | ||||
| whatever scheduling algorithm is configured for the Printer). | ||||
| This OPTIONAL operation allows a client to stop the Printer object | 4.2.7. Pause-Printer Operation | |||
| from scheduling jobs on all its devices. Depending on | ||||
| implementation, the Pause-Printer operation MAY also stop the Printer | This OPTIONAL operation allows a Client to stop the Printer from | |||
| from processing the current job or jobs. Any job that is currently | scheduling Jobs on all its devices. Depending on implementation, the | |||
| being printed is either stopped as soon as the implementation permits | Pause-Printer operation MAY also stop the Printer from processing the | |||
| or is completed, depending on implementation. The Printer object | current Job or Jobs. Any Job that is currently being printed is | |||
| MUST still accept create operations to create new jobs, but MUST | either stopped as soon as the implementation permits or is completed, | |||
| prevent any jobs from entering the 'processing' state. | depending on implementation. The Printer MUST still accept Job | |||
| Creation requests to create new Jobs, but MUST prevent any Jobs from | ||||
| entering the 'processing' state. | ||||
| If the Pause-Printer operation is supported, then the Resume-Printer | If the Pause-Printer operation is supported, then the Resume-Printer | |||
| operation MUST be supported, and vice-versa. | operation MUST be supported, and vice-versa. | |||
| The IPP Printer stops the current job(s) on its device(s) that were | The IPP Printer stops the current Job(s) on its device(s) that were | |||
| in the 'processing' or 'processing-stopped' states as soon as the | in the 'processing' or 'processing-stopped' states as soon as the | |||
| implementation permits. If the implementation will take appreciable | implementation permits. If the implementation will take appreciable | |||
| time to stop, the IPP Printer adds the 'moving-to-paused' value to | time to stop, the IPP Printer adds the 'moving-to-paused' value to | |||
| the Printer object's "printer-state-reasons" attribute (see section | the Printer's "printer-state-reasons" attribute (see Section 5.4.12). | |||
| 4.4.12). When the device(s) have all stopped, the IPP Printer | When the device(s) have all stopped, the IPP Printer transitions the | |||
| transitions the Printer object to the 'stopped' state, removes the | Printer to the 'stopped' state, removes the 'moving-to-paused' value, | |||
| 'moving-to-paused' value, if present, and adds the 'paused' value to | if present, and adds the 'paused' value to the Printer's "printer- | |||
| the Printer object's "printer-state-reasons" attribute. | state-reasons" attribute. | |||
| When the current job(s) complete that were in the 'processing' state, | When the current Job(s) complete that were in the 'processing' state, | |||
| the IPP Printer transitions them to the 'completed' state. When the | the IPP Printer transitions them to the 'completed' state. When the | |||
| current job(s) stop in mid processing that were in the 'processing' | current Job(s) stop in mid processing that were in the 'processing' | |||
| state, the IPP Printer transitions them to the 'processing-stopped' | state, the IPP Printer transitions them to the 'processing-stopped' | |||
| state and adds the 'printer-stopped' value to the job's "job-state- | state and adds the 'printer-stopped' value to the Job's "job-state- | |||
| reasons" attribute. | reasons" attribute. | |||
| For any jobs that are 'pending' or 'pending-held', the 'printer- | For any Jobs that are 'pending' or 'pending-held', the 'printer- | |||
| stopped' value of the jobs' "job-state-reasons" attribute also | stopped' value of the Jobs' "job-state-reasons" attribute also | |||
| applies. However, the IPP Printer NEED NOT update those jobs' "job- | applies. However, the IPP Printer MAY update those Jobs' "job-state- | |||
| state-reasons" attributes and only need return the 'printer-stopped' | reasons" values when those Jobs are queried (so-called "lazy | |||
| value when those jobs are queried (so-called "lazy evaluation"). | evaluation"). | |||
| Whether the Pause-Printer operation affects jobs that were submitted | ||||
| to the device from other sources than the IPP Printer object in the | ||||
| same way that the Pause-Printer operation affects jobs that were | ||||
| submitted to the IPP Printer object using IPP, depends on | ||||
| implementation, i.e., on whether the IPP protocol is being used as a | ||||
| universal management protocol or just to manage IPP jobs, | ||||
| respectively. | ||||
| The IPP Printer MUST accept the request in any state and transition | The IPP Printer MUST accept the request in any state and transition | |||
| the Printer to the indicated new "printer-state" before returning as | the Printer to the indicated new "printer-state" before returning as | |||
| follows: | shown in Table 2. | |||
| Current New "printer IPP Printer's response status | ||||
| "printer- "printer- -state- code and action: | ||||
| state" state" reasons" | ||||
| 'idle' 'stopped' 'paused' 'successful-ok' | ||||
| 'processing' 'processing' 'moving- OPTION 1: 'successful-ok'; | ||||
| to- Later, when all output has | ||||
| paused' stopped, the "printer-state" | ||||
| becomes 'stopped', and the | ||||
| 'paused' value replaces the | ||||
| 'moving-to-paused' value in the | ||||
| "printer-state-reasons" | ||||
| attribute | ||||
| 'processing' 'stopped' 'paused' OPTION 2: 'successful-ok'; | ||||
| all device output stopped | ||||
| immediately | ||||
| 'stopped' 'stopped' 'paused' 'successful-ok' | ||||
| Access Rights: The authenticated user (see section 8.3) performing | Access Rights: The authenticated user (see Section 9.3) performing | |||
| this operation must be an operator or administrator of the Printer | this operation MUST be an Operator or Adminstrator of the Printer | |||
| object (see Sections 1 and 8.5). Otherwise, the IPP Printer MUST | (see Section 1 and Section 9.5). Otherwise, the IPP Printer MUST | |||
| reject the operation and return: 'client-error-forbidden', 'client- | reject the operation and return: 'client-error-forbidden', 'client- | |||
| error-not-authenticated', or 'client-error-not-authorized' as | error-not-authenticated', or 'client-error-not-authorized' as | |||
| appropriate. | appropriate. | |||
| 3.2.7.1 Pause-Printer Request | +-------------+-------------+-------------------+-------------------+ | |||
| | Current | New | "printer-state- | IPP Printer's | | ||||
| | "printer- | "printer- | reasons" | response status | | ||||
| | state" | state" | | code and action: | | ||||
| +-------------+-------------+-------------------+-------------------+ | ||||
| | 'idle' | 'stopped' | 'paused' | 'successful-ok' | | ||||
| +-------------+-------------+-------------------+-------------------+ | ||||
| | 'processing | 'processing | 'moving-to- | Option 1: | | ||||
| | ' | ' | paused' | 'successful-ok'; | | ||||
| | | | | Later, when all | | ||||
| | | | | output has | | ||||
| | | | | stopped, the | | ||||
| | | | | "printer-state" | | ||||
| | | | | becomes | | ||||
| | | | | 'stopped', and | | ||||
| | | | | the 'paused' | | ||||
| | | | | value replaces | | ||||
| | | | | the 'moving-to- | | ||||
| | | | | paused' value in | | ||||
| | | | | the "printer- | | ||||
| | | | | state-reasons" | | ||||
| | | | | attribute | | ||||
| +-------------+-------------+-------------------+-------------------+ | ||||
| | 'processing | 'stopped' | 'paused' | Option 2: | | ||||
| | ' | | | 'successful-ok'; | | ||||
| | | | | all device output | | ||||
| | | | | stopped | | ||||
| | | | | immediately | | ||||
| +-------------+-------------+-------------------+-------------------+ | ||||
| | 'stopped' | 'stopped' | 'paused' | 'successful-ok' | | ||||
| +-------------+-------------+-------------------+-------------------+ | ||||
| Table 2: Pause-Printer State Transitions | ||||
| 4.2.7.1. Pause-Printer Request | ||||
| The following groups of attributes are part of the Pause-Printer | The following groups of attributes are part of the Pause-Printer | |||
| Request: | Request: | |||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Natural Language and Character Set: | Natural Language and Character Set: | |||
| The "attributes-charset" and "attributes-natural-language" | ||||
| attributes as described in section 3.1.4.1. | The "attributes-charset" and "attributes-natural-language" | |||
| attributes as described in Section 4.1.4.1. | ||||
| Target: | Target: | |||
| The "printer-uri" (uri) operation attribute which is the target | ||||
| for this operation as described in section 3.1.5. | The "printer-uri" (uri) operation attribute which is the target | |||
| for this operation as described in Section 4.1.5. | ||||
| Requesting User Name: | Requesting User Name: | |||
| The "requesting-user-name" (name(MAX)) attribute SHOULD be | ||||
| supplied by the client as described in section 8.3. | ||||
| 3.2.7.2 Pause-Printer Response | The "requesting-user-name" (name(MAX)) attribute SHOULD be | |||
| supplied by the Client as described in Section 9.3. | ||||
| 4.2.7.2. Pause-Printer Response | ||||
| The following groups of attributes are part of the Pause-Printer | The following groups of attributes are part of the Pause-Printer | |||
| Response: | Response: | |||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Natural Language and Character Set: | ||||
| The "attributes-charset" and "attributes-natural-language" | ||||
| attributes as described in Section 4.1.4.2. | ||||
| Status Message: | Status Message: | |||
| In addition to the REQUIRED status code returned in every | ||||
| response, the response OPTIONALLY includes a "status-message" | ||||
| (text(255)) and/or a "detailed-status-message" (text(MAX)) | ||||
| operation attribute as described in sections 13 and 3.1.6. | ||||
| Natural Language and Character Set: | In addition to the REQUIRED status code returned in every | |||
| The "attributes-charset" and "attributes-natural-language" | response, the response MAY include a "status-message" | |||
| attributes as described in section 3.1.4.2. | (text(255)) and/or a "detailed-status-message" (text(MAX)) | |||
| operation attribute as described in Appendix B and | ||||
| Section 4.1.6. | ||||
| Group 2: Unsupported Attributes | Group 2: Unsupported Attributes | |||
| See section 3.1.7 for details on returning Unsupported Attributes. | See Section 4.1.7 for details on returning Unsupported Attributes. | |||
| 3.2.8 Resume-Printer Operation | 4.2.8. Resume-Printer Operation | |||
| This operation allows a client to resume the Printer object | This OPTIONAL operation allows a Client to resume the Printer | |||
| scheduling jobs on all its devices. The Printer object MUST remove | scheduling Jobs on all its devices. The Printer MUST remove the | |||
| the 'paused' and 'moving-to-paused' values from the Printer object's | 'paused' and 'moving-to-paused' values from the Printer's "printer- | |||
| "printer-state-reasons" attribute, if present. If there are no other | state-reasons" attribute, if present. If there are no other reasons | |||
| reasons to keep a device paused (such as media-jam), the IPP Printer | to keep a device paused (such as media-jam), the IPP Printer is free | |||
| is free to transition itself to the 'processing' or 'idle' states, | to transition itself to the 'processing' or 'idle' states, depending | |||
| depending on whether there are jobs to be processed or not, | on whether there are Jobs to be processed or not, respectively, and | |||
| respectively, and the device(s) resume processing jobs. | the device(s) resume processing Jobs. | |||
| If the Pause-Printer operation is supported, then the Resume-Printer | If the Pause-Printer operation is supported, then the Resume-Printer | |||
| operation MUST be supported, and vice-versa. | operation MUST be supported, and vice-versa. | |||
| The IPP Printer removes the 'printer-stopped' value from any job's | The IPP Printer removes the 'printer-stopped' value from any Job's | |||
| "job-state-reasons" attributes contained in that Printer. | "job-state-reasons" attributes contained in that Printer. | |||
| The IPP Printer MUST accept the request in any state, transition the | The IPP Printer MUST accept the request in any state, transition the | |||
| Printer object to the indicated new state as follows: | Printer to the indicated new state as shown in Table 3: | |||
| Current New "printer- IPP Printer's response status code and | ||||
| "printer- state" action: | ||||
| state" | ||||
| 'idle' 'idle' 'successful-ok' | ||||
| 'processing' 'processing' 'successful-ok' | ||||
| 'stopped' 'processing' 'successful-ok'; | ||||
| when there are jobs to be processed | ||||
| 'stopped' 'idle' 'successful-ok'; | ||||
| when there are no jobs to be processed. | ||||
| Access Rights: The authenticated user (see section 8.3) performing | Access Rights: The authenticated user (see Section 9.3) performing | |||
| this operation must be an operator or administrator of the Printer | this operation MUST be an Operator or Adminstrator of the Printer | |||
| object (see Sections 1 and 8.5). Otherwise, the IPP Printer MUST | (see Section 1 and Section 9.5). Otherwise, the IPP Printer MUST | |||
| reject the operation and return: 'client-error-forbidden', 'client- | reject the operation and return: 'client-error-forbidden', 'client- | |||
| error-not-authenticated', or 'client-error-not-authorized' as | error-not-authenticated', or 'client-error-not-authorized' as | |||
| appropriate. | appropriate. | |||
| The Resume-Printer Request and Resume-Printer Response have the same | The Resume-Printer Request and Resume-Printer Response have the same | |||
| attribute groups and attributes as the Pause-Printer operation (see | attribute groups and attributes as the Pause-Printer operation (see | |||
| sections 3.2.7.1 and 3.2.7.2). | Sections 4.2.7.1 and 4.2.7.2). | |||
| 3.2.9 Purge-Jobs Operation | +-----------------+-----------------+-------------------------------+ | |||
| | Current | New "printer- | IPP Printer's response status | | ||||
| | "printer-state" | state" | code and action: | | ||||
| +-----------------+-----------------+-------------------------------+ | ||||
| | 'idle' | 'idle' | 'successful-ok' | | ||||
| +-----------------+-----------------+-------------------------------+ | ||||
| | 'processing' | 'processing' | 'successful-ok' | | ||||
| +-----------------+-----------------+-------------------------------+ | ||||
| | 'stopped' | 'processing' | 'successful-ok'; when there | | ||||
| | | | are Jobs to be processed | | ||||
| +-----------------+-----------------+-------------------------------+ | ||||
| | 'stopped' | 'idle' | 'successful-ok'; when there | | ||||
| | | | are no Jobs to be processed. | | ||||
| +-----------------+-----------------+-------------------------------+ | ||||
| This OPTIONAL operation allows a client to remove all jobs from an | Table 3: Resume-Printer State Transitions | |||
| IPP Printer object, regardless of their job states, including jobs in | ||||
| the Printer object's Job History (see Section 4.3.7.2). After a | ||||
| Purge-Jobs operation has been performed, a Printer object MUST return | ||||
| no jobs in subsequent Get-Job-Attributes and Get-Jobs responses | ||||
| (until new jobs are submitted). | ||||
| Whether the Purge-Jobs (and Get-Jobs) operation affects jobs that | 4.2.9. Purge-Jobs Operation | |||
| This DEPRECATED operation allows a Client to remove all Jobs from a | ||||
| Printer, regardless of their Job states, including Jobs in the | ||||
| Printer's Job History (see Section 5.3.7.2). After a Purge-Jobs | ||||
| operation has been performed, a Printer MUST return no Jobs in | ||||
| subsequent Get-Job-Attributes and Get-Jobs responses (until new Jobs | ||||
| are submitted). | ||||
| Note: This operation SHOULD NOT be supported in new implementations | ||||
| since it destroys printer accounting information. | ||||
| Whether the Purge-Jobs (and Get-Jobs) operation affects Jobs that | ||||
| were submitted to the device from other sources than the IPP Printer | were submitted to the device from other sources than the IPP Printer | |||
| object in the same way that the Purge-Jobs operation affects jobs | in the same way that the Purge-Jobs operation affects Jobs that were | |||
| that were submitted to the IPP Printer object using IPP, depends on | submitted to the IPP Printer using IPP, depends on implementation, | |||
| implementation, i.e., on whether the IPP protocol is being used as a | i.e., on whether the IPP protocol is being used as a universal | |||
| universal management protocol or just to manage IPP jobs, | management protocol or just to manage IPP Jobs, respectively. | |||
| respectively. | ||||
| Note: if an operator wants to cancel all jobs without clearing out | Note: If an Operator wants to cancel all Jobs without clearing out | |||
| the Job History, the operator uses the Cancel-Job operation on each | the Job History, the Operator uses the Cancel-Job operation on each | |||
| job instead of using the Purge-Jobs operation. | Job instead of using the Purge-Jobs operation. | |||
| The Printer object MUST accept this operation in any state and | If this OPTIONAL operation is supported, the Printer MUST accept this | |||
| transition the Printer object to the 'idle' state. | operation in any state and transition the Printer to the 'idle' | |||
| state. | ||||
| Access Rights: The authenticated user (see section 8.3) performing | Access Rights: The authenticated user (see Section 9.3) performing | |||
| this operation must be an operator or administrator of the Printer | this operation MUST be an Operator or Adminstrator of the Printer | |||
| object (see Sections 1 and 8.5). Otherwise, the IPP object MUST | (see Section 1 and Section 9.5). Otherwise, the Printer MUST reject | |||
| reject the operation and return: client-error-forbidden, client- | the operation and return: client-error-forbidden, client-error-not- | |||
| error-not-authenticated, and client-error-not-authorized as | authenticated, and client-error-not-authorized as appropriate. | |||
| appropriate. | ||||
| The Purge-Jobs Request and Purge-Jobs Response have the same | The Purge-Jobs Request and Purge-Jobs Response have the same | |||
| attribute groups and attributes as the Pause-Printer operation (see | attribute groups and attributes as the Pause-Printer operation - see | |||
| sections 3.2.7.1 and 3.2.7.2). | Sections 4.2.7.1 and 4.2.7.2. | |||
| 3.3 Job Operations | 4.3. Job Operations | |||
| All Job operations are directed at Job objects. A client MUST always | All Job operations are directed at Jobs. A Client MUST always supply | |||
| supply some means of identifying the Job object in order to identify | some means of identifying the Job object in order to identify the | |||
| the correct target of the operation. That job identification MAY | correct target of the operation. That Job identification SHOULD be | |||
| either be a single Job URI or a combination of a Printer URI with a | the combination of a Printer URI with a Job ID but MAY be the | |||
| Job ID. The IPP object implementation MUST support both forms of | (single) Job URI. The IPP implementation MUST support both forms of | |||
| identification for every job. | identification for every Job. | |||
| 3.3.1 Send-Document Operation | 4.3.1. Send-Document Operation | |||
| This OPTIONAL operation allows a client to create a multi-document | This RECOMMENDED operation allows a Client to add a Document to a Job | |||
| Job object that is initially "empty" (contains no documents). In the | that was created using the Create-Job operation. In the Create-Job | |||
| Create-Job response, the Printer object returns the Job object's URI | response, the Printer returns the Job's URI (the "job-uri" attribute) | |||
| (the "job-uri" attribute) and the Job object's 32-bit identifier (the | and the Job's 32-bit identifier (the "job-id" attribute). For each | |||
| "job-id" attribute). For each new document that the client desires | new Document that the Client desires to add, the Client uses a Send- | |||
| to add, the client uses a Send-Document operation. Each Send- | Document operation. Each Send-Document Request contains the entire | |||
| Document Request contains the entire stream of document data for one | stream of Document data for one Document. | |||
| document. | ||||
| If the Printer supports this operation but does not support multiple | If the Printer supports this operation but does not support multiple | |||
| documents per job, the Printer MUST reject subsequent Send-Document | Documents per Job, the Printer MUST reject subsequent Send-Document | |||
| operations supplied with data and return the 'server-error-multiple- | operations supplied with data and return the 'server-error-multiple- | |||
| document-jobs-not-supported'. However, the Printer MUST accept the | document-jobs-not-supported'. However, the Printer MUST accept the | |||
| first document with a 'true' or 'false' value for the "last-document" | first Document with a 'true' or 'false' value for the "last-document" | |||
| operation attribute (see below), so that clients MAY always submit | operation attribute (see below), so that Clients MAY always submit | |||
| one document jobs with a 'false' value for "last-document" in the | one Document Jobs with a 'false' value for "last-document" in the | |||
| first Send-Document and a 'true' for "last-document" in the second | first Send-Document and a 'true' for "last-document" in the second | |||
| Send-Document (with no data). | Send-Document (with no data). | |||
| Since the Create-Job and the send operations (Send-Document or Send- | Since the Create-Job and the send operations (Send-Document or Send- | |||
| URI operations) that follow could occur over an arbitrarily long | URI operations) that follow could occur over an arbitrarily long | |||
| period of time for a particular job, a client MUST send another send | period of time for a particular Job, a Client MUST send another send | |||
| operation within an IPP Printer defined minimum time interval after | operation within an IPP Printer defined minimum time interval after | |||
| the receipt of the previous request for the job. If a Printer object | the receipt of the previous request for the Job. If a Printer | |||
| supports the Create-Job and Send-Document operations, the Printer | supports the Create-Job and Send-Document operations, the Printer | |||
| object MUST support the "multiple-operation-time-out" attribute (see | MUST support the "multiple-operation-time-out" attribute (see | |||
| section 4.4.31). This attribute indicates the minimum number of | Section 5.4.31). This attribute indicates the minimum number of | |||
| seconds the Printer object will wait for the next send operation | seconds the Printer will wait for the next send operation before | |||
| before taking some recovery action. | taking some recovery action. | |||
| An IPP object MUST recover from an errant client that does not supply | A Printer MUST recover from an errant Client that does not supply a | |||
| a send operation, sometime after the minimum time interval specified | send operation, sometime after the minimum time interval specified by | |||
| by the Printer object's "multiple-operation-time-out" attribute. | the Printer's "multiple-operation-time-out" attribute. Such recovery | |||
| Such recovery MAY include any of the following or other recovery | MAY include any of the following or other recovery actions: | |||
| actions: | ||||
| 1. Assume that the Job is an invalid job, start the process of | 1. Assume that the Job is an invalid job, start the process of | |||
| changing the job state to 'aborted', add the 'aborted-by- | changing the Job state to 'aborted', add the 'aborted-by-system' | |||
| system' value to the job's "job-state-reasons" attribute (see | value to the Job's "job-state-reasons" attribute (see | |||
| section 4.3.8), and clean up all resources associated with the | Section 5.3.8), and clean up all resources associated with the | |||
| Job. In this case, if another send operation is finally | Job. In this case, if another send operation is finally received, | |||
| received, the Printer responds with an "client-error-not- | the Printer responds with an "client-error-not-possible" or | |||
| possible" or "client-error-not-found" depending on whether or | "client-error-not-found" depending on whether the Job is still | |||
| not the Job object is still around when the send operation | around when the send operation finally arrives. | |||
| finally arrives. | ||||
| 2. Assume that the last send operation received was in fact the | 2. Assume that the last send operation received was in fact the last | |||
| last document (as if the "last-document" flag had been set to | Document (as if the "last-document" flag had been set to 'true'), | |||
| 'true'), close the Job object, and proceed to process it (i.e., | close the Job, and proceed to process it (i.e., move the Job's | |||
| move the Job's state to 'pending'). | state to 'pending'). | |||
| 3. Assume that the last send operation received was in fact the | ||||
| last document, close the Job, but move it to the 'pending-held' | 3. Assume that the last send operation received was in fact the last | |||
| and add the 'submission-interrupted' value to the job's "job- | Document, close the Job, but move it to the 'pending-held' and | |||
| state-reasons" attribute (see section 4.3.8). This action | add the 'submission-interrupted' value to the Job's "job-state- | |||
| allows the user or an operator to determine whether to continue | reasons" attribute (see Section 5.3.8). This action allows the | |||
| processing the Job by moving it back to the 'pending' state | user or an Operator to determine whether to continue processing | |||
| using the Release-Job operation (see section 3.3.6) or to | the Job by moving it back to the 'pending' state using the | |||
| cancel the job using the Cancel-Job operation (see section | Release-Job operation (see Section 4.3.6) or to cancel the Job | |||
| 3.3.3). | using the Cancel-Job operation (see Section 4.3.3). | |||
| Each implementation is free to decide the "best" action to take | Each implementation is free to decide the "best" action to take | |||
| depending on local policy, whether any documents have been added, | depending on local policy, whether any Documents have been added, | |||
| whether the implementation spools jobs or not, and/or any other | whether the implementation spools Jobs or not, and/or any other piece | |||
| piece of information available to it. If the choice is to abort the | of information available to it. If the choice is to abort the Job, | |||
| Job object, it is possible that the Job object may already have been | it is possible that the Job has already been processed to the point | |||
| processed to the point that some media sheet pages have been printed. | that some Media Sheet pages have been printed. | |||
| Access Rights: The authenticated user (see section 8.3) performing | Access Rights: The authenticated user (see Section 9.3) performing | |||
| this operation must either be the job owner (as determined in the | this operation must either be the Job owner (as determined in the | |||
| Create-Job operation) or an operator or administrator of the Printer | Create-Job operation) or an Operator or Adminstrator of the Printer | |||
| object (see Sections 1 and 8.5). Otherwise, the IPP object MUST | (see Section 1 and Section 9.5). Otherwise, the Printer MUST reject | |||
| reject the operation and return: 'client-error-forbidden', 'client- | the operation and return: 'client-error-forbidden', 'client-error- | |||
| error-not-authenticated', or 'client-error-not-authorized' as | not-authenticated', or 'client-error-not-authorized' as appropriate. | |||
| appropriate. | ||||
| 3.3.1.1 Send-Document Request | 4.3.1.1. Send-Document Request | |||
| The following attribute sets are part of the Send-Document Request: | The following attribute sets are part of the Send-Document Request: | |||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Natural Language and Character Set: | Natural Language and Character Set: | |||
| The "attributes-charset" and "attributes-natural-language" | ||||
| attributes as described in section 3.1.4.1. | The "attributes-charset" and "attributes-natural-language" | |||
| attributes as described in Section 4.1.4.1. | ||||
| Target: | Target: | |||
| Either (1) the "printer-uri" (uri) plus "job-id" | ||||
| (integer(1:MAX))or (2) the "job-uri" (uri) operation | Either the "printer-uri" (uri) plus "job-id" (integer(1:MAX)), | |||
| attribute(s) which define the target for this operation as | or the "job-uri" (uri) operation attribute(s) which define the | |||
| described in section 3.1.5. | target for this operation as described in Section 4.1.5. | |||
| Requesting User Name: | Requesting User Name: | |||
| The "requesting-user-name" (name(MAX)) attribute SHOULD be | ||||
| supplied by the client as described in section 8.3. | The "requesting-user-name" (name(MAX)) attribute SHOULD be | |||
| supplied by the Client as described in Section 9.3. | ||||
| "document-name" (name(MAX)): | "document-name" (name(MAX)): | |||
| The client OPTIONALLY supplies this attribute. The Printer | ||||
| object MUST support this attribute. It contains the client | ||||
| supplied document name. The document name MAY be different than | ||||
| the Job name. It might be helpful, but NEED NOT be unique | ||||
| across multiple documents in the same Job. Typically, the | ||||
| client software automatically supplies the document name on | ||||
| behalf of the end user by using a file name or an application | ||||
| generated name. See the description of the "document-name" | ||||
| operation attribute in the Print-Job Request (section 3.2.1.1) | ||||
| for more information about this attribute. | ||||
| "compression" (type3 keyword): | The Client MAY supply and the Printer MUST support this | |||
| See the description of "compression" for the Print-Job operation | attribute. It contains the Client supplied Document name. The | |||
| in Section 3.2.1.1. | Document name MAY be different than the Job name and is not | |||
| guaranteed to be unique across multiple Documents in the same | ||||
| Job. Typically, the Client software automatically supplies the | ||||
| Document name on behalf of the End User by using a file name or | ||||
| an application generated name. See the description of the | ||||
| "document-name" operation attribute in the Print-Job Request | ||||
| (Section 4.2.1.1) for more information about this attribute. | ||||
| "compression" (type2 keyword): | ||||
| See the description of "compression" for the Print-Job | ||||
| operation in Section 4.2.1.1. | ||||
| "document-format" (mimeMediaType): | "document-format" (mimeMediaType): | |||
| See the description of "document-format" for the Print-Job | ||||
| operation in Section 3.2.1.1. | See the description of "document-format" for the Print-Job | |||
| operation in Section 4.2.1.1. | ||||
| "document-natural-language" (naturalLanguage): | "document-natural-language" (naturalLanguage): | |||
| The client OPTIONALLY supplies this attribute. The Printer | ||||
| object OPTIONALLY supports this attribute. This attribute | The Client MAY supply and the Printer MAY support this | |||
| specifies the natural language of the document for those | attribute. It specifies the natural language of the Document | |||
| document-formats that require a specification of the natural | content for those Document formats that require a specification | |||
| language in order to image the document unambiguously. There | of the natural language in order to properly image the | |||
| are no particular values required for the Printer object to | Document. | |||
| support. | ||||
| "last-document" (boolean): | "last-document" (boolean): | |||
| The client MUST supply this attribute. The Printer object MUST | ||||
| support this attribute. It is a boolean flag that is set to | ||||
| 'true' if this is the last document for the Job, 'false' | ||||
| otherwise. | ||||
| Group 2: Document Content | The Client MUST supply and the Printer MUST support this | |||
| attribute. It is a boolean flag that is set to 'true' if this | ||||
| is the last Document for the Job, 'false' otherwise. | ||||
| The client MUST supply the document data if the "last-document" | Group 2: Document Data | |||
| flag is set to 'false'. However, since a client might not know | ||||
| that the previous document sent with a Send-Document (or Send-URI) | The Client MUST supply the Document data if the "last-document" | |||
| operation was the last document (i.e., the "last-document" | flag is set to 'false'. However, since a Client might not know | |||
| that the previous Document sent with a Send-Document (or Send-URI) | ||||
| operation was the last Document (i.e., the "last-document" | ||||
| attribute was set to 'false'), it is legal to send a Send-Document | attribute was set to 'false'), it is legal to send a Send-Document | |||
| request with no document data where the "last-document" flag is | request with no Document data where the "last-document" flag is | |||
| set to 'true'. Such a request MUST NOT increment the value of the | set to 'true'. Such a request MUST NOT increment the value of the | |||
| Job object's "number-of-documents" attribute, since no real | Job's "number-of-documents" attribute, since no real Document was | |||
| document was added to the job. It is not an error for a client to | added to the Job. It is not an error for a Client to submit a Job | |||
| submit a job with no actual document data, i.e., only a single | with no actual Document data, i.e., only a single Create-Job and | |||
| Create-Job and Send-Document request with a "last-document" | Send-Document request with a "last-document" operation attribute | |||
| operation attribute set to 'true' with no document data. | set to 'true' with no Document data. | |||
| 3.3.1.2 Send-Document Response | 4.3.1.2. Send-Document Response | |||
| The following sets of attributes are part of the Send-Document | The following sets of attributes are part of the Send-Document | |||
| Response: | Response: | |||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Natural Language and Character Set: | ||||
| The "attributes-charset" and "attributes-natural-language" | ||||
| attributes as described in Section 4.1.4.2. | ||||
| Status Message: | Status Message: | |||
| In addition to the REQUIRED status code returned in every | In addition to the REQUIRED status code returned in every | |||
| response, the response OPTIONALLY includes a "status-message" | response, the response MAY include a "status-message" | |||
| (text(255)) and/or a "detailed-status-message" (text(MAX)) | (text(255)) and/or a "detailed-status-message" (text(MAX)) | |||
| operation attribute as described in sections 13 and 3.1.6. | operation attribute as described in Appendix B and | |||
| Section 4.1.6. | ||||
| Natural Language and Character Set: | ||||
| The "attributes-charset" and "attributes-natural-language" | ||||
| attributes as described in section 3.1.4.2. | ||||
| Group 2: Unsupported Attributes | Group 2: Unsupported Attributes | |||
| See section 3.1.7 for details on returning Unsupported Attributes. | See Section 4.1.7 for details on returning Unsupported Attributes. | |||
| Group 3: Job Object Attributes | Group 3: Job Object Attributes | |||
| This is the same set of attributes as described in the Print-Job | This is the same set of attributes as described in the Print-Job | |||
| response (see section 3.2.1.2). | response (see Section 4.2.1.2). | |||
| 3.3.2 Send-URI Operation | 4.3.2. Send-URI Operation | |||
| This OPTIONAL operation is identical to the Send-Document operation | This RECOMMENDED operation is identical to the Send-Document | |||
| (see section 3.3.1) except that a client MUST supply a URI reference | operation (see Section 4.3.1) except that a Client MUST supply a URI | |||
| ("document-uri" operation attribute) rather than the document data | reference ("document-uri" operation attribute) rather than the | |||
| itself. If a Printer object supports this operation, clients can use | Document data itself. If a Printer supports this operation, Clients | |||
| both Send-URI or Send-Document operations to add new documents to an | can use both Send-URI or Send-Document operations to add new | |||
| existing multi-document Job object. However, if a client needs to | Documents to an existing Job. However, if a Client needs to indicate | |||
| indicate that the previous Send-URI or Send-Document was the last | that the previous Send-URI or Send-Document was the last Document, | |||
| document, the client MUST use the Send-Document operation with no | the Client MUST use the Send-Document operation with no Document data | |||
| document data and the "last-document" flag set to 'true' (rather than | and the "last-document" flag set to 'true' (rather than using a Send- | |||
| using a Send-URI operation with no "document-uri" operation | URI operation with no "document-uri" operation attribute). | |||
| attribute). | ||||
| If a Printer object supports this operation, it MUST also support the | If a Printer supports this operation, it MUST also support the Print- | |||
| Print-URI operation (see section 3.2.2). | URI operation (see Section 4.2.2). | |||
| The Printer object MUST validate the syntax and URI scheme of the | The Printer MUST validate the syntax and URI scheme of the supplied | |||
| supplied URI before returning a response, just as in the Print-URI | URI before returning a response, just as in the Print-URI operation. | |||
| operation. The IPP Printer MAY validate the accessibility of the | The Printer MAY validate the accessibility of the Document as part of | |||
| document as part of the operation or subsequently (see section | the operation or subsequently (see Section 4.2.2). | |||
| 3.2.2). | ||||
| 3.3.3 Cancel-Job Operation | 4.3.3. Cancel-Job Operation | |||
| This REQUIRED operation allows a client to cancel a Print Job from | This REQUIRED operation allows a Client to cancel a Print Job from | |||
| the time the job is created up to the time it is completed, canceled, | the time the Job is created up to the time it is completed, canceled, | |||
| or aborted. Since a Job might already be printing by the time a | or aborted. Since a Job might already be printing by the time a | |||
| Cancel-Job is received, some media sheet pages might be printed | Cancel-Job is received, some Media Sheet pages might be printed | |||
| before the job is actually terminated. | before the Job is actually terminated. | |||
| The IPP object MUST accept or reject the request based on the job's | The Printer MUST accept or reject the request based on the Job's | |||
| current state and transition the job to the indicated new state as | current state and transition the Job to the indicated new state as | |||
| follows: | shown in Table 4. | |||
| Current "job- New "job- IPP object's response status | Access Rights: The authenticated user (see Section 9.3) performing | |||
| state" state" code and action: | this operation must either be the Job owner or an Operator or | |||
| Adminstrator of the Printer (see Section 1 and Section 9.5). | ||||
| Otherwise, the Printer MUST reject the operation and return: 'client- | ||||
| error-forbidden', 'client-error-not-authenticated', or 'client-error- | ||||
| not-authorized' as appropriate. | ||||
| 'pending' 'canceled' 'successful-ok' | +-------------------+--------------------+--------------------------+ | |||
| 'pending-held' 'canceled' 'successful-ok' | | Current "job- | New "job-state" | Printer's response | | |||
| 'processing' 'canceled' 'successful-ok' | | state" | | status code and action: | | |||
| 'processing' 'processing' 'successful-ok' See Rule 1 | +-------------------+--------------------+--------------------------+ | |||
| 'processing' 'processing' 'client-error-not-possible' | | 'pending' | 'canceled' | 'successful-ok' | | |||
| See Rule 2 | +-------------------+--------------------+--------------------------+ | |||
| 'processing- 'canceled' 'successful-ok' | | 'pending-held' | 'canceled' | 'successful-ok' | | |||
| stopped' | +-------------------+--------------------+--------------------------+ | |||
| 'processing- 'processing- 'successful-ok' See Rule 1 | | 'processing' | 'canceled' | 'successful-ok' | | |||
| stopped' stopped' | +-------------------+--------------------+--------------------------+ | |||
| 'processing- 'processing- 'client-error-not-possible' | | 'processing' | 'processing' | 'successful-ok' (note 1) | | |||
| stopped' stopped' See Rule 2 | +-------------------+--------------------+--------------------------+ | |||
| 'completed' 'completed' 'client-error-not-possible' | | 'processing' | 'processing' | 'client-error-not- | | |||
| 'canceled' 'canceled' 'client-error-not-possible' | | | | possible' (note 2) | | |||
| 'aborted' 'aborted' 'client-error-not-possible' | +-------------------+--------------------+--------------------------+ | |||
| | 'processing- | 'canceled' | 'successful-ok' | | ||||
| | stopped' | | | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'processing- | 'processing- | 'successful-ok' (note 1) | | ||||
| | stopped' | stopped' | | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'processing- | 'processing- | 'client-error-not- | | ||||
| | stopped' | stopped' | possible' (note 2) | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'completed' | 'completed' | 'client-error-not- | | ||||
| | | | possible' | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'canceled' | 'canceled' | 'client-error-not- | | ||||
| | | | possible' | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'aborted' | 'aborted' | 'client-error-not- | | ||||
| | | | possible' | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| Rule 1: If the implementation requires some measurable time to | Table 4: Cancel-Job State Transitions | |||
| cancel the job in the 'processing' or 'processing-stopped' job | ||||
| states, the IPP object MUST add the 'processing-to-stop-point' value | ||||
| to the job's "job-state-reasons" attribute and then transition the | ||||
| job to the 'canceled' state when the processing ceases (see section | ||||
| 4.3.8). | ||||
| Rule 2: If the Job object already has the 'processing-to-stop-point' | Note 1: If the implementation requires some measurable time to cancel | |||
| value in its "job-state-reasons" attribute, then the Printer object | the Job in the 'processing' or 'processing-stopped' Job states, the | |||
| MUST reject a Cancel-Job operation. | Printer MUST add the 'processing-to-stop-point' value to the Job's | |||
| "job-state-reasons" attribute and then transition the Job to the | ||||
| 'canceled' state when the processing ceases (see Section 5.3.8). | ||||
| Access Rights: The authenticated user (see section 8.3) performing | Note 2: If the Job already has the 'processing-to-stop-point' value | |||
| this operation must either be the job owner or an operator or | in its "job-state-reasons" attribute, then the Printer MUST reject a | |||
| administrator of the Printer object (see Sections 1 and 8.5). | Cancel-Job operation. | |||
| Otherwise, the IPP object MUST reject the operation and return: | ||||
| 'client-error-forbidden', 'client-error-not-authenticated', or | ||||
| 'client-error-not-authorized' as appropriate. | ||||
| 3.3.3.1 Cancel-Job Request | 4.3.3.1. Cancel-Job Request | |||
| The following groups of attributes are part of the Cancel-Job | The following groups of attributes are part of the Cancel-Job | |||
| Request: | Request: | |||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Natural Language and Character Set: | Natural Language and Character Set: | |||
| The "attributes-charset" and "attributes-natural-language" | The "attributes-charset" and "attributes-natural-language" | |||
| attributes as described in section 3.1.4.1. | attributes as described in Section 4.1.4.1. | |||
| Target: | Target: | |||
| Either (1) the "printer-uri" (uri) plus "job-id" | ||||
| (integer(1:MAX))or (2) the "job-uri" (uri) operation | Either the "printer-uri" (uri) plus "job-id" (integer(1:MAX)), | |||
| attribute(s) which define the target for this operation as | or the "job-uri" (uri) operation attribute(s) which define the | |||
| described in section 3.1.5. | target for this operation as described in Section 4.1.5. | |||
| Requesting User Name: | Requesting User Name: | |||
| The "requesting-user-name" (name(MAX)) attribute SHOULD be | The "requesting-user-name" (name(MAX)) attribute SHOULD be | |||
| supplied by the client as described in section 8.3. | supplied by the Client as described in Section 9.3. | |||
| "message" (text(127)): | "message" (text(127)): | |||
| The client OPTIONALLY supplies this attribute. The Printer | ||||
| object OPTIONALLY supports this attribute. It is a message to | ||||
| the operator. This "message" attribute is not the same as the | ||||
| "job-message-from-operator" attribute. That attribute is used | ||||
| to report a message from the operator to the end user that | ||||
| queries that attribute. This "message" operation attribute is | ||||
| used to send a message from the client to the operator along | ||||
| with the operation request. It is an implementation decision | ||||
| of how or where to display this message to the operator (if at | ||||
| all). | ||||
| 3.3.3.2 Cancel-Job Response | The Client MAY supply and the Printer MAY support this | |||
| attribute. It is a message to the Operator. This "message" | ||||
| attribute is not the same as the "job-message-from-operator" | ||||
| attribute. That attribute is used to report a message from the | ||||
| Operator to the End User that queries that attribute. This | ||||
| "message" operation attribute is used to send a message from | ||||
| the Client to the Operator along with the operation request. | ||||
| It is an implementation decision of how or where to display | ||||
| this message to the Operator (if at all). | ||||
| 4.3.3.2. Cancel-Job Response | ||||
| The following sets of attributes are part of the Cancel-Job Response: | The following sets of attributes are part of the Cancel-Job Response: | |||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Natural Language and Character Set: | ||||
| The "attributes-charset" and "attributes-natural-language" | ||||
| attributes as described in Section 4.1.4.2. | ||||
| Status Message: | Status Message: | |||
| In addition to the REQUIRED status code returned in every | In addition to the REQUIRED status code returned in every | |||
| response, the response OPTIONALLY includes a "status-message" | response, the response MAY include a "status-message" | |||
| (text(255)) and/or a "detailed-status-message" (text(MAX)) | (text(255)) and/or a "detailed-status-message" (text(MAX)) | |||
| operation attribute as described in sections 13 and 3.1.6. | operation attribute as described in Appendix B and | |||
| Section 4.1.6. | ||||
| Natural Language and Character Set: | ||||
| The "attributes-charset" and "attributes-natural-language" | ||||
| attributes as described in section 3.1.4.2. | ||||
| Group 2: Unsupported Attributes | Group 2: Unsupported Attributes | |||
| See section 3.1.7 for details on returning Unsupported Attributes. | See Section 4.1.7 for details on returning Unsupported Attributes. | |||
| Once a successful response has been sent, the implementation | Once a successful response has been sent, the implementation | |||
| guarantees that the Job will eventually end up in the 'canceled' | guarantees that the Job will eventually end up in the 'canceled' | |||
| state. Between the time of the Cancel-Job operation is accepted and | state. Between the time of the Cancel-Job operation is accepted | |||
| when the job enters the 'canceled' job-state (see section 4.3.7), the | and when the Job enters the 'canceled' job-state (see | |||
| "job-state-reasons" attribute SHOULD contain the 'processing-to- | Section 5.3.7), the "job-state-reasons" attribute SHOULD contain | |||
| stop-point' | the 'processing-to-stop-point' value which indicates to later | |||
| value which indicates to later queries that although the Job might | queries that although the Job might still be 'processing', it will | |||
| still be 'processing', it will eventually end up in the | eventually end up in the 'canceled' state, not the 'completed' | |||
| 'canceled' state, not the 'completed' state. | state. | |||
| 3.3.4 Get-Job-Attributes Operation | 4.3.4. Get-Job-Attributes Operation | |||
| This REQUIRED operation allows a client to request the values of | This REQUIRED operation allows a Client to request the values of | |||
| attributes of a Job object and it is almost identical to the Get- | attributes of a Job and it is almost identical to the Get-Printer- | |||
| Printer-Attributes operation (see section 3.2.5). The only | Attributes operation (see Section 4.2.5). The only differences are | |||
| differences are that the operation is directed at a Job object rather | that the operation is directed at a Job rather than a Printer, there | |||
| than a Printer object, there is no "document-format" operation | is no "document-format" operation attribute used when querying a Job, | |||
| attribute used when querying a Job object, and the returned attribute | and the returned attribute group is a set of Job attributes rather | |||
| group is a set of Job object attributes rather than a set of Printer | than a set of Printer attributes. | |||
| object attributes. | ||||
| For Jobs, the possible names of attribute groups are: | For Jobs, the possible names of attribute groups are: | |||
| - 'job-template': the subset of the Job Template attributes that | o 'job-template': the subset of the Job Template attributes that | |||
| apply to a Job object (the first column of the table in Section | apply to a Job (the first column of the table in Section 5.2) that | |||
| 4.2) that the implementation supports for Job objects. | the implementation supports for Jobs. | |||
| - 'job-description': the subset of the Job Description attributes | ||||
| specified in Section 4.3 that the implementation supports for | ||||
| Job objects. | ||||
| - 'all': the special group 'all' that includes all attributes that | ||||
| the implementation supports for Job objects. | ||||
| Since a client MAY request specific attributes or named groups, there | o 'job-description': the subset of the Job Description and Status | |||
| is a potential that there is some overlap. For example, if a client | attributes specified in Section 5.3 that the implementation | |||
| requests, 'job-name' and 'job-description', the client is actually | supports for Jobs. | |||
| o 'all': the special group 'all' that includes all attributes that | ||||
| the implementation supports for Jobs. | ||||
| Since a Client MAY request specific attributes or named groups, there | ||||
| is a potential that there is some overlap. For example, if a Client | ||||
| requests, 'job-name' and 'job-description', the Client is actually | ||||
| requesting the "job-name" attribute once by naming it explicitly, and | requesting the "job-name" attribute once by naming it explicitly, and | |||
| once by inclusion in the 'job-description' group. In such cases, the | once by inclusion in the 'job-description' group. In such cases, the | |||
| Printer object NEED NOT return the attribute only once in the | Printer returns the attribute only once in the response even if it is | |||
| response even if it is requested multiple times. The client SHOULD | requested multiple times. The Client SHOULD NOT request the same | |||
| NOT request the same attribute in multiple ways. | attribute in multiple ways. | |||
| It is NOT REQUIRED that a Job object support all attributes belonging | Jobs MUST support all group names and MUST return all supported | |||
| to a group (since some attributes are OPTIONAL). However it is | attributes belonging to the group. | |||
| REQUIRED that each Job object support all these group names. | ||||
| 3.3.4.1 Get-Job-Attributes Request | 4.3.4.1. Get-Job-Attributes Request | |||
| The following groups of attributes are part of the Get-Job-Attributes | The following groups of attributes are part of the Get-Job-Attributes | |||
| Request when the request is directed at a Job object: | Request when the request is directed at a Job: | |||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Natural Language and Character Set: | Natural Language and Character Set: | |||
| The "attributes-charset" and "attributes-natural-language" | ||||
| attributes as described in section 3.1.4.1. | The "attributes-charset" and "attributes-natural-language" | |||
| attributes as described in Section 4.1.4.1. | ||||
| Target: | Target: | |||
| Either (1) the "printer-uri" (uri) plus "job-id" | ||||
| (integer(1:MAX)) or (2) the "job-uri" (uri) operation | Either the "printer-uri" (uri) plus "job-id" (integer(1:MAX)), | |||
| attribute(s) which define the target for this operation as | or the "job-uri" (uri) operation attribute(s) which define the | |||
| described in section 3.1.5. | target for this operation as described in Section 4.1.5. | |||
| Requesting User Name: | Requesting User Name: | |||
| The "requesting-user-name" (name(MAX)) attribute SHOULD be | ||||
| supplied by the client as described in section 8.3. | The "requesting-user-name" (name(MAX)) attribute SHOULD be | |||
| supplied by the Client as described in Section 9.3. | ||||
| "requested-attributes" (1setOf keyword): | "requested-attributes" (1setOf keyword): | |||
| The client OPTIONALLY supplies this attribute. The IPP object | ||||
| MUST support this attribute. It is a set of attribute names | ||||
| and/or attribute group names in whose values the requester is | ||||
| interested. If the client omits this attribute, the IPP object | ||||
| MUST respond as if this attribute had been supplied with a value | ||||
| of 'all'. | ||||
| 3.3.4.2 Get-Job-Attributes Response | The Client MAY supply and the Printer MUST support this | |||
| attribute. It is a set of attribute names and/or attribute | ||||
| group names in whose values the requester is interested. If | ||||
| the Client omits this attribute, the Printer MUST respond as if | ||||
| this attribute had been supplied with a value of 'all'. | ||||
| The Printer object returns the following sets of attributes as part | 4.3.4.2. Get-Job-Attributes Response | |||
| of the Get-Job-Attributes Response: | ||||
| The Printer returns the following sets of attributes as part of the | ||||
| Get-Job-Attributes Response: | ||||
| Group 1: Operation Attributes | Group 1: Operation Attributes | |||
| Natural Language and Character Set: | ||||
| The "attributes-charset" and "attributes-natural-language" | ||||
| attributes as described in Section 4.1.4.2. The "attributes- | ||||
| natural-language" MAY be the natural language of the Job, | ||||
| rather than the one requested. | ||||
| Status Message: | Status Message: | |||
| In addition to the REQUIRED status code returned in every | In addition to the REQUIRED status code returned in every | |||
| response, the response OPTIONALLY includes a "status-message" | response, the response MAY include a "status-message" | |||
| (text(255)) and/or a "detailed-status-message" (text(MAX)) | (text(255)) and/or a "detailed-status-message" (text(MAX)) | |||
| operation attribute as described in sections 13 and 3.1.6. | operation attribute as described in Appendix B and | |||
| Section 4.1.6. | ||||
| Natural Language and Character Set: | ||||
| The "attributes-charset" and "attributes-natural-language" | ||||
| attributes as described in section 3.1.4.2. The "attributes- | ||||
| natural-language" MAY be the natural language of the Job | ||||
| object, rather than the one requested. | ||||
| Group 2: Unsupported Attributes | Group 2: Unsupported Attributes | |||
| See section 3.1.7 for details on returning Unsupported Attributes. | See Section 4.1.7 for details on returning Unsupported Attributes. | |||
| The response NEED NOT contain the "requested-attributes" operation | The response MAY contain the "requested-attributes" operation | |||
| attribute with any supplied values (attribute keywords) that were | attribute with any supplied values (attribute keywords) that were | |||
| requested by the client but are not supported by the IPP object. | requested by the Client but are not supported by the Printer. If | |||
| If the Printer object does return unsupported attributes | the Printer does return unsupported attributes referenced in the | |||
| referenced in the "requested-attributes" operation attribute and | "requested-attributes" operation attribute and that attribute | |||
| that attribute included group names, such as 'all', the | included group names, such as 'all', the unsupported attributes | |||
| unsupported attributes MUST NOT include attributes described in | MUST NOT include attributes described in the standard but not | |||
| the standard but not supported by the implementation. | supported by the implementation. | |||
| Group 3: Job Object Attributes | Group 3: Job Attributes | |||
| This is the set of requested attributes and their current values. | This is the set of requested attributes and their current values. | |||
| The IPP object ignores (does not respond with) any requested | The Printer ignores (does not respond with) any requested | |||
| attribute or value which is not supported or which is restricted | attribute or value which is not supported or which is restricted | |||
| by the security policy in force, including whether the requesting | by the security policy in force, including whether the requesting | |||
| user is the user that submitted the job (job originating user) or | user is the user that submitted the Job (Job originating user) or | |||
| not (see section 8). However, the IPP object MUST respond with | not (see Section 9). However, the Printer MUST respond with the | |||
| the 'unknown' value for any supported attribute (including all | 'unknown' value for any supported attribute (including all | |||
| REQUIRED attributes) for which the IPP object does not know the | REQUIRED attributes) for which the Printer does not know the | |||
| value, unless it would violate the security policy. See the | value, unless it would violate the security policy. See the | |||
| description of the "out-of-band" values in the beginning of | description of the "out-of-band" values in the beginning of | |||
| Section 4.1. | Section 5.1. | |||
| 3.3.5 Hold-Job Operation | 4.3.5. Hold-Job Operation | |||
| This OPTIONAL operation allows a client to hold a pending job in the | This OPTIONAL operation allows a Client to hold a pending Job in the | |||
| queue so that it is not eligible for scheduling. If the Hold-Job | queue so that it is not eligible for scheduling. If the Hold-Job | |||
| operation is supported, then the Release-Job operation MUST be | operation is supported, then the Release-Job operation MUST be | |||
| supported, and vice-versa. The OPTIONAL "job-hold-until" operation | supported, and vice-versa. The OPTIONAL "job-hold-until" operation | |||
| attribute allows a client to specify whether to hold the job | attribute allows a Client to specify whether to hold the Job | |||
| indefinitely or until a specified time period, if supported. | indefinitely or until a specified time period, if supported. | |||
| The IPP object MUST accept or reject the request based on the job's | The Printer MUST accept or reject the request based on the Job's | |||
| current state and transition the job to the indicated new state as | current state and transition the Job to the indicated new state as | |||
| follows: | shown in Table 5. | |||
| Current "job- New "job-state" IPP object's response status | Note: In order to keep the Hold-Job operation simple, such a request | |||
| state" code and action: | is rejected when the Job is in the 'processing' or 'processing- | |||
| stopped' states. If an operation is needed to hold Jobs while in | ||||
| these states, it will be added as an additional operation, rather | ||||
| than overloading the Hold-Job operation. Then it is clear to Clients | ||||
| by querying the Printer's "operations-supported" (see Section 5.4.15) | ||||
| and the Job's "job-state" (see Section 5.3.7) attributes which | ||||
| operations are possible. | ||||
| 'pending' 'pending-held' 'successful-ok' See Rule 1 | Access Rights: The authenticated user (see Section 9.3) performing | |||
| 'pending' 'pending' 'successful-ok' See Rule 2 | this operation must either be the Job owner or an Operator or | |||
| 'pending-held' 'pending-held' 'successful-ok' See Rule 1 | Adminstrator of the Printer (see Section 1 and Section 9.5). | |||
| 'pending-held' 'pending' 'successful-ok' See Rule 2 | Otherwise, the Printer MUST reject the operation and return: 'client- | |||
| 'processing' 'processing' 'client-error-not-possible' | error-forbidden', 'client-error-not-authenticated', or 'client-error- | |||
| 'processing- 'processing- 'client-error-not-possible' | not-authorized' as appropriate. | |||
| stopped' stopped' | ||||
| 'completed' 'completed' 'client-error-not-possible' | ||||
| 'canceled' 'canceled' 'client-error-not-possible' | ||||
| 'aborted' 'aborted' 'client-error-not-possible' | ||||
| Rule 1: If the implementation supports multiple reasons for a job to | +-------------------+--------------------+--------------------------+ | |||
| be in the 'pending-held' state, the IPP object MUST add the 'job- | | Current "job- | New "job-state" | Printer's response | | |||
| hold-until-specified' value to the job's "job-state-reasons" | | state" | | status code and action: | | |||
| attribute. | +-------------------+--------------------+--------------------------+ | |||
| | 'pending' | 'pending-held' | 'successful-ok' (note 1) | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'pending' | 'pending' | 'successful-ok' (note 2) | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'pending-held' | 'pending-held' | 'successful-ok' (note 1) | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'pending-held' | 'pending' | 'successful-ok' (note 2) | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'processing' | 'processing' | 'client-error-not- | | ||||
| | | | possible' | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'processing- | 'processing- | 'client-error-not- | | ||||
| | stopped' | stopped' | possible' | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'completed' | 'completed' | 'client-error-not- | | ||||
| | | | possible' | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'canceled' | 'canceled' | 'client-error-not- | | ||||
| | | | possible' | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'aborted' | 'aborted' | 'client-error-not- | | ||||
| | | | possible' | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| Rule 2: If the IPP object supports the "job-hold-until" operation | Table 5: Hold-Job State Transitions | |||
| attribute, but the specified time period has already started (or is | ||||
| the 'no-hold' value) and there are no other reasons to hold the job, | ||||
| the IPP object MUST make the job be a candidate for processing | ||||
| immediately (see Section 4.2.2) by putting the job in the 'pending' | ||||
| state. | ||||
| Note: In order to keep the Hold-Job operation simple, such a request | Note 1: If the implementation supports multiple reasons for a Job to | |||
| is rejected when the job is in the 'processing' or 'processing- | be in the 'pending-held' state, the Printer MUST add the 'job-hold- | |||
| stopped' states. If an operation is needed to hold jobs while in | until-specified' value to the Job's "job-state-reasons" attribute. | |||
| these states, it will be added as an additional operation, rather | ||||
| than overloading the Hold-Job operation. Then it is clear to clients | ||||
| by querying the Printer object's "operations-supported" (see Section | ||||
| 4.4.15) and the Job object's "job-state" (see Section 4.3.7) | ||||
| attributes which operations are possible. | ||||
| Access Rights: The authenticated user (see section 8.3) performing | Note 2: If the Printer supports the "job-hold-until" operation | |||
| this operation must either be the job owner or an operator or | attribute, but the specified time period has already started (or is | |||
| administrator of the Printer object (see Sections 1 and 8.5). | the 'no-hold' value) and there are no other reasons to hold the Job, | |||
| Otherwise, the IPP object MUST reject the operation and return: | the Printer MUST make the Job be a candidate for processing | |||
| 'client-error-forbidden', 'client-error-not-authenticated', or | immediately (see Section 5.2.2) by putting the Job in the 'pending' | |||
| 'client-error-not-authorized' as appropriate. | state. | |||
| 3.3.5.1 Hold-Job Request | 4.3.5.1. Hold-Job Request | |||
| The groups and operation attributes are the same as for a Cancel-Job | The groups and operation attributes are the same as for a Cancel-Job | |||
| request (see section 3.3.3.1), with the addition of the following | request (see Section 4.3.3.1), with the addition of the following | |||
| Group 1 Operation attribute: | Group 1 operation attribute: | |||
| "job-hold-until" (type3 keyword | name(MAX)): | "job-hold-until" (type2 keyword | name(MAX)): | |||
| The client OPTIONALLY supplies this Operation attribute. The | ||||
| IPP object MUST support this operation attribute in a Hold-Job | ||||
| request, if it supports the "job-hold-until" Job template | ||||
| attribute in create operations. See section 4.2.2. The IPP | ||||
| object SHOULD support the "job-hold-until" Job Template | ||||
| attribute for use in job create operations with at least the | ||||
| 'indefinite' value, if it supports the Hold-Job operation. | ||||
| Otherwise, a client cannot create a job and hold it immediately | ||||
| (without picking some supported time period in the future). | ||||
| If supplied and supported as specified in the Printer's "job- | The Client MAY supply and the Printer MUST support this operation | |||
| hold-until-supported" attribute, the IPP object copies the | attribute in a Hold-Job request if it supports the "job-hold- | |||
| supplied operation attribute to the Job object, replacing the | until" Job Template attribute in Job Creation requests. See | |||
| job's previous "job-hold-until" attribute, if present, and | Section 5.2.2. The Printer SHOULD support the "job-hold-until" | |||
| makes the job a candidate for scheduling during the supplied | Job Template attribute for use in Job Job Creation requests with | |||
| named time period. | at least the 'indefinite' value, if it supports the Hold-Job | |||
| operation. Otherwise, a Client cannot create a Job and hold it | ||||
| immediately (without picking some supported time period in the | ||||
| future). | ||||
| If supplied, but either the "job-hold-until" Operation | If supplied and supported as specified in the Printer's "job-hold- | |||
| attribute itself or the value supplied is not supported, the | until-supported" attribute, the Printer copies the supplied | |||
| IPP object accepts the request, returns the unsupported | operation attribute to the Job, replacing the Job's previous "job- | |||
| attribute or value in the Unsupported Attributes Group | hold-until" attribute, if present, and makes the Job a candidate | |||
| according to section 3.1.7, returns the 'successful-ok- | for scheduling during the supplied named time period. | |||
| ignored-or-substituted-attributes, and holds the job | ||||
| indefinitely until a client performs a subsequent Release-Job | ||||
| operation. | ||||
| If the client (1) supplies a value that specifies a time period | If supplied, but either the "job-hold-until" operation attribute | |||
| that has already started or the 'no-hold' value (meaning don't | itself or the value supplied is not supported, the Printer accepts | |||
| hold the job) and (2) the IPP object supports the "job-hold- | the request, returns the unsupported attribute or value in the | |||
| until" operation attribute and there are no other reasons to | Unsupported Attributes group according to Section 4.1.7, returns | |||
| hold the job, the IPP object MUST accept the operation and make | the 'successful-ok-ignored-or-substituted-attributes, and holds | |||
| the job be a candidate for processing immediately (see Section | the Job indefinitely until a Client performs a subsequent Release- | |||
| 4.2.2). | Job operation. | |||
| If the client does not supply a "job-hold-until" Operation | If the Client (1) supplies a value that specifies a time period | |||
| attribute in the request, the IPP object MUST populate the job | that has already started or the 'no-hold' value (meaning don't | |||
| object with a "job-hold-until" attribute with the 'indefinite' | hold the job) and (2) the Printer supports the "job-hold-until" | |||
| value (if IPP object supports the "job-hold-until" attribute) | operation attribute and there are no other reasons to hold the | |||
| and hold the job indefinitely, until a client performs a | job, the Printer MUST accept the operation and make the Job be a | |||
| Release-Job operation. | candidate for processing immediately (see Section 5.2.2). | |||
| 3.3.5.2 Hold-Job Response | If the Client does not supply a "job-hold-until" operation | |||
| attribute in the request, the Printer MUST populate the Job with a | ||||
| "job-hold-until" attribute with the 'indefinite' value (if Printer | ||||
| supports the "job-hold-until" attribute) and hold the Job | ||||
| indefinitely, until a Client performs a Release-Job operation. | ||||
| 4.3.5.2. Hold-Job Response | ||||
| The groups and attributes are the same as for a Cancel-Job response | The groups and attributes are the same as for a Cancel-Job response | |||
| (see section 3.3.3.2). | (see Section 4.3.3.2). | |||
| 3.3.6 Release-Job Operation | 4.3.6. Release-Job Operation | |||
| This OPTIONAL operation allows a client to release a previously held | This OPTIONAL operation allows a Client to release a previously held | |||
| job so that it is again eligible for scheduling. If the Hold-Job | Job so that it is again eligible for scheduling. If the Hold-Job | |||
| operation is supported, then the Release-Job operation MUST be | operation is supported, then the Release-Job operation MUST be | |||
| supported, and vice-versa. | supported, and vice-versa. | |||
| This operation removes the "job-hold-until" job attribute, if | This operation removes the "job-hold-until" Job attribute, if | |||
| present, from the job object that had been supplied in the create or | present, from the Job that had been supplied in the create or most | |||
| most recent Hold-Job or Restart-Job operation and removes its effect | recent Hold-Job or Restart-Job operation and removes its effect on | |||
| on the job. The IPP object MUST remove the 'job-hold-until- | the Job. The Printer MUST remove the 'job-hold-until-specified' value | |||
| specified' value from the job's "job-state-reasons" attribute, if | from the Job's "job-state-reasons" attribute, if present. See | |||
| present. See section 4.3.8. | Section 5.3.8. | |||
| The IPP object MUST accept or reject the request based on the job's | ||||
| current state and transition the job to the indicated new state as | ||||
| follows: | ||||
| Current "job- New "job-state" IPP object's response status | ||||
| state" code and action: | ||||
| 'pending' 'pending' 'successful-ok' | ||||
| No effect on the job. | ||||
| 'pending-held' 'pending-held' 'successful-ok' See Rule 1 | ||||
| 'pending-held' 'pending' 'successful-ok' | ||||
| 'processing' 'processing' 'successful-ok' | ||||
| No effect on the job. | ||||
| 'processing- 'processing- 'successful-ok' | ||||
| stopped' stopped' No effect on the job. | ||||
| 'completed' 'completed' 'client-error-not-possible' | ||||
| 'canceled' 'canceled' 'client-error-not-possible' | ||||
| 'aborted' 'aborted' 'client-error-not-possible' | ||||
| Rule 1: If there are other reasons to keep the job in the 'pending- | The Printer MUST accept or reject the request based on the Job's | |||
| held' state, such as 'resources-are-not-ready', the job remains in | current state and transition the Job to the indicated new state as | |||
| the 'pending-held' state. Thus the 'pending-held' state is not just | shown in Table 6. | |||
| for jobs that have the 'job-hold-until' applied to them, but are for | ||||
| any reason to keep the job from being a candidate for scheduling and | ||||
| processing, such as 'resources-are-not-ready'. See the "job-hold- | ||||
| until" attribute (section 4.2.2). | ||||
| Access Rights: The authenticated user (see section 8.3) performing | Access Rights: The authenticated user (see Section 9.3) performing | |||
| this operation must either be the job owner or an operator or | this operation must either be the Job owner or an Operator or | |||
| administrator of the Printer object (see Sections 1 and 8.5). | Adminstrator of the Printer (see Section 1 and Section 9.5). | |||
| Otherwise, the IPP object MUST reject the operation and return: | Otherwise, the Printer MUST reject the operation and return: 'client- | |||
| 'client-error-forbidden', 'client-error-not-authenticated', or | error-forbidden', 'client-error-not-authenticated', or 'client-error- | |||
| 'client-error-not-authorized' as appropriate. | not-authorized' as appropriate. | |||
| The Release-Job Request and Release-Job Response have the same | The Release-Job Request and Release-Job Response have the same | |||
| attribute groups and attributes as the Cancel-Job operation (see | attribute groups and attributes as the Cancel-Job operation (see | |||
| section 3.3.3.1 and 3.3.3.2). | Section 4.3.3.1 and 3.3.3.2). | |||
| 3.3.7 Restart-Job Operation | +-------------------+--------------------+--------------------------+ | |||
| | Current "job- | New "job-state" | Printer's response | | ||||
| | state" | | status code and action: | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'pending' | 'pending' | 'successful-ok' No | | ||||
| | | | effect on the Job. | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'pending-held' | 'pending-held' | 'successful-ok' (note | | ||||
| | | | 1) | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'pending-held' | 'pending' | 'successful-ok' | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'processing' | 'processing' | 'successful-ok' No | | ||||
| | | | effect on the Job. | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'processing- | 'processing- | 'successful-ok' No | | ||||
| | stopped' | stopped' | effect on the Job. | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'completed' | 'completed' | 'client-error-not- | | ||||
| | | | possible' | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'canceled' | 'canceled' | 'client-error-not- | | ||||
| | | | possible' | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'aborted' | 'aborted' | 'client-error-not- | | ||||
| | | | possible' | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| This OPTIONAL operation allows a client to restart a job that is | Table 6: Release-Job State Transitions | |||
| retained in the queue after processing has completed (see section | ||||
| 4.3.7.2). | ||||
| The job is moved to the 'pending' or 'pending-held' job state and | Note 1: If there are other reasons to keep the Job in the 'pending- | |||
| restarts at the beginning on the same IPP Printer object with the | held' state, such as 'resources-are-not-ready', the Job remains in | |||
| same attribute values. If any of the documents in the job were | the 'pending-held' state. Thus the 'pending-held' state is not just | |||
| passed by reference (Print-URI or Send-URI), the Printer MUST re- | for Jobs that have the 'job-hold-until' applied to them, but are for | |||
| fetch the data, since the semantics of Restart-Job are to repeat all | any reason to keep the Job from being a candidate for scheduling and | |||
| Job processing. The Job Description attributes that accumulate job | processing, such as 'resources-are-not-ready'. See the "job-hold- | |||
| progress, such as "job-impressions-completed", "job-media-sheets- | until" attribute (Section 5.2.2). | |||
| completed", and "job-k-octets-processed", MUST be reset to 0 so that | ||||
| they give an accurate record of the job from its restart point. The | ||||
| job object MUST continue to use the same "job-uri" and "job-id" | ||||
| attribute values. | ||||
| Note: If in the future an operation is needed that does not reset | 4.3.7. Restart-Job Operation | |||
| the job progress attributes, then a new operation will be defined | ||||
| which makes a copy of the job, assigns a new "job-uri" and "job-id" | ||||
| to the copy and resets the job progress attributes in the new copy | ||||
| only. | ||||
| The IPP object MUST accept or reject the request based on the job's | This DEPRECATED operation allows a Client to restart a Job that is | |||
| current state, transition the job to the indicated new state as | retained in the queue after processing has completed (see | |||
| follows: | Section 5.3.7.2). | |||
| Current "job- New "job-state" IPP object's response status | Note: The Resubmit-Job operation [PWG5100.11] is the safe replacement | |||
| state" code and action: | for this operation and makes a copy of the Job, assigns a new "job- | |||
| uri" and "job-id" to the copy, and resets the Job progress attributes | ||||
| in the new copy only. | ||||
| 'pending' 'pending' 'client-error-not-possible' | The Restart-Job operation moves the Job to the 'pending' or 'pending- | |||
| 'pending-held' 'pending-held' 'client-error-not-possible' | held' Job state and restarts at the beginning on the same Printer | |||
| 'processing' 'processing' 'client-error-not-possible' | with the same attribute values. If any of the Documents in the Job | |||
| 'processing- 'processing- 'client-error-not-possible' | were passed by reference (Print-URI or Send-URI), the Printer MUST | |||
| stopped' stopped' | re-fetch the data, since the semantics of Restart-Job are to repeat | |||
| 'completed' 'pending' or 'successful-ok' - job is started | all Job processing. The Job Status attributes that accumulate Job | |||
| 'pending-held' over. | progress, such as "job-impressions-completed", "job-media-sheets- | |||
| 'completed' 'completed' 'client-error-not-possible' - | completed", and "job-k-octets-processed", MUST be reset to 0 so that | |||
| see Rule 1 | they give an accurate record of the Job from its restart point. The | |||
| 'canceled' 'pending' or 'successful-ok' - job is started | Job MUST continue to use the same "job-uri" and "job-id" attribute | |||
| 'pending-held' over. | values. | |||
| 'canceled' 'canceled' 'client-error-not-possible' - | ||||
| see Rule 1 | ||||
| 'aborted' 'pending' or 'successful-ok' - job is started | ||||
| 'pending-held' over. | ||||
| 'aborted' 'aborted' 'client-error-not-possible' - | ||||
| see Rule 1 | ||||
| Rule 1: If the Job Retention Period has expired for the job in this | The Printer MUST accept or reject the request based on the Job's | |||
| state, then the IPP object rejects the operation. See section | current state, transition the Job to the indicated new state as shown | |||
| 4.3.7.2. | in Table 7. | |||
| Note: In order to prevent a user from inadvertently restarting a job | Note: In order to prevent a user from inadvertently restarting a Job | |||
| in the middle, the Restart-Job request is rejected when the job is in | in the middle, the Restart-Job request is rejected when the Job is in | |||
| the 'processing' or 'processing-stopped' states. If in the future an | the 'processing' or 'processing-stopped' states. If in the future an | |||
| operation is needed to hold or restart jobs while in these states, it | operation is needed to hold or restart Jobs while in these states, it | |||
| will be added as an additional operation, rather than overloading the | will be added as an additional operation, rather than overloading the | |||
| Restart-Job operation, so that it is clear that the user intended | Restart-Job operation, so that it is clear that the user intended | |||
| that the current job not be completed. | that the current Job not be completed. | |||
| Access Rights: The authenticated user (see section 8.3) performing | Access Rights: The authenticated user (see Section 9.3) performing | |||
| this operation must either be the job owner or an operator or | this operation must either be the Job owner or an Operator or | |||
| administrator of the Printer object (see Sections 1 and 8.5). | Adminstrator of the Printer (see Section 1 and Section 9.5). | |||
| Otherwise, the IPP object MUST reject the operation and return: | Otherwise, the Printer MUST reject the operation and return: 'client- | |||
| 'client-error-forbidden', 'client-error-not-authenticated', or | error-forbidden', 'client-error-not-authenticated', or 'client-error- | |||
| 'client-error-not-authorized' as appropriate. | not-authorized' as appropriate. | |||
| 3.3.7.1 Restart-Job Request | +-------------------+--------------------+--------------------------+ | |||
| | Current "job- | New "job-state" | Printer's response | | ||||
| | state" | | status code and action: | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'pending' | 'pending' | 'client-error-not- | | ||||
| | | | possible' | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'pending-held' | 'pending-held' | 'client-error-not- | | ||||
| | | | possible' | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'processing' | 'processing' | 'client-error-not- | | ||||
| | | | possible' | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'processing- | 'processing- | 'client-error-not- | | ||||
| | stopped' | stopped' | possible' | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'completed' | 'pending' or | 'successful-ok' - Job is | | ||||
| | | 'pending-held' | started over. | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'completed' | 'completed' | 'client-error-not- | | ||||
| | | | possible' - see Rule 1 | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'canceled' | 'pending' or | 'successful-ok' - Job is | | ||||
| | | 'pending-held' | started over. | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'canceled' | 'canceled' | 'client-error-not- | | ||||
| | | | possible' - see Rule 1 | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'aborted' | 'pending' or | 'successful-ok' - Job is | | ||||
| | | 'pending-held' | started over. | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| | 'aborted' | 'aborted' | 'client-error-not- | | ||||
| | | | possible' - see Rule 1 | | ||||
| +-------------------+--------------------+--------------------------+ | ||||
| Table 7: Restart-Job State Transitions | ||||
| Rule 1: If the Job Retention Period has expired for the Job in this | ||||
| state, then the Printer rejects the operation. See Section 5.3.7.2. | ||||
| 4.3.7.1. Restart-Job Request | ||||
| The groups and attributes are the same as for a Cancel-Job request | The groups and attributes are the same as for a Cancel-Job request | |||
| (see section 3.3.3.1), with the addition of the following Group 1 | (see Section 4.3.3.1), with the addition of the following Group 1 | |||
| Operation attribute: | operation attribute: | |||
| "job-hold-until" (type3 keyword | name(MAX)): | "job-hold-until" (type2 keyword | name(MAX)): | |||
| The client OPTIONALLY supplies this attribute. The IPP object | ||||
| MUST support this Operation attribute in a Restart-Job request, | ||||
| if it supports the "job-hold-until" Job Template attribute in | ||||
| create operations. See section 4.2.2. Otherwise, the IPP | ||||
| object NEED NOT support the "job-hold-until" Operation | ||||
| attribute in a Restart-Job request. | ||||
| If supplied and supported as specified in the Printer's "job- | The Client MAY supply and the Printer MUST support this operation | |||
| hold-until-supported" attribute, the IPP object copies the | attribute in a Restart-Job request if it supports the "job-hold- | |||
| supplied Operation attribute to the Job object, replacing the | until" Job Template attribute in Job Creation requests. See | |||
| job's previous "job-hold-until" attribute, if present, and | Section 5.2.2. | |||
| makes the job a candidate for scheduling during the supplied | ||||
| named time period. See section 4.2.2. | ||||
| If supplied, but the value is not supported, the IPP object | If supplied and supported as specified in the Printer's "job-hold- | |||
| accepts the request, returns the unsupported attribute or value | until-supported" attribute, the Printer copies the supplied | |||
| in the Unsupported Attributes Group according to section 3.1.7, | operation attribute to the Job, replacing the Job's previous "job- | |||
| returns the 'successful-ok-ignored-or-substituted-attributes' | hold-until" attribute, if present, and makes the Job a candidate | |||
| status code, and holds the job indefinitely until a client | for scheduling during the supplied named time period. See | |||
| performs a subsequent Release-Job operation. | Section 5.2.2. | |||
| If supplied, but the "job-hold-until" Operation attribute | If supplied, but the value is not supported, the Printer accepts | |||
| itself is not supported, the IPP object accepts the request, | the request, returns the unsupported attribute or value in the | |||
| returns the unsupported attribute with the out-of-band | Unsupported Attributes group according to Section 4.1.7, returns | |||
| 'unsupported' value in the Unsupported Attributes Group | the 'successful-ok-ignored-or-substituted-attributes' status code, | |||
| according to section 3.1.7, returns the 'successful-ok- | and holds the Job indefinitely until a Client performs a | |||
| ignored-or-substituted-attributes' status code, and restarts | subsequent Release-Job operation. | |||
| the job, i.e., ignores the "job-hold-until" attribute. | ||||
| If the client (1) supplies a value that specifies a time period | If supplied, but the "job-hold-until" operation attribute itself | |||
| that has already started or the 'no-hold' value (meaning don't | is not supported, the Printer accepts the request, returns the | |||
| hold the job) and (2) the IPP object supports the "job-hold- | unsupported attribute with the out-of-band 'unsupported' value in | |||
| until" operation attribute and there are no other reasons to | the Unsupported Attributes group according to Section 4.1.7, | |||
| hold the job, the IPP object makes the job a candidate for | returns the 'successful-ok-ignored-or-substituted-attributes' | |||
| processing immediately (see Section 4.2.2). | status code, and restarts the job, i.e., ignores the "job-hold- | |||
| until" attribute. | ||||
| If the client does not supply a "job-hold-until" operation | If the Client (1) supplies a value that specifies a time period | |||
| attribute in the request, the IPP object removes the "job- | that has already started or the 'no-hold' value (meaning don't | |||
| hold-until" attribute, if present, from the job. If there are | hold the job) and (2) the Printer supports the "job-hold-until" | |||
| no other reasons to hold the job, the Restart-Job operation | operation attribute and there are no other reasons to hold the | |||
| makes the job a candidate for processing immediately (see | job, the Printer makes the Job a candidate for processing | |||
| Section 4.2.2). | immediately (see Section 5.2.2). | |||
| 3.3.7.2 Restart-Job Response | If the Client does not supply a "job-hold-until" operation | |||
| attribute in the request, the Printer removes the "job-hold-until" | ||||
| attribute, if present, from the Job. If there are no other reasons | ||||
| to hold the job, the Restart-Job operation makes the Job a | ||||
| candidate for processing immediately (see Section 5.2.2). | ||||
| The groups and attributes are the same as for a Cancel-Job response | 4.3.7.2. Restart-Job Response | |||
| (see section 3.3.3.2). | ||||
| Note: In the future an OPTIONAL Modify-Job or Set-Job-Attributes | The groups and attributes are the same as for a Cancel-Job response | |||
| operation may be specified that allows the client to modify other | (see Section 4.3.3.2). | |||
| attributes before releasing the restarted job. | ||||
| 4. Object Attributes | 5. Object Attributes | |||
| This section describes the attributes with their corresponding | This section describes the attributes with their corresponding | |||
| attribute syntaxes and values that are part of the IPP model. The | attribute syntaxes and values that are part of the IPP model. The | |||
| sections below show the objects and their associated attributes which | sections below show the objects and their associated attributes which | |||
| are included within the scope of this protocol. Many of these | are included within the scope of this protocol. Many of these | |||
| attributes are derived from other relevant documents: | attributes are derived from other relevant documents: | |||
| - Document Printing Application (DPA) [ISO10175] | o Document Printing Application (DPA) [ISO10175] | |||
| - RFC 1759 Printer MIB [RFC1759] | ||||
| o RFC 3805 Printer MIB v2 [RFC3805] | ||||
| Each attribute is uniquely identified in this document using a | Each attribute is uniquely identified in this document using a | |||
| "keyword" (see section 12.2.1) which is the name of the attribute. | "keyword" (see Section 2.3.7) which is the name of the attribute. | |||
| The keyword is included in the section header describing that | The keyword is included in the section header describing that | |||
| attribute. | attribute. | |||
| Note: Not only are keywords used to identify attributes, but one of | Note: Not only are keywords used to identify attributes, but one of | |||
| the attribute syntaxes described below is "keyword" so that some | the attribute syntaxes described below is "keyword" so that some | |||
| attributes have keyword values. Therefore, these attributes are | attributes have keyword values. Therefore, these attributes are | |||
| defined as having an attribute syntax that is a set of keywords. | defined as having an attribute syntax that is a set of keywords. | |||
| 4.1 Attribute Syntaxes | 5.1. Attribute Syntaxes | |||
| This section defines the basic attribute syntax types that all | This section defines the basic attribute syntax types that all | |||
| clients and IPP objects MUST be able to accept in responses and | Clients and IPP objects MUST be able to accept in responses and | |||
| accept in requests, respectively. Each attribute description in | accept in requests, respectively. Each attribute description in | |||
| sections 3 and 4 includes the name of attribute syntax(es) in the | Section 4 and Section 5 includes the name of attribute syntax(es) in | |||
| heading (in parentheses). A conforming implementation of an | the heading (in parentheses). A conforming implementation of an | |||
| attribute MUST include the semantics of the attribute syntax(es) so | attribute MUST include the semantics of the attribute syntax(es) so | |||
| identified. Section 6.3 describes how the protocol can be extended | identified. Section 7.3 describes how the protocol can be extended | |||
| with new attribute syntaxes. | with new attribute syntaxes. | |||
| The attribute syntaxes are specified in the following sub-sections, | The attribute syntaxes are specified in the following sub-sections, | |||
| where the sub-section heading is the keyword name of the attribute | where the sub-section heading is the keyword name of the attribute | |||
| syntax inside the single quotes. In operation requests and responses | syntax inside the single quotes. In operation requests and responses | |||
| each attribute value MUST be represented as one of the attribute | each attribute value MUST be represented as one of the attribute | |||
| syntaxes specified in the sub-section heading for the attribute. In | syntaxes specified in the sub-section heading for the attribute. In | |||
| addition, the value of an attribute in a response (but not in a | addition, the value of an attribute in a response (but not in a | |||
| request) MAY be one of the "out-of-band" values whose special | request) MAY be one of the "out-of-band" values (Section 5.1.1) whose | |||
| encoding rules are defined in the "Encoding and Transport" document | special encoding rules are defined in the "Encoding and Transport" | |||
| [RFC2910]. Standard "out-of-band" values are: | document [RFC2910bis]. | |||
| 'unknown': The attribute is supported by the IPP object, but the | ||||
| value is unknown to the IPP object for some reason. | ||||
| 'unsupported': The attribute is unsupported by the IPP object. | ||||
| This value MUST be returned only as the value of an attribute | ||||
| in the Unsupported Attributes Group. | ||||
| 'no-value': The attribute is supported by the Printer object, but | ||||
| the administrator has not yet configured a value. | ||||
| All attributes in a request MUST have one or more values as defined | All attributes in a request MUST have one or more values as defined | |||
| in Sections 4.2 to 4.4. Thus clients MUST NOT supply attributes with | in Sections 5.2, 5.3, and 5.4. All attributes in a response MUST | |||
| "out-of-band" values for operations defined in this document. All | have one or more values as defined in Sections 4.2 to 4.4 or a single | |||
| attributes in a response MUST have one or more values as defined in | "out-of-band" value. | |||
| Sections 4.2 to 4.4 or a single "out-of-band" value. | ||||
| Most attributes are defined to have a single attribute syntax. | Most attributes are defined to have a single attribute syntax. | |||
| However, a few attributes (e.g., "job-sheet", "media", "job-hold- | However, a few attributes (e.g., "job-sheet", "media", "job-hold- | |||
| until") are defined to have several attribute syntaxes, depending on | until") are defined to have several attribute syntaxes, depending on | |||
| the value. These multiple attribute syntaxes are separated by the | the value. These multiple attribute syntaxes are separated by the | |||
| "|" character in the sub-section heading to indicate the choice. | "|" character in the sub-section heading to indicate the choice. | |||
| Since each value MUST be tagged as to its attribute syntax in the | Since each value MUST be tagged as to its attribute syntax in the | |||
| protocol, a single-valued attribute instance may have any one of its | protocol, a single-valued attribute instance can have any one of its | |||
| attribute syntaxes and a multi-valued attribute instance may have a | attribute syntaxes and a multi-valued attribute instance can have a | |||
| mixture of its defined attribute syntaxes. | mixture of its defined attribute syntaxes. | |||
| 4.1.1 'text' | 5.1.1. Out-of-Band Values - 'unknown', 'unsupported', and 'no-value' | |||
| This document defines three "out-of-band" values that are used in | ||||
| place of an attribute's defined syntax: | ||||
| 'unknown': The attribute is supported by the IPP object, but the | ||||
| value is unknown to the IPP object for some reason. This out-of- | ||||
| band value is used for attributes that have an intrinsic, physical | ||||
| value that cannot be determined by the IPP object at a given time, | ||||
| e.g., sheet count, geo-location, etc. | ||||
| 'unsupported': The attribute is unsupported by the IPP object. | ||||
| This value MUST be returned only as the value of an attribute in | ||||
| the Unsupported Attributes group. | ||||
| 'no-value': The attribute is supported by the Printer, but the | ||||
| Adminstrator has not yet configured a value. | ||||
| 5.1.2. 'text' | ||||
| A text attribute is an attribute whose value is a sequence of zero or | A text attribute is an attribute whose value is a sequence of zero or | |||
| more characters encoded in a maximum of 1023 ('MAX') octets. MAX is | more characters encoded in a maximum of 1023 ('MAX') octets. MAX is | |||
| the maximum length for each value of any text attribute. However, if | the maximum length for each value of any text attribute. However, if | |||
| an attribute will always contain values whose maximum length is much | an attribute will always contain values whose maximum length is much | |||
| less than MAX, the definition of that attribute will include a | less than MAX, the definition of that attribute will include a | |||
| qualifier that defines the maximum length for values of that | qualifier that defines the maximum length for values of that | |||
| attribute. For example: the "printer-location" attribute is | attribute. For example: the "printer-location" attribute is | |||
| specified as "printer-location (text(127))". In this case, text | specified as "printer-location (text(127))". In this case, text | |||
| values for "printer-location" MUST NOT exceed 127 octets; if supplied | values for "printer-location" MUST NOT exceed 127 octets; if supplied | |||
| with a longer text string via some external interface (other than the | with a longer text string via some external interface (other than the | |||
| protocol), implementations are free to truncate to this shorter | protocol), implementations are free to truncate to this shorter | |||
| length limitation. | length limitation. See Section 8 for more information on truncating | |||
| strings safely. | ||||
| In this document, all text attributes are defined using the 'text' | In this document, all text attributes are defined using the 'text' | |||
| syntax. However, 'text' is used only for brevity; the formal | syntax. However, 'text' is used only for brevity; the formal | |||
| interpretation of 'text' is: 'textWithoutLanguage | | interpretation of 'text' is: 'textWithoutLanguage | | |||
| textWithLanguage'. That is, for any attribute defined in this | textWithLanguage'. That is, for any attribute defined in this | |||
| document using the 'text' attribute syntax, all IPP objects and | document using the 'text' attribute syntax, all IPP objects and | |||
| clients MUST support both the 'textWithoutLanguage' and | Clients MUST support both the 'textWithoutLanguage' and | |||
| 'textWithLanguage' attribute syntaxes. However, in actual usage and | 'textWithLanguage' attribute syntaxes. However, in actual usage and | |||
| protocol execution, objects and clients accept and return only one of | protocol execution, IPP objects and Clients accept and return only | |||
| the two syntax per attribute. The syntax 'text' never appears "on- | one of the two syntax per attribute. The syntax 'text' never appears | |||
| the-wire". | "on-the-wire". | |||
| Both 'textWithoutLanguage' and 'textWithLanguage' are needed to | Both 'textWithoutLanguage' and 'textWithLanguage' are needed to | |||
| support the real world needs of interoperability between sites and | support the real world needs of interoperability between sites and | |||
| systems that use different natural languages as the basis for human | systems that use different natural languages as the basis for human | |||
| communication. Generally, one natural language applies to all text | communication. Generally, one natural language applies to all text | |||
| attributes in a given request or response. The language is indicated | attributes in a given request or response. The language is indicated | |||
| by the "attributes-natural-language" operation attribute defined in | by the "attributes-natural-language" operation attribute defined in | |||
| section 3.1.4 or "attributes-natural-language" job attribute defined | Section 4.1.4 or "attributes-natural-language" Job attribute defined | |||
| in section 4.3.20, and there is no need to identify the natural | in Section 5.3.10, and there is no need to identify the natural | |||
| language for each text string on a value-by-value basis. In these | language for each text string on a value-by-value basis. In these | |||
| cases, the attribute syntax 'textWithoutLanguage' is used for text | cases, the attribute syntax 'textWithoutLanguage' is used for text | |||
| attributes. In other cases, the client needs to supply or the | attributes. In other cases, the Client needs to supply or the | |||
| Printer object needs to return a text value in a natural language | Printer needs to return a text value in a natural language that is | |||
| that is different from the rest of the text values in the request or | different from the rest of the text values in the request or | |||
| response. In these cases, the client or Printer object uses the | response. In these cases, the Client or Printer uses the attribute | |||
| attribute syntax 'textWithLanguage' for text attributes (this is the | syntax 'textWithLanguage' for text attributes (this is the Natural | |||
| Natural Language Override mechanism described in section 3.1.4). | Language Override mechanism described in Section 4.1.4). | |||
| The 'textWithoutLanguage' and 'textWithLanguage' attribute syntaxes | The 'textWithoutLanguage' and 'textWithLanguage' attribute syntaxes | |||
| are described in more detail in the following sections. | are described in more detail in the following sections. | |||
| 4.1.1.1 'textWithoutLanguage' | 5.1.2.1. 'textWithoutLanguage' | |||
| The 'textWithoutLanguage' syntax indicates a value that is sequence | The 'textWithoutLanguage' syntax indicates a value that is sequence | |||
| of zero or more characters encoded in a maximum of 1023 (MAX) octets. | of zero or more characters encoded in a maximum of 1023 (MAX) octets. | |||
| Text strings are encoded using the rules of some charset. The | Text strings are encoded using the rules of some charset. The | |||
| Printer object MUST support the UTF-8 charset [RFC2279] and MAY | Printer MUST support the UTF-8 charset [RFC3629] and MAY support | |||
| support additional charsets to represent 'text' values, provided that | additional charsets to represent 'text' values, provided that the | |||
| the charsets are registered with IANA [IANA-CS]. See Section 4.1.7 | charsets are registered with IANA [IANA-CS]. See Section 5.1.8 for | |||
| for the definition of the 'charset' attribute syntax, including | the definition of the 'charset' attribute syntax, including | |||
| restricted semantics and examples of charsets. | restricted semantics and examples of charsets. | |||
| 4.1.1.2 'textWithLanguage' | 5.1.2.2. 'textWithLanguage' | |||
| The 'textWithLanguage' attribute syntax is a compound attribute | The 'textWithLanguage' attribute syntax is a compound attribute | |||
| syntax consisting of two parts: a 'textWithoutLanguage' part encoded | syntax consisting of two parts: a 'textWithoutLanguage' part encoded | |||
| in a maximum of 1023 (MAX) octets plus an additional | in a maximum of 1023 (MAX) octets plus an additional | |||
| 'naturalLanguage' (see section 4.1.8) part that overrides the natural | 'naturalLanguage' (see Section 5.1.9) part that overrides the natural | |||
| language in force. The 'naturalLanguage' part explicitly identifies | language in force. The 'naturalLanguage' part explicitly identifies | |||
| the natural language that applies to the text part of that value and | the natural language that applies to the text part of that value and | |||
| that value alone. For any give text attribute, the | that value alone. For any give text attribute, the | |||
| 'textWithoutLanguage' part is limited to the maximum length defined | 'textWithoutLanguage' part is limited to the maximum length defined | |||
| for that 'text' attribute, and the 'naturalLanguage' part is always | for that 'text' attribute, and the 'naturalLanguage' part is always | |||
| limited to 63 (additional) octets. Using the 'textWithLanguage' | limited to 63 (additional) octets. Using the 'textWithLanguage' | |||
| attribute syntax rather than the normal 'textWithoutLanguage' syntax | attribute syntax rather than the normal 'textWithoutLanguage' syntax | |||
| is the so-called Natural Language Override mechanism and MUST be | is the so-called Natural Language Override mechanism and MUST be | |||
| supported by all IPP objects and clients. | supported by all IPP objects and Clients. | |||
| If the attribute is multi-valued (1setOf text), then the | If the attribute is multi-valued (1setOf text), then the | |||
| 'textWithLanguage' attribute syntax MUST be used to explicitly | 'textWithLanguage' attribute syntax MUST be used to explicitly | |||
| specify each attribute value whose natural language needs to be | specify each attribute value whose natural language needs to be | |||
| overridden. Other values in a multi-valued 'text' attribute in a | overridden. Other values in a multi-valued 'text' attribute in a | |||
| request or a response revert to the natural language of the operation | request or a response revert to the natural language of the operation | |||
| attribute. | attribute. | |||
| In a create request, the Printer object MUST accept and store with | In a Job Creation request, the Printer MUST accept and store with the | |||
| the Job object any natural language in the "attributes-natural- | Job any natural language in the "attributes-natural-language" | |||
| language" operation attribute, whether the Printer object supports | operation attribute, whether the Printer supports that natural | |||
| that natural language or not. Furthermore, the Printer object MUST | language or not. Furthermore, the Printer MUST accept and store any | |||
| accept and store any 'textWithLanguage' attribute value, whether the | 'textWithLanguage' attribute value, whether the Printer supports that | |||
| Printer object supports that natural language or not. These | natural language or not. These requirements are independent of the | |||
| requirements are independent of the value of the "ipp-attribute- | value of the "ipp-attribute-fidelity" operation attribute that the | |||
| fidelity" operation attribute that the client MAY supply. | Client MAY supply. | |||
| Example: If the client supplies the "attributes-natural-language" | Example: If the Client supplies the "attributes-natural-language" | |||
| operation attribute with the value: 'en' indicating English, but the | operation attribute with the value: 'en' indicating English, but the | |||
| value of the "job-name" attribute is in French, the client MUST use | value of the "job-name" attribute is in French, the Client MUST use | |||
| the 'textWithLanguage' attribute syntax with the following two | the 'textWithLanguage' attribute syntax with the following two | |||
| values: | values: | |||
| 'fr': Natural Language Override indicating French | 'fr': Natural Language Override indicating French | |||
| 'Rapport Mensuel': the job name in French | ||||
| See the "Encoding and Transport" document [RFC2910] section 3.9 for | 'Rapport Mensuel': the Job name in French | |||
| the encoding of the two parts and Appendix A for a detailed example | ||||
| of the 'textWithLanguage' attribute syntax. | ||||
| 4.1.2 'name' | See the "Encoding and Transport" document [RFC2910bis] for the | |||
| encoding of the two parts and a detailed example of the | ||||
| 'textWithLanguage' attribute syntax. | ||||
| 5.1.3. 'name' | ||||
| This syntax type is used for user-friendly strings, such as a Printer | This syntax type is used for user-friendly strings, such as a Printer | |||
| name, that, for humans, are more meaningful than identifiers. Names | name, that, for humans, are more meaningful than identifiers. Names | |||
| are never translated from one natural language to another. The | are never translated from one natural language to another. The | |||
| 'name' attribute syntax is essentially the same as 'text', including | 'name' attribute syntax is essentially the same as 'text', including | |||
| the REQUIRED support of UTF-8 except that the sequence of characters | the REQUIRED support of UTF-8 except that the sequence of characters | |||
| is limited so that its encoded form MUST NOT exceed 255 (MAX) octets. | is limited so that its encoded form MUST NOT exceed 255 (MAX) octets. | |||
| Also like 'text', 'name' is really an abbreviated notation for either | Also like 'text', 'name' is really an abbreviated notation for either | |||
| 'nameWithoutLanguage' or 'nameWithLanguage'. That is, all IPP | 'nameWithoutLanguage' or 'nameWithLanguage'. That is, all IPP | |||
| objects and clients MUST support both the 'nameWithoutLanguage' and | objects and Clients MUST support both the 'nameWithoutLanguage' and | |||
| 'nameWithLanguage' attribute syntaxes. However, in actual usage and | 'nameWithLanguage' attribute syntaxes. However, in actual usage and | |||
| protocol execution, objects and clients accept and return only one of | protocol execution, IPP objects and Clients accept and return only | |||
| the two syntax per attribute. The syntax 'name' never appears "on- | one of the two syntax per attribute. The syntax 'name' never appears | |||
| the-wire". | "on-the-wire". | |||
| Only the 'text' and 'name' attribute syntaxes permit the Natural | Only the 'text' and 'name' attribute syntaxes permit the Natural | |||
| Language Override mechanism. | Language Override mechanism. | |||
| Some attributes are defined as 'type3 keyword | name'. These | Some attributes are defined as 'type2 keyword | name'. These | |||
| attributes support values that are either type3 keywords or names. | attributes support values that are either type2 keywords or names. | |||
| This dual-syntax mechanism enables a site administrator to extend | This dual-syntax mechanism enables a site Adminstrator to extend | |||
| these attributes to legally include values that are locally defined | these attributes to legally include values that are locally defined | |||
| by the site administrator. Such names are not registered with IANA. | by the site Adminstrator. Such names are not registered with IANA. | |||
| 4.1.2.1 'nameWithoutLanguage' | 5.1.3.1. 'nameWithoutLanguage' | |||
| The 'nameWithoutLanguage' syntax indicates a value that is sequence | The nameWithoutLanguage' syntax indicates a value that is sequence of | |||
| of zero or more characters encoded in a maximum of 255 (MAX) octets. | zero or more characters encoded in a maximum of 255 (MAX) octets. | |||
| 4.1.2.2 'nameWithLanguage' | 5.1.3.2. 'nameWithLanguage' | |||
| The 'nameWithLanguage' attribute syntax is a compound attribute | The 'nameWithLanguage' attribute syntax is a compound attribute | |||
| syntax consisting of two parts: a 'nameWithoutLanguage' part encoded | syntax consisting of two parts: a 'nameWithoutLanguage' (see | |||
| in a maximum of 1023 (MAX) octets plus an additional | Section 5.1.3.1) part plus an additional 'naturalLanguage' (see | |||
| 'naturalLanguage' (see section 4.1.8) part that overrides the natural | Section 5.1.9) part that overrides the natural language in force. | |||
| language in force. The 'naturalLanguage' part explicitly identifies | The 'naturalLanguage' part explicitly identifies the natural language | |||
| the natural language that applies to that name value and that name | that applies to that name value and that name value alone. For any | |||
| value alone. For any give text attribute, the 'textWithoutLanguage' | give name attribute, the 'nameWithoutLanguage' part is limited to the | |||
| part is limited to the maximum length defined for that 'text' | maximum length defined for that 'name' attribute, and the | |||
| attribute, and the 'naturalLanguage' part is always limited to 63 | 'naturalLanguage' part is always limited to 63 (additional) octets. | |||
| (additional) octets. Using the 'textWithLanguage' attribute syntax | Using the 'nameWithLanguage' attribute syntax rather than the normal | |||
| rather than the normal 'textWithoutLanguage' syntax is the so-called | 'nameWithoutLanguage' syntax is the so-called Natural Language | |||
| Natural Language Override mechanism and MUST be supported by all IPP | Override mechanism and MUST be supported by all IPP objects and | |||
| objects and clients. | Clients. | |||
| The 'nameWithLanguage' attribute syntax behaves the same as the | The 'nameWithLanguage' attribute syntax behaves the same as the | |||
| 'textWithLanguage' syntax. Using the 'textWithLanguage' attribute | 'textWithLanguage' syntax. If a name is in a language that is | |||
| syntax rather than the normal 'textWithoutLanguage' syntax is the | ||||
| so-called Natural Language Override mechanism and MUST be supported | ||||
| by all IPP objects and clients. If a name is in a language that is | ||||
| different than the rest of the object or operation, then this | different than the rest of the object or operation, then this | |||
| 'nameWithLanguage' syntax is used rather than the generic | 'nameWithLanguage' syntax is used rather than the generic | |||
| 'nameWithoutLanguage' syntax. | 'nameWithoutLanguage' syntax. | |||
| If the attribute is multi-valued (1setOf text), then the | If the attribute is multi-valued (1setOf name), then the | |||
| 'nameWithLanguage' attribute syntax MUST be used to explicitly | 'nameWithLanguage' attribute syntax MUST be used to explicitly | |||
| specify each attribute value whose natural language needs to be | specify each attribute value whose natural language needs to be | |||
| overridden. | overridden. Other values in a multi-valued 'name' attribute in a | |||
| request or a response revert to the natural language of the operation | ||||
| Other values in a multi-valued 'name' attribute in a request or a | attribute. | |||
| response revert to the natural language of the operation attribute. | ||||
| In a create request, the Printer object MUST accept and store with | In a Job Creation request, the Printer MUST accept and store with the | |||
| the Job object any natural language in the "attributes-natural- | Job any natural language in the "attributes-natural-language" | |||
| language" operation attribute, whether the Printer object supports | operation attribute, whether the Printer supports that natural | |||
| that natural language or not. Furthermore, the Printer object MUST | language or not. Furthermore, the Printer MUST accept and store any | |||
| accept and store any 'nameWithLanguage' attribute value, whether the | 'nameWithLanguage' attribute value, whether the Printer supports that | |||
| Printer object supports that natural language or not. These | natural language or not. These requirements are independent of the | |||
| requirements are independent of the value of the "ipp-attribute- | value of the "ipp-attribute-fidelity" operation attribute that the | |||
| fidelity" operation attribute that the client MAY supply. | Client MAY supply. | |||
| Example: If the client supplies the "attributes-natural-language" | Example: If the Client supplies the "attributes-natural-language" | |||
| operation attribute with the value: 'en' indicating English, but the | operation attribute with the value: 'en' indicating English, but the | |||
| "printer-name" attribute is in German, the client MUST use the | "printer-name" attribute is in German, the Client MUST use the | |||
| 'nameWithLanguage' attribute syntax as follows: | 'nameWithLanguage' attribute syntax as follows: | |||
| 'de': Natural Language Override indicating German | 'de': Natural Language Override indicating German | |||
| 'Farbdrucker': the Printer name in German | ||||
| See the "Encoding and Transport" document [RFC2910] section 3.9 for | 'Farbdrucker': the Printer name in German | |||
| the encoding of the two parts and Appendix A for a detailed example | ||||
| of the 'nameWithLanguage' attribute syntax. | ||||
| 4.1.2.3 Matching 'name' attribute values | See the "Encoding and Transport" document [RFC2910bis] for the | |||
| encoding of the two parts and a detailed example of the | ||||
| 'nameWithLanguage' attribute syntax. | ||||
| 5.1.3.3. Matching 'name' attribute values | ||||
| For purposes of matching two 'name' attribute values for equality, | For purposes of matching two 'name' attribute values for equality, | |||
| such as in job validation (where a client-supplied value for | such as in Job validation (where a Client-supplied value for | |||
| attribute "xxx" is checked to see if the value is among the values of | attribute "xxx" is checked to see if the value is among the values of | |||
| the Printer object's corresponding "xxx-supported" attribute), the | the Printer's corresponding "xxx-supported" attribute), the following | |||
| following match rules apply: | match rules apply: | |||
| 1. 'keyword' values never match 'name' values. | 1. 'keyword' values never match 'name' values. | |||
| 2. 'name' (nameWithoutLanguage and nameWithLanguage) values match | 2. 'name' (nameWithoutLanguage and nameWithLanguage) values match if | |||
| if (1) the name parts match and (2) the Associated Natural- | (1) the name parts match and (2) the Associated Natural-Language | |||
| Language parts (see section 3.1.4.1) match. The matching rules | parts (see Section 4.1.4.1) match. The matching rules are: | |||
| are: | ||||
| a. the name parts match if the two names are identical | 2a. the name parts match if the two names are identical | |||
| character by character, except it is RECOMMENDED that case | character by character, except it is RECOMMENDED that case | |||
| be ignored. For example: 'Ajax-letter-head-white' MUST | be ignored. For example: 'Ajax-letter-head-white' MUST | |||
| match 'Ajax-letter-head-white' and SHOULD match 'ajax- | match 'Ajax-letter-head-white' and SHOULD match 'ajax- | |||
| letter-head-white' and 'AJAX-LETTER-HEAD-WHITE'. | letter-head-white' and 'AJAX-LETTER-HEAD-WHITE'. | |||
| b. the Associated Natural-Language parts match if the shorter | 2b. the Associated Natural-Language parts match if the shorter | |||
| of the two meets the syntactic requirements of RFC 1766 | of the two meets the syntactic requirements of RFC 1766 | |||
| [RFC1766] and matches byte for byte with the longer. For | [RFC5646] and matches byte for byte with the longer. For | |||
| example, 'en' matches 'en', 'en-us' and 'en-gb', but matches | example, 'en' matches 'en', 'en-us' and 'en-gb', but matches | |||
| neither 'fr' nor 'e'. | neither 'fr' nor 'e'. | |||
| 4.1.3 'keyword' | 5.1.4. 'keyword' | |||
| The 'keyword' attribute syntax is a sequence of characters, length: 1 | The 'keyword' attribute syntax is a sequence of characters, length: 1 | |||
| to 255, containing only the US-ASCII [ASCII] encoded values for | to 255, containing only the US-ASCII [ASCII] encoded values for | |||
| lowercase letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"), dot | lowercase letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"), dot | |||
| ("."), and underscore ("_"). The first character MUST be a lowercase | ("."), and underscore ("_"). The first character MUST be a lowercase | |||
| letter. Furthermore, keywords MUST be in U.S. English. | letter. Furthermore, keywords MUST be in U.S. English. | |||
| This syntax type is used for enumerating semantic identifiers of | This syntax type is used for enumerating semantic identifiers of | |||
| entities in the abstract protocol, i.e., entities identified in this | entities in the abstract protocol, i.e., entities identified in this | |||
| document. Keywords are used as attribute names or values of | document. Keywords are used as attribute names or values of | |||
| attributes. Unlike 'text' and 'name' attribute values, 'keyword' | attributes. Unlike 'text' and 'name' attribute values, 'keyword' | |||
| values MUST NOT use the Natural Language Override mechanism, since | values MUST NOT use the Natural Language Override mechanism, since | |||
| they MUST always be US-ASCII and U.S. English. | they MUST always be US-ASCII and U.S. English. | |||
| Keywords are for use in the protocol. A user interface will likely | Keywords are for use in the protocol. A user interface will likely | |||
| provide a mapping between protocol keywords and displayable user- | provide a mapping between protocol keywords and displayable user- | |||
| friendly words and phrases which are localized to the natural | friendly words and phrases which are localized to the natural | |||
| language of the user. While the keywords specified in this document | language of the user. While the keywords specified in this document | |||
| MAY be displayed to users whose natural language is U.S. English, | MAY be displayed to users whose natural language is U.S. English, | |||
| they MAY be mapped to other U.S. English words for U.S. English | they MAY be mapped to other U.S. English words for U.S. English | |||
| users, since the user interface is outside the scope of this | users, since the user interface is outside the scope of this | |||
| document. | document. | |||
| In the definition for each attribute of this syntax type, the full | In the definition for each attribute of this syntax type, the full | |||
| set of defined keyword values for that attribute are listed. | set of keyword values being defined for that attribute are listed. | |||
| The IANA IPP registry will always contain the complete and current | ||||
| list of keyword values for the attribute. | ||||
| When a keyword is used to represent an attribute (its name), it MUST | When a keyword is used to represent an attribute (its name), it MUST | |||
| be unique within the full scope of all IPP objects and attributes. | be unique within the full scope of all IPP objects and attributes. | |||
| When a keyword is used to represent a value of an attribute, it MUST | When a keyword is used to represent a value of an attribute, it MUST | |||
| be unique just within the scope of that attribute. That is, the same | be unique just within the scope of that attribute. That is, the same | |||
| keyword MUST NOT be used for two different values within the same | keyword MUST NOT be used for two different values within the same | |||
| attribute to mean two different semantic ideas. However, the same | attribute to mean two different semantic ideas. However, the same | |||
| keyword MAY be used across two or more attributes, representing | keyword MAY be used across two or more attributes, representing | |||
| different semantic ideas for each attribute. Section 6.1 describes | different semantic ideas for each attribute. Section 7.1 describes | |||
| how the protocol can be extended with new keyword values. Examples | how the protocol can be extended with new keyword values. Examples | |||
| of attribute name keywords: | of attribute name keywords: | |||
| "job-name" | "job-name" | |||
| "attributes-charset" | "attributes-charset" | |||
| Note: This document uses "type1", "type2", and "type3" prefixes to | Note: This document uses "type1" and "type2" prefixes to the | |||
| the "keyword" basic syntax to indicate different levels of review for | "keyword" basic syntax to indicate different levels of review for | |||
| extensions (see section 6.1). | extensions (see Section 7.1). | |||
| 4.1.4 'enum' | 5.1.5. 'enum' | |||
| The 'enum' attribute syntax is an enumerated integer value that is in | The 'enum' attribute syntax is an enumerated integer value that is in | |||
| the range from 1 to 2**31 - 1 (MAX). Each value has an associated | the range from 1 to 2**31 - 1 (MAX). Each value has an associated | |||
| 'keyword' name. In the definition for each attribute of this syntax | 'keyword' name. In the definition for each attribute of this syntax | |||
| type, the full set of possible values for that attribute are listed. | type, the full set of possible values for that attribute are listed. | |||
| This syntax type is used for attributes for which there are enum | This syntax type is used for attributes for which there are enum | |||
| values assigned by other standards, such as SNMP MIBs. A number of | values assigned by other standards, such as SNMP MIBs. A number of | |||
| attribute enum values in this document are also used for | attribute enum values in this document are also used for | |||
| corresponding attributes in other standards [RFC1759]. This syntax | corresponding attributes in other standards [RFC3805]. This syntax | |||
| type is not used for attributes to which the administrator may assign | type is not used for attributes to which the Adminstrator can assign | |||
| values. Section 6.1 describes how the protocol can be extended with | values. Section 7.1 describes how the protocol can be extended with | |||
| new enum values. | new enum values. | |||
| Enum values are for use in the protocol. A user interface will | Enum values are for use in the protocol. A user interface will | |||
| provide a mapping between protocol enum values and displayable user- | provide a mapping between protocol enum values and displayable user- | |||
| friendly words and phrases which are localized to the natural | friendly words and phrases which are localized to the natural | |||
| language of the user. While the enum symbols specified in this | language of the user. While the enum symbols specified in this | |||
| document MAY be displayed to users whose natural language is U.S. | document MAY be displayed to users whose natural language is U.S. | |||
| English, they MAY be mapped to other U.S. English words for U.S. | English, they MAY be mapped to other U.S. English words for U.S. | |||
| English users, since the user interface is outside the scope of this | English users, since the user interface is outside the scope of this | |||
| document. | document. | |||
| Note: SNMP MIBs use '2' for 'unknown' which corresponds to the IPP | Note: Some SNMP MIBs use '2' for 'unknown' which corresponds to the | |||
| "out-of-band" value 'unknown'. See the description of the "out-of- | IPP "out-of-band" value 'unknown'. See the description of the "out- | |||
| band" values at the beginning of Section 4.1. Therefore, attributes | of-band" values at the beginning of Section 5.1. Therefore, | |||
| of type 'enum' start at '3'. | attributes of type 'enum' typically start at '3'. | |||
| Note: This document uses "type1", "type2", and "type3" prefixes to | Note: This document uses "type1" and "type2" prefixes to the "enum" | |||
| the "enum" basic syntax to indicate different levels of review for | basic syntax to indicate different levels of review for extensions | |||
| extensions (see section 6.1). | (see Section 7.1). | |||
| 4.1.5 'uri' | 5.1.6. 'uri' | |||
| The 'uri' attribute syntax is any valid Uniform Resource Identifier | The 'uri' attribute syntax is any valid Uniform Resource Identifier | |||
| or URI [RFC2396]. Most often, URIs are simply Uniform Resource | or URI [RFC3986]. Most often, URIs are simply Uniform Resource | |||
| Locators or URLs. The maximum length of URIs used as values of IPP | Locators or URLs. The maximum length of URIs used as values of IPP | |||
| attributes is 1023 octets. Although most other IPP attribute syntax | attributes is 1023 octets. Although most other IPP attribute syntax | |||
| types allow for only lower-cased values, this attribute syntax type | types allow for only lowercased values, this attribute syntax type | |||
| conforms to the case-sensitive and case-insensitive rules specified | conforms to the case-sensitive and case-insensitive rules specified | |||
| in [RFC2396]. See also [IPP-IIG] for a discussion of case in URIs. | in [RFC3986]. See also [RFC3196] and [PWG5100.19] for discussion of | |||
| case in URIs. | ||||
| 4.1.6 'uriScheme' | 5.1.7. 'uriScheme' | |||
| The 'uriScheme' attribute syntax is a sequence of characters | The 'uriScheme' attribute syntax is a sequence of characters | |||
| representing a URI scheme according to RFC 2396 [RFC2396]. Though | representing a URI scheme according to RFC 3986 [RFC3986]. Though | |||
| RFC 2396 requires that the values be case-insensitive, IPP requires | RFC 3986 requires that the values be case-insensitive, IPP requires | |||
| all lower case values in IPP attributes to simplify comparing by IPP | all lowercase values in IPP attributes to simplify comparing by IPP | |||
| clients and Printer objects. | Clients and Printers. | |||
| Standard values for this syntax type are the following keywords: | Standard values for this syntax type include the following keywords: | |||
| 'ipp': for IPP schemed URIs (e.g., "ipp:...") | o 'ipp': for IPP schemed URIs, e.g., "ipp://example.com/ipp/..." | |||
| 'http': for HTTP schemed URIs (e.g., "http:...") | ||||
| 'https': for use with HTTPS schemed URIs (e.g., "https:...") (not | ||||
| on IETF standards track) | ||||
| 'ftp': for FTP schemed URIs (e.g., "ftp:...") | ||||
| 'mailto': for SMTP schemed URIs (e.g., "mailto:...") | ||||
| 'file': for file schemed URIs (e.g., "file:...") | ||||
| A Printer object MAY support any URI 'scheme' that has been | o 'ipps': for IPPS schemed URIs, e.g., "ipps://example.com/ipp/..." | |||
| registered with IANA [IANA-MT]. The maximum length of URI 'scheme' | ||||
| values used to represent IPP attribute values is 63 octets. | ||||
| 4.1.7 'charset' | o 'http': for HTTP schemed URIs, e.g., "http://example.com/path/to/ | |||
| filename" | ||||
| o 'https': for HTTPS schemed URIs, e.g., | ||||
| "https://example.com/path/to/filename" | ||||
| o 'ftp': for FTP schemed URIs, e.g., "ftp://example.com/path/to/ | ||||
| filename" | ||||
| o 'mailto': for SMTP schemed URIs, e.g., "mailto:user@example.com" | ||||
| o 'file': for file schemed URIs, e.g., "file:///path/to/filename" | ||||
| o 'urn': for Uniform Resource Name schemed URIs, e.g., | ||||
| "urn:uuid:01234567-89ab-cdef-fedc-ba9876543210" | ||||
| A Printer MAY support any URI 'scheme' that has been registered with | ||||
| IANA [IANA-MT]. The maximum length of URI 'scheme' values used to | ||||
| represent IPP attribute values is 63 octets. | ||||
| 5.1.8. 'charset' | ||||
| The 'charset' attribute syntax is a standard identifier for a | The 'charset' attribute syntax is a standard identifier for a | |||
| charset. A charset is a coded character set and encoding scheme. | charset. A charset is a coded character set and encoding scheme. | |||
| Charsets are used for labeling certain document contents and 'text' | Charsets are used for labeling certain document contents and 'text' | |||
| and 'name' attribute values. The syntax and semantics of this | and 'name' attribute values. The syntax and semantics of this | |||
| attribute syntax are specified in RFC 2046 [RFC2046] and contained in | attribute syntax are specified in RFC 2046 [RFC2046] and contained in | |||
| the IANA character-set Registry [IANA-CS] according to the IANA | the IANA character-set Registry [IANA-CS] according to the IANA | |||
| procedures [RFC2278]. Though RFC 2046 requires that the values be | procedures [RFC2978]. Though RFC 2046 requires that the values be | |||
| case-insensitive US-ASCII [ASCII], IPP requires all lower case values | case-insensitive US-ASCII [ASCII], IPP requires all lowercase values | |||
| in IPP attributes to simplify comparing by IPP clients and Printer | in IPP attributes to simplify comparing by IPP Clients and Printers. | |||
| objects. When a character-set in the IANA registry has more than one | When a character-set in the IANA registry has more than one name | |||
| name (alias), the name labeled as "(preferred MIME name)", if | (alias), the name labeled as "(preferred MIME name)", if present, | |||
| present, MUST be used. | MUST be used. | |||
| The maximum length of 'charset' values used to represent IPP | The maximum length of 'charset' values used to represent IPP | |||
| attribute values is 63 octets. | attribute values is 63 octets. | |||
| Some examples are: | Some examples are: | |||
| 'utf-8': ISO 10646 Universal Multiple-Octet Coded Character Set | o 'utf-8': ISO 10646 Universal Multiple-Octet Coded Character Set | |||
| (UCS) represented as the UTF-8 [RFC2279] transfer encoding | (UCS) [ISO10646-1] represented as the UTF-8 [RFC3629] transfer | |||
| scheme in which US-ASCII is a subset charset. | encoding scheme in which US-ASCII [ASCII] is a subset charset. | |||
| 'us-ascii': 7-bit American Standard Code for Information | ||||
| Interchange (ASCII), ANSI X3.4-1986 [ASCII]. That standard | o 'us-ascii': 7-bit American Standard Code for Information | |||
| defines US-ASCII, but RFC 2045 [RFC2045] eliminates most of the | Interchange (ASCII), ANSI X3.4-1986 [ASCII]. That standard | |||
| control characters from conformant usage in MIME and IPP. | defines US-ASCII, but RFC 2045 [RFC2045] eliminates most of the | |||
| 'iso-8859-1': 8-bit One-Byte Coded Character Set, Latin Alphabet | control characters from conformant usage in MIME and IPP. | |||
| Nr 1 [ISO8859-1]. That standard defines a coded character set | ||||
| that is used by Latin languages in the Western Hemisphere and | o 'iso-8859-1': 8-bit One-Byte Coded Character Set, Latin Alphabet | |||
| Western Europe. US-ASCII is a subset charset. | Nr 1 [ISO8859-1]. That standard defines a coded character set | |||
| that is used by Latin languages in the Western Hemisphere and | ||||
| Western Europe. US-ASCII is a subset charset. | ||||
| Some attribute descriptions MAY place additional requirements on | Some attribute descriptions MAY place additional requirements on | |||
| charset values that may be used, such as REQUIRED values that MUST be | charset values that can be used, such as REQUIRED values that MUST be | |||
| supported or additional restrictions, such as requiring that the | supported or additional restrictions, such as requiring that the | |||
| charset have US- ASCII as a subset charset. | charset have US-ASCII as a subset charset. | |||
| 4.1.8 'naturalLanguage' | 5.1.9. 'naturalLanguage' | |||
| The 'naturalLanguage' attribute syntax is a standard identifier for a | The 'naturalLanguage' attribute syntax is a standard identifier for a | |||
| natural language and optionally a country. The values for this | natural language and optionally a country or region. The values for | |||
| syntax type are defined by RFC 1766 [RFC1766]. Though RFC 1766 | this syntax type are defined by RFC 5646 [RFC5646]. Though RFC 5646 | |||
| requires that the values be case-insensitive US-ASCII [ASCII], IPP | requires that the values be case-insensitive US-ASCII, IPP requires | |||
| requires all lower case to simplify comparing by IPP clients and | all lowercase to simplify comparing by IPP Clients and Printers. | |||
| Printer objects. Examples include: | Examples include: | |||
| 'en': for English | o 'en': for English | |||
| 'en-us': for US English | ||||
| 'fr': for French | o 'en-us': for US English | |||
| 'de': for German | ||||
| o 'fr': for French | ||||
| o 'de': for German | ||||
| The maximum length of 'naturalLanguage' values used to represent IPP | The maximum length of 'naturalLanguage' values used to represent IPP | |||
| attribute values is 63 octets. | attribute values is 63 octets. | |||
| 4.1.9 'mimeMediaType' | Note: While any standard RFC 5646 natural language identifier can be | |||
| used, Clients typically only support a subset of these identifiers. | ||||
| When comparing two identifiers or performing lookups, Printers SHOULD | ||||
| be prepared to match legacy identifiers with their corresponding | ||||
| modern equivalents and vice-versa. | ||||
| 5.1.10. 'mimeMediaType' | ||||
| The 'mimeMediaType' attribute syntax is the Internet Media Type | The 'mimeMediaType' attribute syntax is the Internet Media Type | |||
| (sometimes called MIME type) as defined by RFC 2046 [RFC2046] and | (sometimes called MIME type) as defined by RFC 2046 [RFC2046] and | |||
| registered according to the procedures of RFC 2048 [RFC2048] for | registered according to the procedures of RFC 6838 [RFC6838] for | |||
| identifying a document format. The value MAY include a charset, or | identifying a Document format. The value MAY include a charset, or | |||
| other, parameter, depending on the specification of the Media Type in | other, parameter, depending on the specification of the Media Type in | |||
| the IANA Registry [IANA-MT]. Although most other IPP syntax types | the IANA Registry [IANA-MT]. Although most other IPP syntax types | |||
| allow for only lower-cased values, this syntax type allows for | allow for only lowercased values, this syntax type allows for mixed- | |||
| mixed-case values which are case-insensitive. | case values which are case-insensitive. | |||
| Examples are: | Examples are: | |||
| 'text/html': An HTML document | ||||
| 'text/plain': A plain text document in US-ASCII (RFC 2046 | ||||
| indicates that in the absence of the charset parameter MUST | ||||
| mean US-ASCII rather than simply unspecified) [RFC2046]. | ||||
| 'text/plain; charset=US-ASCII': A plain text document in US-ASCII | ||||
| [52, 56]. | ||||
| 'text/plain; charset=ISO-8859-1': A plain text document in ISO | o 'text/html': An HTML document | |||
| 8859-1 (Latin 1) [ISO8859-1]. | ||||
| 'text/plain; charset=utf-8': A plain text document in ISO 10646 | o 'text/plain': A plain text document in US-ASCII (RFC 2046 | |||
| represented as UTF-8 [RFC2279] | indicates that in the absence of the charset parameter MUST mean | |||
| 'application/postscript': A PostScript document [RFC2046] | US-ASCII rather than simply unspecified) [RFC2046]. | |||
| 'application/vnd.hp-PCL': A PCL document [IANA-MT] (charset | ||||
| escape sequence embedded in the document data) | o 'text/plain; charset=US-ASCII': A plain text document in US-ASCII. | |||
| 'application/pdf': Portable Document Format - see IANA MIME Media | ||||
| Type registry | o 'text/plain; charset=ISO-8859-1': A plain text document in ISO | |||
| 'application/octet-stream': Auto-sense - see section 4.1.9.1 | 8859-1 (Latin 1) [ISO8859-1]. | |||
| o 'text/plain; charset=utf-8': A plain text document in ISO 10646 | ||||
| represented as UTF-8 [RFC3629] | ||||
| o 'application/postscript': A PostScript document [RFC2046] | ||||
| o 'application/vnd.hp-PCL': A PCL document [IANA-MT] (charset escape | ||||
| sequence embedded in the Document data) | ||||
| o 'application/pdf': Portable Document Format [ISO32000] | ||||
| o 'application/octet-stream': Auto-sense - see Section 5.1.10.1 | ||||
| The maximum length of a 'mimeMediaType' value to represent IPP | The maximum length of a 'mimeMediaType' value to represent IPP | |||
| attribute values is 255 octets. | attribute values is 255 octets. | |||
| 4.1.9.1 Application/octet-stream -- Auto-Sensing the document format | 5.1.10.1. Application/octet-stream -- Auto-Sensing the Document format | |||
| One special type is 'application/octet-stream'. If the Printer | One special type is 'application/octet-stream'. If the Printer | |||
| object supports this value, the Printer object MUST be capable of | supports this value, the Printer MUST be capable of auto-sensing the | |||
| auto-sensing the format of the document data using an | format of the Document data using an implementation-dependent method | |||
| implementation-dependent method that examines some number of octets | that examines some number of octets of the Document data, either as | |||
| of the document data, either as part of the create operation and/or | part of the Job Creation request and/or at Document processing time. | |||
| at document processing time. During auto-sensing, a Printer may | During auto-sensing, a Printer can determine that the Document data | |||
| determine that the document-data has a format that the Printer | has a format that the Printer doesn't recognize. If the Printer | |||
| doesn't recognize. If the Printer determines this problem before | determines this problem before returning an operation response, it | |||
| returning an operation response, it rejects the request and returns | rejects the request and returns the 'client-error-document-format- | |||
| the 'client-error-document-format-not-supported' status code. If the | not-supported' status code. If the Printer determines this problem | |||
| Printer determines this problem after accepting the request and | after accepting the request and returning an operation response with | |||
| returning an operation response with one of the successful status | one of the successful status codes, the Printer adds the | |||
| codes, the Printer adds the 'unsupported-document-format' value to | 'unsupported-document-format' value to the Job's "job-state-reasons" | |||
| the job's "job-state-reasons" attribute. | attribute. | |||
| If the Printer object's default value attribute "document-format- | If the Printer's default value attribute "document-format-default" is | |||
| default" is set to 'application/octet-stream', the Printer object not | set to 'application/octet-stream', the Printer not only supports | |||
| only supports auto-sensing of the document format, but will depend on | auto-sensing of the Document format, but will depend on the result of | |||
| the result of applying its auto-sensing when the client does not | applying its auto-sensing when the Client does not supply the | |||
| supply the "document-format" attribute. If the client supplies a | "document-format" attribute. If the Client supplies a Document | |||
| document format value, the Printer MUST rely on the supplied | format value, the Printer MUST rely on the supplied attribute, rather | |||
| attribute, rather than trust its auto-sensing algorithm. To | than trust its auto-sensing algorithm. To summarize: | |||
| summarize: | ||||
| 1. If the client does not supply a document format value, the | 1. If the Client does not supply a Document format value, the | |||
| Printer MUST rely on its default value setting (which may be | Printer MUST rely on its default value setting (which can be | |||
| 'application/octet-stream' indicating an auto-sensing | 'application/octet-stream' indicating an auto-sensing mechanism). | |||
| mechanism). | ||||
| 2. If the client supplies a value other than 'application/octet- | ||||
| stream', the client is supplying valid information about the | ||||
| format of the document data and the Printer object MUST trust | ||||
| the client supplied value more than the outcome of applying an | ||||
| automatic format detection mechanism. For example, the client | ||||
| may be requesting the printing of a PostScript file as a | ||||
| 'text/plain' document. The Printer object MUST print a text | ||||
| representation of the PostScript commands rather than interpret | ||||
| the stream of PostScript commands and print the result. | ||||
| 3. If the client supplies a value of 'application/octet-stream', | ||||
| the client is indicating that the Printer object MUST use its | ||||
| auto-sensing mechanism on the client supplied document data | ||||
| whether auto-sensing is the Printer object's default or not. | ||||
| Note: Since the auto-sensing algorithm is probabilistic, if the | 2. If the Client supplies a value other than 'application/octet- | |||
| client requests both auto-sensing ("document-format" set to | stream', the Client is supplying valid information about the | |||
| 'application/octet-stream') and true fidelity ("ipp-attribute- | format of the Document data and the Printer MUST trust the Client | |||
| fidelity" set to 'true'), the Printer object might not be able to | supplied value more than the outcome of applying an automatic | |||
| guarantee exactly what the end user intended (the auto-sensing | format detection mechanism. For example, the Client can request | |||
| algorithm might mistake one document format for another), but it is | the printing of a PostScript file as a 'text/plain' document. | |||
| able to guarantee that its auto-sensing mechanism be used. | The Printer MUST print a text representation of the PostScript | |||
| commands rather than interpret the stream of PostScript commands | ||||
| and print the result. | ||||
| When a Printer performs auto-sensing of a document in a submitted | 3. If the Client supplies a value of 'application/octet-stream', the | |||
| job, it is RECOMMENDED that the Printer indicate to the user that | Client is indicating that the Printer MUST use its auto-sensing | |||
| such auto-sensing has occurred and which document-format was auto- | mechanism on the Client supplied Document data whether auto- | |||
| sensed by printing that information on the job's job-start-sheet. | sensing is the Printer's default or not. | |||
| 4.1.10 'octetString' | Note: Since the auto-sensing algorithm is probabilistic, if the | |||
| Client requests both auto-sensing ("document-format" set to | ||||
| 'application/octet-stream') and true fidelity ("ipp-attribute- | ||||
| fidelity" set to 'true'), the Printer might not be able to guarantee | ||||
| exactly what the End User intended (the auto-sensing algorithm might | ||||
| mistake one Document format for another), but it is able to guarantee | ||||
| that its auto-sensing mechanism be used. | ||||
| 5.1.11. 'octetString' | ||||
| The 'octetString' attribute syntax is a sequence of octets encoded in | The 'octetString' attribute syntax is a sequence of octets encoded in | |||
| a maximum of 1023 octets which is indicated in sub-section headers | a maximum of 1023 octets which is indicated in sub-section headers | |||
| using the notation: octetString(MAX). This syntax type is used for | using the notation: octetString(MAX). This syntax type is used for | |||
| opaque data. | opaque data. | |||
| 4.1.11 'boolean' | 5.1.12. 'boolean' | |||
| The 'boolean' attribute syntax has only two values: 'true' and | The 'boolean' attribute syntax has only two values: 'true' and | |||
| 'false'. | 'false'. | |||
| 4.1.12 'integer' | 5.1.13. 'integer' | |||
| The 'integer' attribute syntax is an integer value that is in the | The 'integer' attribute syntax is an integer value that is in the | |||
| range from -2**31 (MIN) to 2**31 - 1 (MAX). Each individual | range from -2**31 (MIN) to 2**31 - 1 (MAX). Each individual | |||
| attribute may specify the range constraint explicitly in sub-section | attribute can specify the range constraint explicitly in sub-section | |||
| headers if the range is different from the full range of possible | headers if the range is different from the full range of possible | |||
| integer values. For example: job-priority (integer(1:100)) for the | integer values. For example: job-priority (integer(1:100)) for the | |||
| "job-priority" attribute. However, the enforcement of that | "job-priority" attribute. However, the enforcement of that | |||
| additional constraint is up to the IPP objects, not the protocol. | additional constraint is up to the IPP objects, not the protocol. | |||
| 4.1.13 'rangeOfInteger' | 5.1.14. 'rangeOfInteger' | |||
| The 'rangeOfInteger' attribute syntax is an ordered pair of integers | The 'rangeOfInteger' attribute syntax is an ordered pair of integers | |||
| that defines an inclusive range of integer values. The first integer | that defines an inclusive range of integer values. The first integer | |||
| specifies the lower bound and the second specifies the upper bound. | specifies the lower bound and the second specifies the upper bound. | |||
| If a range constraint is specified in the header description for an | If a range constraint is specified in the header description for an | |||
| attribute in this document whose attribute syntax is 'rangeOfInteger' | attribute in this document whose attribute syntax is 'rangeOfInteger' | |||
| (i.e., 'X:Y' indicating X as a minimum value and Y as a maximum | (i.e., 'X:Y' indicating X as a minimum value and Y as a maximum | |||
| value), then the constraint applies to both integers. | value), then the constraint applies to both integers. | |||
| 4.1.14 'dateTime' | 5.1.15. 'dateTime' | |||
| The 'dateTime' attribute syntax is a standard, fixed length, 11 octet | The 'dateTime' attribute syntax is a standard, fixed length, 11 octet | |||
| representation of the "DateAndTime" syntax as defined in RFC 2579 | representation of the "DateAndTime" syntax as defined in RFC 2579 | |||
| [RFC2579]. RFC 2579 also identifies an 8 octet representation of a | [RFC2579]. RFC 2579 also identifies an 8 octet representation of a | |||
| "DateAndTime" value, but IPP objects MUST use the 11 octet | "DateAndTime" value, but IPP objects MUST use the 11 octet | |||
| representation. A user interface will provide a mapping between | representation. A user interface will provide a mapping between | |||
| protocol dateTime values and displayable user-friendly words or | protocol dateTime values and displayable user-friendly words or | |||
| presentation values and phrases which are localized to the natural | presentation values and phrases which are localized to the natural | |||
| language and date format of the user, including time zone. | language and date format of the user, including time zone. | |||
| 4.1.15 'resolution' | 5.1.16. 'resolution' | |||
| The 'resolution' attribute syntax specifies a two-dimensional | The 'resolution' attribute syntax specifies a two-dimensional | |||
| resolution in the indicated units. It consists of 3 values: a cross | resolution in the indicated units. It consists of 3 values: a cross | |||
| feed direction resolution (positive integer value), a feed direction | feed direction resolution (positive integer value), a feed direction | |||
| resolution (positive integer value), and a units value. The | resolution (positive integer value), and a units value. The | |||
| semantics of these three components are taken from the Printer MIB | semantics of these three components are taken from the Printer MIB | |||
| [RFC1759] suggested values. That is, the cross feed direction | [RFC3805] suggested values. That is, the cross feed direction | |||
| component resolution component is the same as the | component resolution component is the same as the | |||
| prtMarkerAddressabilityXFeedDir object in the Printer MIB, the feed | prtMarkerAddressabilityXFeedDir object in the Printer MIB, the feed | |||
| direction component resolution component is the same as the | direction component resolution component is the same as the | |||
| prtMarkerAddressabilityFeedDir in the Printer MIB, and the units | prtMarkerAddressabilityFeedDir in the Printer MIB, and the units | |||
| component is the same as the prtMarkerAddressabilityUnit object in | component is the same as the prtMarkerAddressabilityUnit object in | |||
| the Printer MIB (namely, '3' indicates dots per inch and '4' | the Printer MIB (namely, '3' indicates dots per inch and '4' | |||
| indicates dots per centimeter). All three values MUST be present | indicates dots per centimeter). All three values MUST be present | |||
| even if the first two values are the same. Example: '300', '600', | even if the first two values are the same. Example: '300', '600', | |||
| '3' indicates a 300 dpi cross-feed direction resolution, a 600 dpi | '3' indicates a 300 dpi cross-feed direction resolution, a 600 dpi | |||
| feed direction resolution, since a '3' indicates dots per inch (dpi). | feed direction resolution, since a '3' indicates dots per inch (dpi). | |||
| 4.1.16 '1setOf X' | 5.1.17. 'collection' | |||
| The '1setOf X' attribute syntax is 1 or more values of attribute | The 'collection' attribute syntax is a container holding one or more | |||
| named values (i.e., attributes), which are called member attributes. | ||||
| Each collection attribute definition document lists the mandatory and | ||||
| optional member attributes of each collection value. A collection | ||||
| value is similar to an IPP attribute group in a request or a | ||||
| response, such as the operation attributes group - they both consist | ||||
| of a set of attributes. Collections can also be nested, i.e., a | ||||
| collection in a collection. | ||||
| A collection value consists of three separate components: | ||||
| o A 'begCollection' value with an optional octet string value | ||||
| starting the collection; | ||||
| o Zero or more member attributes defined using a series of unnamed | ||||
| values starting with a 'memberAttrName' value that specifies the | ||||
| member attribute name; and | ||||
| o A 'endCollection' value with optional name and octet string value | ||||
| finishing the collection. | ||||
| 5.1.18. '1setOf X' | ||||
| The '1setOf X' attribute syntax is 1 or more values of attribute | ||||
| syntax type X. This syntax type is used for multi-valued attributes. | syntax type X. This syntax type is used for multi-valued attributes. | |||
| The syntax type is called '1setOf' rather than just 'setOf' as a | The syntax type is called '1setOf' rather than just 'setOf' as a | |||
| reminder that the set of values MUST NOT be empty (i.e., a set of | reminder that the set of values MUST NOT be empty (i.e., a set of | |||
| size 0). Sets are normally unordered. However each attribute | size 0). Sets are normally unordered, however each attribute | |||
| description of this type may specify that the values MUST be in a | description of this type can specify that the values MUST be in a | |||
| certain order for that attribute. | certain order for that attribute. | |||
| 4.2 Job Template Attributes | 5.2. Job Template Attributes | |||
| Job Template attributes describe job processing behavior. Support | Job Template attributes describe Job processing intent. Clients MAY | |||
| for Job Template attributes by a Printer object is OPTIONAL (see | supply (in Job Creation requests) and Printers SHOULD support Job | |||
| section 12.2.3 for a description of support for OPTIONAL attributes). | Template attributes. See Section 2.3.11 for a description of support | |||
| Also, clients OPTIONALLY supply Job Template attributes in create | for OPTIONAL attributes. | |||
| requests. | ||||
| Job Template attributes conform to the following rules. For each Job | Job Template attributes conform to the following rules. For each Job | |||
| Template attribute called "xxx": | Template attribute called "xxx": | |||
| 1. If the Printer object supports "xxx" then it MUST support both | 1. If the Printer supports "xxx" then it MUST support both a "xxx- | |||
| a "xxx-default" attribute (unless there is a "No" in the table | default" attribute (unless there is a "No" in the table below) | |||
| below) and a "xxx-supported" attribute. If the Printer object | and a "xxx-supported" attribute. If the Printer doesn't support | |||
| doesn't support "xxx", then it MUST support neither an "xxx- | "xxx", then it MUST support neither an "xxx-default" attribute | |||
| default" attribute nor an "xxx-supported" attribute, and it | nor an "xxx-supported" attribute, and it MUST treat an attribute | |||
| MUST treat an attribute "xxx" supplied by a client as | "xxx" supplied by a Client as unsupported. An attribute "xxx" | |||
| unsupported. An attribute "xxx" may be supported for some | can be supported for some Document formats and not supported for | |||
| document formats and not supported for other document formats. | other Document formats. For example, it is expected that a | |||
| For example, it is expected that a Printer object would only | Printer would only support "orientation-requested" for some | |||
| support "orientation-requested" for some document formats (such | Document formats (such as 'text/plain' or 'text/html') but not | |||
| as 'text/plain' or 'text/html') but not others (such as | others (such as 'application/postscript'). | |||
| 'application/postscript'). | ||||
| 2. "xxx" is OPTIONALLY supplied by the client in a create request. | 2. Clients MAY supply "xxx" in a Job Creation request. If "xxx" is | |||
| If "xxx" is supplied, the client is indicating a desired job | supplied, the Client is indicating a desired Job processing | |||
| processing behavior for this Job. When "xxx" is not supplied, | behavior for this Job. When "xxx" is not supplied, the Client is | |||
| the client is indicating that the Printer object apply its | indicating that the Printer apply its default Job processing | |||
| default job processing behavior at job processing time if the | behavior at Job processing time if the document content does not | |||
| document content does not contain an embedded instruction | contain an embedded instruction indicating an xxx-related | |||
| indicating an xxx-related behavior. | behavior. | |||
| Since an administrator MAY change the default value attribute | Since an Adminstrator MAY change the default value attribute | |||
| after a Job object has been submitted but before it has been | after a Job has been submitted but before it has been processed, | |||
| processed, the default value used by the Printer object at job | the default value used by the Printer at Job processing time can | |||
| processing time may be different that the default value in | be different that the default value in effect at Job submission | |||
| effect at job submission time. | time. | |||
| 3. The "xxx-supported" attribute is a Printer object attribute | 3. The "xxx-supported" attribute is a Printer attribute that | |||
| that describes which job processing behaviors are supported by | describes which Job processing behaviors are supported by that | |||
| that Printer object. A client can query the Printer object to | Printer. A Client can query the Printer to find out what xxx- | |||
| find out what xxx-related behaviors are supported by inspecting | related behaviors are supported by inspecting the returned values | |||
| the returned values of the "xxx-supported" attribute. | of the "xxx-supported" attribute. | |||
| Note: The "xxx" in each "xxx-supported" attribute name is | Note: The "xxx" in each "xxx-supported" attribute name is | |||
| singular, even though an "xxx-supported" attribute usually has | singular, even though an "xxx-supported" attribute usually has | |||
| more than one value, such as "job-sheet-supported", unless the | more than one value, such as "print-quality-supported", unless | |||
| "xxx" Job Template attribute is plural, such as "finishings" or | the "xxx" Job Template attribute is plural, such as "finishings" | |||
| "sides". In such cases the "xxx-supported" attribute names | or "sides". In such cases the "xxx-supported" attribute names | |||
| are: "finishings- supported" and "sides-supported". | are: "finishings-supported" and "sides-supported". | |||
| 4. The "xxx-default" default value attribute describes what will | 4. The "xxx-default" default value attribute describes what will be | |||
| be done at job processing time when no other job processing | done at Job processing time when no other Job processing | |||
| information is supplied by the client (either explicitly as an | information is supplied by the Client (either explicitly as an | |||
| IPP attribute in the create request or implicitly as an | IPP attribute in the Job Creation request or implicitly as an | |||
| embedded instruction within the document data). | embedded instruction within the Document data). | |||
| If an application wishes to present an end user with a list of | If an application wishes to present an End User with a list of | |||
| supported values from which to choose, the application SHOULD query | supported values from which to choose, the application SHOULD query | |||
| the Printer object for its supported value attributes. The | the Printer for its supported value attributes. The application | |||
| application SHOULD also query the default value attributes. If the | SHOULD also query the default value attributes. If the application | |||
| application then limits selectable values to only those value that | then limits selectable values to only those value that are supported, | |||
| are supported, the application can guarantee that the values supplied | the application can guarantee that the values supplied by the Client | |||
| by the client in the create request all fall within the set of | in the Job Creation request all fall within the set of supported | |||
| supported values at the Printer. When querying the Printer, the | values at the Printer. When querying the Printer, the Client MAY | |||
| client MAY enumerate each attribute by name in the Get-Printer- | enumerate each attribute by name in the Get-Printer-Attributes | |||
| Attributes Request, or the client MAY just name the "job-template" | Request, or the Client MAY just name the "job-template" group in | |||
| group in order to get the complete set of supported attributes (both | order to get the complete set of supported attributes (both supported | |||
| supported and default attributes). | and default attributes). | |||
| The "finishings" attribute is an example of a Job Template attribute. | The "finishings" attribute is an example of a Job Template attribute. | |||
| It can take on a set of values such as 'staple', 'punch', and/or | It can take on a set of values such as '4' ('staple'), '5' ('punch'), | |||
| 'cover'. A client can query the Printer object for the "finishings- | and/or '6' ('cover'). A Client can query the Printer for the | |||
| supported" attribute and the "finishings-default" attribute. The | "finishings-supported" attribute and the "finishings-default" | |||
| supported attribute contains a set of supported values. The default | attribute. The supported attribute contains a set of supported | |||
| value attribute contains the finishing value(s) that will be used for | values. The default value attribute contains the finishing value(s) | |||
| a new Job if the client does not supply a "finishings" attribute in | that will be used for a new Job if the Client does not supply a | |||
| the create request and the document data does not contain any | "finishings" attribute in the Job Creation request and the Document | |||
| corresponding finishing instructions. If the client does supply the | data does not contain any corresponding finishing instructions. If | |||
| "finishings" attribute in the create request, the IPP object | the Client does supply the "finishings" attribute in the Job Creation | |||
| validates the value or values to make sure that they are a subset of | request, the Printer validates the value or values to make sure that | |||
| the supported values identified in the Printer object's "finishings- | they are a subset of the supported values identified in the Printer's | |||
| supported" attribute. See section 3.1.7. | "finishings-supported" attribute. See Section 4.1.7. | |||
| The table below summarizes the names and relationships for all Job | The table below summarizes the names and relationships for all Job | |||
| Template attributes. The first column of the table (labeled "Job | Template attributes. The first column of the table (labeled "Job | |||
| Attribute") shows the name and syntax for each Job Template attribute | Attribute") shows the name and syntax for each Job Template attribute | |||
| in the Job object. These are the attributes that can optionally be | in the Job. These are the attributes that can optionally be supplied | |||
| supplied by the client in a create request. The last two columns | by the Client in a Job Creation request. The last two columns | |||
| (labeled "Printer: Default Value Attribute" and "Printer: Supported | (labeled "Printer: Default Value Attribute" and "Printer: Supported | |||
| Values Attribute") show the name and syntax for each Job Template | Values Attribute") show the name and syntax for each Job Template | |||
| attribute in the Printer object (the default value attribute and the | attribute in the Printer (the default value attribute and the | |||
| supported values attribute). A "No" in the table means the Printer | supported values attribute). A "No" in the table means the Printer | |||
| MUST NOT support the attribute (that is, the attribute is simply not | MUST NOT support the attribute (that is, the attribute is simply not | |||
| applicable). For brevity in the table, the 'text' and 'name' entries | applicable). For brevity in the table, the 'text' and 'name' entries | |||
| do not show the maximum length for each attribute. | do not show the maximum length for each attribute. | |||
| +===================+======================+======================+ | +------------------+----------------------+-------------------------+ | |||
| | Job Attribute |Printer: Default Value| Printer: Supported | | | Job Attribute | Printer: Default | Printer: SUpported | | |||
| | | Attribute | Values Attribute | | | | Value Attribute | Values Attribute | | |||
| +===================+======================+======================+ | +------------------+----------------------+-------------------------+ | |||
| | job-priority | job-priority-default |job-priority-supported| | | job-priority | job-priority-default | job-priority-supported | | |||
| | (integer 1:100) | (integer 1:100) |(integer 1:100) | | | (integer 1:100) | (integer 1:100) | (integer 1:100) | | |||
| +-------------------+----------------------+----------------------+ | +------------------+----------------------+-------------------------+ | |||
| | job-hold-until | job-hold-until- |job-hold-until- | | | job-hold-until | job-hold-until- | job-hold-until- | | |||
| | (type3 keyword | | default | supported | | | (type2 keyword | | default (type2 | supported (1setOf | | |||
| | name) | (type3 keyword | |(1setOf ( | | | name) | keyword | name) | (type2 keyword | name)) | | |||
| | | name) |type3 keyword | name))| | +------------------+----------------------+-------------------------+ | |||
| +-------------------+----------------------+----------------------+ | | job-sheets | job-sheets-default | job-sheets-supported | | |||
| | job-sheets | job-sheets-default |job-sheets-supported | | | (type2 keyword | | (type2 keyword | | (1setOf (type2 keyword | | |||
| | (type3 keyword | | (type3 keyword | |(1setOf ( | | | name) | name) | | name)) | | |||
| | name) | name) |type3 keyword | name))| | +------------------+----------------------+-------------------------+ | |||
| +-------------------+----------------------+----------------------+ | | multiple- | multiple-document- | multiple-document- | | |||
| |multiple-document- |multiple-document- |multiple-document- | | | document- | handling-default | handling-supported | | |||
| | handling | handling-default |handling-supported | | | handling (type2 | (type2 keyword) | (1setOf type2 keyword) | | |||
| | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| | | keyword) | | | | |||
| +-------------------+----------------------+----------------------+ | +------------------+----------------------+-------------------------+ | |||
| | copies | copies-default | copies-supported | | | copies | copies-default | copies-supported | | |||
| | (integer (1:MAX)) | (integer (1:MAX)) | (rangeOfInteger | | | (integer(1:MAX)) | (integer(1:MAX)) | (rangeOfInteger(1:MAX)) | | |||
| | | | (1:MAX)) | | +------------------+----------------------+-------------------------+ | |||
| +-------------------+----------------------+----------------------+ | | finishings | finishings-default | finishings-supported | | |||
| | finishings | finishings-default | finishings-supported | | | (1setOf type2 | (1setOf type2 enum) | (1setOf type2 enum) | | |||
| |(1setOf type2 enum)|(1setOf type2 enum) |(1setOf type2 enum) | | | enum) | | | | |||
| +-------------------+----------------------+----------------------+ | +------------------+----------------------+-------------------------+ | |||
| | page-ranges | No | page-ranges- | | | page-ranges | No | page-ranges-supported | | |||
| | (1setOf | | supported (boolean) | | | (1setOf rangeOfI | | (boolean) | | |||
| | rangeOfInteger | | | | | nteger(1:MAX)) | | | | |||
| | (1:MAX)) | | | | +------------------+----------------------+-------------------------+ | |||
| +-------------------+----------------------+----------------------+ | | sides (type2 | sides-default (type2 | sides-supported (1setOf | | |||
| | sides | sides-default | sides-supported | | | keyword) | keyword) | type2 keyword) | | |||
| | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| | +------------------+----------------------+-------------------------+ | |||
| +-------------------+----------------------+----------------------+ | | number-up | number-up-default | number-up-supported | | |||
| | number-up | number-up-default | number-up-supported | | | (integer(1:MAX)) | (integer(1:MAX)) | (1setOf (integer(1:MAX) | | |||
| | (integer (1:MAX)) | (integer (1:MAX)) |(1setOf (integer | | | | | | | | |||
| | | | (1:MAX) | | | | | | rangeOfInteger(1:MAX))) | | |||
| | | | rangeOfInteger | | +------------------+----------------------+-------------------------+ | |||
| | | | (1:MAX))) | | | orientation- | orientation- | orientation-requested- | | |||
| +-------------------+----------------------+----------------------+ | | requested (type2 | requested-default | supported (1setOf type2 | | |||
| | orientation- |orientation-requested-|orientation-requested-| | | enum) | (type2 enum) | enum) | | |||
| | requested | default | supported | | +------------------+----------------------+-------------------------+ | |||
| | (type2 enum) | (type2 enum) | (1setOf type2 enum) | | | media (type2 | media-default (type2 | media-supported (1setOf | | |||
| +-------------------+----------------------+----------------------+ | | keyword | name) | keyword | name) | (type2 keyword | name)) | | |||
| | media | media-default | media-supported | | | | | media-ready (1setOf | | |||
| | (type3 keyword | | (type3 keyword | |(1setOf ( | | | | | (type2 keyword | name)) | | |||
| | name) | name) |type3 keyword | name))| | +------------------+----------------------+-------------------------+ | |||
| | | | | | | printer- | printer-resolution- | printer-resolution- | | |||
| | | | media-ready | | | resolution | default (resolution) | supported (1setOf | | |||
| | | |(1setOf ( | | | (resolution) | | resolution) | | |||
| | | |type3 keyword | name))| | +------------------+----------------------+-------------------------+ | |||
| +-------------------+----------------------+----------------------+ | | print-quality | print-quality- | print-quality-supported | | |||
| | printer-resolution| printer-resolution- | printer-resolution- | | | (type2 enum) | default (type2 enum) | (1setOf type2 enum) | | |||
| | (resolution) | default | supported | | +------------------+----------------------+-------------------------+ | |||
| | | (resolution) |(1setOf resolution) | | ||||
| +-------------------+----------------------+----------------------+ | ||||
| | print-quality | print-quality-default| print-quality- | | ||||
| | (type2 enum) | (type2 enum) | supported | | ||||
| | | |(1setOf type2 enum) | | ||||
| +-------------------+----------------------+----------------------+ | ||||
| 4.2.1 job-priority (integer(1:100)) | Table 8: Job Template Attributes | |||
| 5.2.1. job-priority (integer(1:100)) | ||||
| This attribute specifies a priority for scheduling the Job. A higher | This attribute specifies a priority for scheduling the Job. A higher | |||
| value specifies a higher priority. The value 1 indicates the lowest | value specifies a higher priority. The value 1 indicates the lowest | |||
| possible priority. The value 100 indicates the highest possible | possible priority. The value 100 indicates the highest possible | |||
| priority. Among those jobs that are ready to print, a Printer MUST | priority. Among those Jobs that are ready to print, a Printer MUST | |||
| print all jobs with a priority value of n before printing those with | print all Jobs with a priority value of n before printing those with | |||
| a priority value of n-1 for all n. | a priority value of n-1 for all n. | |||
| If the Printer object supports this attribute, it MUST always support | If the Printer supports this attribute, it MUST always support the | |||
| the full range from 1 to 100. No administrative restrictions are | full range from 1 to 100. No administrative restrictions are | |||
| permitted. This way an end-user can always make full use of the | permitted. This way an End User can always make full use of the | |||
| entire range with any Printer object. If privileged jobs are | entire range with any Printer. If privileged Jobs are implemented | |||
| implemented outside IPP/1.1, they MUST have priorities higher than | outside IPP, they MUST have priorities higher than 100, rather than | |||
| 100, rather than restricting the range available to end-users. | restricting the range available to End Users. | |||
| If the client does not supply this attribute and this attribute is | If the Client does not supply this attribute and this attribute is | |||
| supported by the Printer object, the Printer object MUST use the | supported by the Printer, the Printer MUST use the value of the | |||
| value of the Printer object's "job-priority-default" at job | Printer's "job-priority-default" at Job submission time (unlike most | |||
| submission time (unlike most Job Template attributes that are used if | Job Template attributes that are used if necessary at Job processing | |||
| necessary at job processing time). | time). | |||
| The syntax for the "job-priority-supported" is also integer(1:100). | The syntax for the "job-priority-supported" is also integer(1:100). | |||
| This single integer value indicates the number of priority levels | This single integer value indicates the number of priority levels | |||
| supported. The Printer object MUST take the value supplied by the | supported. The Printer MUST take the value supplied by the Client | |||
| client and map it to the closest integer in a sequence of n integers | and map it to the closest integer in a sequence of n integers values | |||
| values that are evenly distributed over the range from 1 to 100 using | that are evenly distributed over the range from 1 to 100 using the | |||
| the formula: | formula: | |||
| roundToNearestInt((100x+50)/n) | roundToNearestInt((100x+50)/n) | |||
| where n is the value of "job-priority-supported" and x ranges from 0 | where n is the value of "job-priority-supported" and x ranges from 0 | |||
| through n-1. | through n-1. | |||
| For example, if n=1 the sequence of values is 50; if n=2, the | For example, if n=1 the sequence of values is 50; if n=2, the | |||
| sequence of values is: 25 and 75; if n = 3, the sequence of values | sequence of values is: 25 and 75; if n = 3, the sequence of values | |||
| is: 17, 50 and 83; if n = 10, the sequence of values is: 5, 15, 25, | is: 17, 50 and 83; if n = 10, the sequence of values is: 5, 15, 25, | |||
| 35, 45, 55, 65, 75, 85, and 95; if n = 100, the sequence of values | 35, 45, 55, 65, 75, 85, and 95; if n = 100, the sequence of values | |||
| is: 1, 2, 3, ... 100. | is: 1, 2, 3, ... 100. | |||
| If the value of the Printer object's "job-priority-supported" is 10 | Table 9 shows how a Printer maps Client-supplied "job-priority" | |||
| and the client supplies values in the range 1 to 10, the Printer | values for example values of n. | |||
| object maps them to 5, in the range 11 to 20, the Printer object maps | ||||
| them to 15, etc. | ||||
| 4.2.2 job-hold-until (type3 keyword | name (MAX)) | +--------------+-----+-----+------+ | |||
| | job-priority | n=1 | n=2 | n=10 | | ||||
| +--------------+-----+-----+------+ | ||||
| | 1 | 50 | 17 | 5 | | ||||
| +--------------+-----+-----+------+ | ||||
| | 10 | 50 | 17 | 5 | | ||||
| +--------------+-----+-----+------+ | ||||
| | 20 | 50 | 17 | 15 | | ||||
| +--------------+-----+-----+------+ | ||||
| | 30 | 50 | 17 | 25 | | ||||
| +--------------+-----+-----+------+ | ||||
| | 40 | 50 | 50 | 35 | | ||||
| +--------------+-----+-----+------+ | ||||
| | 50 | 50 | 50 | 45 | | ||||
| +--------------+-----+-----+------+ | ||||
| | 60 | 50 | 50 | 55 | | ||||
| +--------------+-----+-----+------+ | ||||
| | 70 | 50 | 50 | 65 | | ||||
| +--------------+-----+-----+------+ | ||||
| | 80 | 50 | 83 | 75 | | ||||
| +--------------+-----+-----+------+ | ||||
| | 90 | 50 | 83 | 85 | | ||||
| +--------------+-----+-----+------+ | ||||
| | 100 | 50 | 83 | 95 | | ||||
| +--------------+-----+-----+------+ | ||||
| Table 9: "job-priority" Values | ||||
| 5.2.2. job-hold-until (type2 keyword | name (MAX)) | ||||
| This attribute specifies the named time period during which the Job | This attribute specifies the named time period during which the Job | |||
| MUST become a candidate for printing. | MUST become a candidate for printing. | |||
| Standard keyword values for named time periods are: | Standard keyword values for named time periods are: | |||
| 'no-hold': immediately, if there are not other reasons to hold the | o 'no-hold': immediately, if there are not other reasons to hold the | |||
| job | job | |||
| 'indefinite': - the job is held indefinitely, until a client | ||||
| performs a Release-Job (section 3.3.6) | ||||
| 'day-time': during the day | ||||
| 'evening': evening | ||||
| 'night': night | ||||
| 'weekend': weekend | ||||
| 'second-shift': second-shift (after close of business) | ||||
| 'third-shift': third-shift (after midnight) | ||||
| An administrator MUST associate allowable print times with a named | o 'indefinite': - the Job is held indefinitely, until a Client | |||
| performs a Release-Job (Section 4.3.6) | ||||
| o 'day-time': during the day | ||||
| o 'evening': evening | ||||
| o 'night': night | ||||
| o 'weekend': weekend | ||||
| o 'second-shift': second-shift (after close of business) | ||||
| o 'third-shift': third-shift (after midnight) | ||||
| An Adminstrator MUST associate allowable print times with a named | ||||
| time period (by means outside the scope of this IPP/1.1 document). | time period (by means outside the scope of this IPP/1.1 document). | |||
| An administrator is encouraged to pick names that suggest the type of | An Adminstrator is encouraged to pick names that suggest the type of | |||
| time period. An administrator MAY define additional values using the | time period. An Adminstrator MAY define additional values using the | |||
| 'name' or 'keyword' attribute syntax, depending on implementation. | 'name' or 'keyword' attribute syntax, depending on implementation. | |||
| If the value of this attribute specifies a time period that is in the | If the value of this attribute specifies a time period that is in the | |||
| future, the Printer SHOULD add the 'job-hold-until-specified' value | future, the Printer SHOULD add the 'job-hold-until-specified' value | |||
| to the job's "job-state-reasons" attribute, MUST move the job to the | to the Job's "job-state-reasons" attribute, MUST move the Job to the | |||
| 'pending-held' state, and MUST NOT schedule the job for printing | 'pending-held' state, and MUST NOT schedule the Job for printing | |||
| until the specified time-period arrives. | until the specified time-period arrives. | |||
| When the specified time period arrives, the Printer MUST remove the | When the specified time period arrives, the Printer MUST remove the | |||
| 'job-hold-until-specified' value from the job's "job-state-reason" | 'job-hold-until-specified' value from the Job's "job-state-reason" | |||
| attribute, if present. If there are no other job state reasons that | attribute, if present. If there are no other Job state reasons that | |||
| keep the job in the 'pending-held' state, the Printer MUST consider | keep the Job in the 'pending-held' state, the Printer MUST consider | |||
| the job as a candidate for processing by moving the job to the | the Job as a candidate for processing by moving the Job to the | |||
| 'pending' state. | 'pending' state. | |||
| If this job attribute value is the named value 'no-hold', or the | If this Job attribute value is the named value 'no-hold', or the | |||
| specified time period has already started, the job MUST be a | specified time period has already started, the Job MUST be a | |||
| candidate for processing immediately. | candidate for processing immediately. | |||
| If the client does not supply this attribute and this attribute is | If the Client does not supply this attribute and this attribute is | |||
| supported by the Printer object, the Printer object MUST use the | supported by the Printer, the Printer MUST use the value of the | |||
| value of the Printer object's "job-hold-until-default" at job | Printer's "job-hold-until-default" at Job submission time (unlike | |||
| submission time (unlike most Job Template attributes that are used if | most Job Template attributes that are used if necessary at Job | |||
| necessary at job processing time). | processing time). | |||
| 4.2.3 job-sheets (type3 keyword | name(MAX)) | 5.2.3. job-sheets (type2 keyword | name(MAX)) | |||
| This attribute determines which job start/end sheet(s), if any, MUST | This attribute determines which Job start/end sheet(s), if any, MUST | |||
| be printed with a job. | be printed with a Job. | |||
| Standard keyword values are: | Standard keyword values are: | |||
| 'none': no job sheet is printed | o 'none': no Job sheet is printed | |||
| 'standard': one or more site specific standard job sheets are | ||||
| printed, e.g. a single start sheet or both start and end sheet is | ||||
| printed | ||||
| An administrator MAY define additional values using the 'name' or | o 'standard': one or more site specific standard Job sheets are | |||
| printed, e.g. a single start sheet or both start and end sheet is | ||||
| printed | ||||
| An Adminstrator MAY define additional values using the 'name' or | ||||
| 'keyword' attribute syntax, depending on implementation. | 'keyword' attribute syntax, depending on implementation. | |||
| The effect of this attribute on jobs with multiple documents MAY be | The effect of this attribute on Jobs with multiple Documents MAY be | |||
| affected by the "multiple-document-handling" job attribute (section | affected by the "multiple-document-handling" Job attribute | |||
| 4.2.4), depending on the job sheet semantics. | (Section 5.2.4), depending on the Job sheet semantics. | |||
| 4.2.4 multiple-document-handling (type2 keyword) | 5.2.4. multiple-document-handling (type2 keyword) | |||
| This attribute is relevant only if a job consists of two or more | This RECOMMENDED attribute controls which Impressions and Media | |||
| documents. This attribute MUST be supported with at least one value | Sheets constitute a Set for copy generation and finishing processes. | |||
| if the Printer supports multiple documents per job (see sections | When the value of the "copies" attribute exceeds '1', it also | |||
| 3.2.4 and 3.3.1). The attribute controls finishing operations and | controls the order in which the copies that result from processing | |||
| the placement of one or more print-stream pages into impressions and | the Documents are produced. For the purposes of this explanations, | |||
| onto media sheets. When the value of the "copies" attribute exceeds | if "a" represents an instance of Document data, then the result of | |||
| 1, it also controls the order in which the copies that result from | processing the data in Document "a" is a sequence of Media Sheets | |||
| processing the documents are produced. For the purposes of this | represented by "a(*)". This attribute MUST be supported with at | |||
| explanations, if "a" represents an instance of document data, then | least one value if the Printer supports multiple Documents per Job | |||
| the result of processing the data in document "a" is a sequence of | (see Sections 4.2.4 and 4.3.1). | |||
| media sheets represented by "a(*)". | ||||
| Standard keyword values are: | Standard keyword values are: | |||
| 'single-document': If a Job object has multiple documents, say, | o 'single-document': If a Job has multiple Documents, say, the | |||
| the document data is called a and b, then the result of | Document data is called a and b, then the result of processing all | |||
| processing all the document data (a and then b) MUST be treated | the Document data (a and then b) MUST be treated as a single | |||
| as a single sequence of media sheets for finishing operations; | sequence of Media Sheets for finishing processes; that is, | |||
| that is, finishing would be performed on the concatenation of | finishing is performed on the concatenation of the sequences | |||
| the sequences a(*),b(*). The Printer object MUST NOT force the | a(*),b(*). The Printer MUST NOT force the data in each Document | |||
| data in each document instance to be formatted onto a new | instance to be formatted onto a new Impression, nor to start a new | |||
| print-stream page, nor to start a new impression on a new media | Impression on a new Media Sheet. If more than one copy is made, | |||
| sheet. If more than one copy is made, the ordering of the sets | the ordering of the sets of Media Sheets resulting from processing | |||
| of media sheets resulting from processing the document data | the Document data MUST be a(*), b(*), a(*), b(*), ..., and the | |||
| MUST be a(*), b(*), a(*), b(*), start on a new media sheet. | Printer MUST force each copy (a(*),b(*)) to start on a new Media | |||
| 'separate-documents-uncollated-copies': If a Job object has | Sheet. | |||
| multiple documents, say, the document data is called a and b, | ||||
| then the result of processing the data in each document | o 'separate-documents-uncollated-copies': If a Job has multiple | |||
| instance MUST be treated as a single sequence of media sheets | Documents, say, the Document data is called a and b, then the | |||
| for finishing operations; that is, the sets a(*) and b(*) would | result of processing the data in each Document instance MUST be | |||
| each be finished separately. The Printer object MUST force each | treated as a single sequence of Media Sheets for finishing | |||
| copy of the result of processing the data in a single document | processes; that is, the sets a(*) and b(*) would each be finished | |||
| to start on a new media sheet. If more than one copy is made, | separately. The Printer MUST force each copy of the result of | |||
| the ordering of the sets of media sheets resulting from | processing the data in a single Document to start on a new Media | |||
| processing the document data MUST be a(*), a(*), ..., b(*), | Sheet. If more than one copy is made, the ordering of the sets of | |||
| b(*) ... . | Media Sheets resulting from processing the Document data MUST be | |||
| 'separate-documents-collated-copies': If a Job object has multiple | a(*), a(*), ..., b(*), b(*) ... . | |||
| documents, say, the document data is called a and b, then the | ||||
| result of processing the data in each document instance MUST be | o 'separate-documents-collated-copies': If a Job has multiple | |||
| treated as a single sequence of media sheets for finishing | Documents, say, the Document data is called a and b, then the | |||
| operations; that is, the sets a(*) and b(*) would each be | result of processing the data in each Document instance MUST be | |||
| finished separately. The Printer object MUST force each copy of | treated as a single sequence of Media Sheets for finishing | |||
| the result of processing the data in a single document to start | processes; that is, the sets a(*) and b(*) would each be finished | |||
| on a new media sheet. If more than one copy is made, the | separately. The Printer MUST force each copy of the result of | |||
| ordering of the sets of media sheets resulting from processing | processing the data in a single Document to start on a new Media | |||
| the document data MUST be a(*), b(*), a(*), b(*), ... . | Sheet. If more than one copy is made, the ordering of the sets of | |||
| 'single-document-new-sheet': Same as 'single-document', except | Media Sheets resulting from processing the Document data MUST be | |||
| that the Printer object MUST ensure that the first impression | a(*), b(*), a(*), b(*), ... . | |||
| of each document instance in the job is placed on a new media | ||||
| sheet. This value allows multiple documents to be stapled | o 'single-document-new-sheet': Same as 'single-document', except | |||
| together with a single staple where each document starts on a | that the Printer MUST ensure that the first Impression of each | |||
| new sheet. | Document instance in the Job is placed on a new Media Sheet. This | |||
| value allows multiple Documents to be stapled together with a | ||||
| single staple where each Document starts on a new Media Sheet. | ||||
| The 'single-document' value is the same as 'separate-documents- | The 'single-document' value is the same as 'separate-documents- | |||
| collated-copies' with respect to ordering of print-stream pages, but | collated-copies' with respect to ordering of Input Pages, but not | |||
| not media sheet generation, since 'single-document' will put the | Media Sheet generation, since 'single-document' will put the first | |||
| first page of the next document on the back side of a sheet if an odd | page of the next Document on the back side of a Media Sheet if an odd | |||
| number of pages have been produced so far for the job, while | number of pages have been produced so far for the Job, while | |||
| 'separate-documents-collated- copies' always forces the next document | 'separate-documents-collated-copies' always forces the next Document | |||
| or document copy on to a new sheet. In addition, if the "finishings" | or Document copy on to a new Media Sheet. In addition, if the | |||
| attribute specifies 'staple', then with 'single-document', documents | "finishings" attribute specifies 'staple', then with 'single- | |||
| a and b are stapled together as a single document with no regard to | document', Documents a and b are stapled together as a single Set | |||
| new sheets, with 'single-document-new-sheet', documents a and b are | with no regard to new Media Sheet while with 'single-document-new- | |||
| stapled together as a single document, but document b starts on a new | sheet' Documents a and b are stapled together as a single Set but | |||
| sheet, but with 'separate-documents-uncollated-copies' and | Document b starts on a new Media Sheet. With 'separate-documents- | |||
| 'separate-documents-collated-copies', documents a and b are stapled | uncollated-copies' and 'separate-documents-collated-copies', | |||
| separately. | Documents a and b are stapled separately. | |||
| Note: None of these values provide means to produce uncollated sheets | Note: The value 'separate-documents-uncollated-copies' produces | |||
| within a document, i.e., where multiple copies of sheet n are | uncollated Media Sheets within a Set, e.g., when "copies" is '2' a | |||
| produced before sheet n+1 of the same document. | two Document Job will be printed as Media Sheets a(1), a(1), a(2), | |||
| a(2), ... a(n), a(n), b(1), b(1), ..., b(n), b(n). All other values | ||||
| produce collated Media Sheets within a Set. | ||||
| The relationship of this attribute and the other attributes that | The relationship of this attribute and the other attributes that | |||
| control document processing is described in section 15.3. | control Document processing is described in Appendix C.3. | |||
| 4.2.5 copies (integer(1:MAX)) | 5.2.5. copies (integer(1:MAX)) | |||
| This attribute specifies the number of copies to be printed. | This RECOMMENDED attribute specifies the number of copies to be | |||
| printed. | ||||
| On many devices the supported number of collated copies will be | On many devices the supported number of collated copies will be | |||
| limited by the number of physical output bins on the device, and may | limited by the number of physical output bins on the device, and can | |||
| be different from the number of uncollated copies which can be | be different from the number of uncollated copies which can be | |||
| supported. | supported. | |||
| Note: The effect of this attribute on jobs with multiple documents is | Note: The effect of this attribute on Jobs with multiple Documents is | |||
| controlled by the "multiple-document-handling" job attribute (section | controlled by the "multiple-document-handling" Job attribute | |||
| 4.2.4) and the relationship of this attribute and the other | (Section 5.2.4) and the relationship of this attribute and the other | |||
| attributes that control document processing is described in section | attributes that control Document processing is described in | |||
| 15.3. | Appendix C.3. | |||
| 4.2.6 finishings (1setOf type2 enum) | 5.2.6. finishings (1setOf type2 enum) | |||
| This attribute identifies the finishing operations that the Printer | This RECOMMENDED attribute identifies the finishing processes that | |||
| uses for each copy of each printed document in the Job. For Jobs with | the Printer uses for each copy of each printed document in the Job. | |||
| multiple documents, the "multiple-document-handling" attribute | For Jobs with multiple Documents, the "multiple-document-handling" | |||
| determines what constitutes a "copy" for purposes of finishing. | attribute determines what constitutes a "copy" for purposes of | |||
| finishing. | ||||
| Standard enum values are: | Standard enum values defined in this document are listed in Table 10. | |||
| The 'staple-xxx' values are specified with respect to the Document as | ||||
| if the Document were in portrait orientation with the origin of each | ||||
| Media Sheet at the top left corner. If the Document is actually in | ||||
| landscape or reverse-landscape orientation, the Client supplies the | ||||
| appropriate transformed value. For example, to position a staple in | ||||
| the upper left hand corner of a Landscape Document when held for | ||||
| reading, the Client supplies the 'staple-bottom-left' value since | ||||
| landscape is defined as a +90 degree rotation of the image with | ||||
| respect to the media from portrait, i.e., anti-clockwise. On the | ||||
| other hand, to position a staple in the upper left hand corner of a | ||||
| reverse-landscape Document when held for reading, the Client supplies | ||||
| the 'staple-top-right' value since reverse-landscape is defined as a | ||||
| -90 degree rotation of the image with respect to the media from | ||||
| portrait, i.e., clockwise. | ||||
| Value Symbolic Name and Description | The angle (vertical, horizontal, angled) of each staple with respect | |||
| to the document depends on the implementation which can in turn | ||||
| depend on the value of the attribute. | ||||
| '3' 'none': Perform no finishing | Note: The effect of this attribute on Jobs with multiple Documents is | |||
| '4' 'staple': Bind the document(s) with one or more staples. The | controlled by the "multiple-document-handling" Job attribute | |||
| exact number and placement of the staples is site- | (Section 5.2.4) and the relationship of this attribute and the other | |||
| defined. | attributes that control Document processing is described in | |||
| '5' 'punch': This value indicates that holes are required in the | Appendix C.3. | |||
| finished document. The exact number and placement of the | ||||
| holes is site-defined The punch specification MAY be | ||||
| satisfied (in a site- and implementation-specific manner) | ||||
| either by drilling/punching, or by substituting pre- | ||||
| drilled media. | ||||
| '6' 'cover': This value is specified when it is desired to select | ||||
| a non-printed (or pre-printed) cover for the document. | ||||
| This does not supplant the specification of a printed | ||||
| cover (on cover stock medium) by the document itself. | ||||
| '7' 'bind': This value indicates that a binding is to be applied | ||||
| to the document; the type and placement of the binding is | ||||
| site-defined. | ||||
| '8' 'saddle-stitch': Bind the document(s) with one or more | ||||
| staples (wire stitches) along the middle fold. The exact | ||||
| number and placement of the staples and the middle fold | ||||
| is implementation and/or site-defined. | ||||
| '9' 'edge-stitch': Bind the document(s) with one or more staples | ||||
| (wire stitches) along one edge. The exact number and | ||||
| placement of the staples is implementation and/or site- | ||||
| defined. | ||||
| '10'-'19' reserved for future generic finishing enum values. | ||||
| The following values are more specific; they indicate a corner or an | Note: The value of '3' ('none') has no effect when combined with any | |||
| edge as if the document were a portrait document (see below): | other values. | |||
| '20' 'staple-top-left': Bind the document(s) with one or more | Note: The "finishings-col" attribute [PWG5100.1] is an alternative to | |||
| staples in the top left corner. | the "finishings" attribute that allows the Client to specify | |||
| '21' 'staple-bottom-left': Bind the document(s) with one or more | finishing intent in greater detail. | |||
| staples in the bottom left corner. | ||||
| '22' 'staple-top-right': Bind the document(s) with one or more | ||||
| staples in the top right corner. | ||||
| '23' 'staple-bottom-right': Bind the document(s) with one or more | ||||
| staples in the bottom right corner. | ||||
| '24' 'edge-stitch-left': Bind the document(s) with one or more | ||||
| staples (wire stitches) along the left edge. The exact | ||||
| number and placement of the staples is implementation | ||||
| and/or site-defined. | ||||
| '25' 'edge-stitch-top': Bind the document(s) with one or more | +-----------+-------------------------------------------------------+ | |||
| staples (wire stitches) along the top edge. The exact | | Value | Symbolic Name and Description | | |||
| number and placement of the staples is implementation | +-----------+-------------------------------------------------------+ | |||
| and/or site-defined. | | '3' | 'none': Perform no finishing | | |||
| '26' 'edge-stitch-right': Bind the document(s) with one or more | +-----------+-------------------------------------------------------+ | |||
| staples (wire stitches) along the right edge. The exact | | '4' | 'staple': Bind the document(s) with one or more | | |||
| number and placement of the staples is implementation | | | staples. The exact number and placement of the | | |||
| and/or site-defined. | | | staples is site-defined. | | |||
| '27' 'edge-stitch-bottom': Bind the document(s) with one or more | +-----------+-------------------------------------------------------+ | |||
| staples (wire stitches) along the bottom edge. The exact | | '5' | 'punch': This value indicates that holes are required | | |||
| number and placement of the staples is implementation | | | in the finished document. The exact number and | | |||
| and/or site-defined. | | | placement of the holes is site-defined The punch | | |||
| '28' 'staple-dual-left': Bind the document(s) with two staples | | | specification MAY be satisfied (in a site- and | | |||
| (wire stitches) along the left edge assuming a portrait | | | implementation-specific manner) either by | | |||
| document (see above). | | | drilling/punching, or by substituting pre-drilled | | |||
| '29' 'staple-dual-top': Bind the document(s) with two staples | | | media. | | |||
| (wire stitches) along the top edge assuming a portrait | +-----------+-------------------------------------------------------+ | |||
| document (see above). | | '6' | 'cover': This value is specified when it is desired | | |||
| '30' 'staple-dual-right': Bind the document(s) with two staples | | | to select a non-printed (or pre-printed) cover for | | |||
| (wire stitches) along the right edge assuming a portrait | | | the document. This does not supplant the | | |||
| document (see above). | | | specification of a printed cover (on cover stock | | |||
| '31' 'staple-dual-bottom': Bind the document(s) with two staples | | | medium) by the document itself. | | |||
| (wire stitches) along the bottom edge assuming a portrait | +-----------+-------------------------------------------------------+ | |||
| document (see above). | | '7' | 'bind': This value indicates that a binding is to be | | |||
| | | applied to the document; the type and placement of | | ||||
| | | the binding is site-defined. | | ||||
| +-----------+-------------------------------------------------------+ | ||||
| | '8' | 'saddle-stitch': Bind the document(s) with one or | | ||||
| | | more staples (wire stitches) along the middle fold. | | ||||
| | | The exact number and placement of the staples and the | | ||||
| | | middle fold is implementation and/or site-defined. | | ||||
| +-----------+-------------------------------------------------------+ | ||||
| | '9' | 'edge-stitch': Bind the document(s) with one or more | | ||||
| | | staples (wire stitches) along one edge. The exact | | ||||
| | | number and placement of the staples is implementation | | ||||
| | | and/or site-defined. | | ||||
| +-----------+-------------------------------------------------------+ | ||||
| | '10'-'19' | reserved for future generic finishing enum values. | | ||||
| +-----------+-------------------------------------------------------+ | ||||
| | '20' | 'staple-top-left': Bind the document(s) with one or | | ||||
| | | more staples in the top left corner. | | ||||
| +-----------+-------------------------------------------------------+ | ||||
| | '21' | 'staple-bottom-left': Bind the document(s) with one | | ||||
| | | or more staples in the bottom left corner. | | ||||
| +-----------+-------------------------------------------------------+ | ||||
| | '22' | 'staple-top-right': Bind the document(s) with one or | | ||||
| | | more staples in the top right corner. | | ||||
| +-----------+-------------------------------------------------------+ | ||||
| | '23' | 'staple-bottom-right': Bind the document(s) with one | | ||||
| | | or more staples in the bottom right corner. | | ||||
| +-----------+-------------------------------------------------------+ | ||||
| | '24' | 'edge-stitch-left': Bind the document(s) with one or | | ||||
| | | more staples (wire stitches) along the left edge. The | | ||||
| | | exact number and placement of the staples is | | ||||
| | | implementation and/or site-defined. | | ||||
| +-----------+-------------------------------------------------------+ | ||||
| | '25' | 'edge-stitch-top': Bind the document(s) with one or | | ||||
| | | more staples (wire stitches) along the top edge. The | | ||||
| | | exact number and placement of the staples is | | ||||
| | | implementation and/or site-defined. | | ||||
| +-----------+-------------------------------------------------------+ | ||||
| | '26' | 'edge-stitch-right': Bind the document(s) with one or | | ||||
| | | more staples (wire stitches) along the right edge. | | ||||
| | | The exact number and placement of the staples is | | ||||
| | | implementation and/or site-defined. | | ||||
| +-----------+-------------------------------------------------------+ | ||||
| | '27' | 'edge-stitch-bottom': Bind the document(s) with one | | ||||
| | | or more staples (wire stitches) along the bottom | | ||||
| | | edge. The exact number and placement of the staples | | ||||
| | | is implementation and/or site-defined. | | ||||
| +-----------+-------------------------------------------------------+ | ||||
| | '28' | 'staple-dual-left': Bind the document(s) with two | | ||||
| | | staples (wire stitches) along the left edge assuming | | ||||
| | | a portrait document (see above). | | ||||
| +-----------+-------------------------------------------------------+ | ||||
| | '29' | 'staple-dual-top': Bind the document(s) with two | | ||||
| | | staples (wire stitches) along the top edge assuming a | | ||||
| | | portrait document (see above). | | ||||
| +-----------+-------------------------------------------------------+ | ||||
| | '30' | 'staple-dual-right': Bind the document(s) with two | | ||||
| | | staples (wire stitches) along the right edge assuming | | ||||
| | | a portrait document (see above). | | ||||
| +-----------+-------------------------------------------------------+ | ||||
| | '31' | 'staple-dual-bottom': Bind the document(s) with two | | ||||
| | | staples (wire stitches) along the bottom edge | | ||||
| | | assuming a portrait document (see above). | | ||||
| +-----------+-------------------------------------------------------+ | ||||
| The 'staple-xxx' values are specified with respect to the document as | Table 10: "finishings" Attribute Values | |||
| if the document were a portrait document. If the document is | ||||
| actually a landscape or a reverse-landscape document, the client | ||||
| supplies the appropriate transformed value. For example, to position | ||||
| a staple in the upper left hand corner of a landscape document when | ||||
| held for reading, the client supplies the 'staple-bottom-left' value | ||||
| (since landscape is defined as a +90 degree rotation of the image | ||||
| with respect to the media from portrait, i.e., anti-clockwise). On | ||||
| the other hand, to position a staple in the upper left hand corner of | ||||
| a reverse-landscape document when held for reading, the client | ||||
| supplies the 'staple-top-right' value (since reverse-landscape is | ||||
| defined as a -90 degree rotation of the image with respect to the | ||||
| media from portrait, i.e., clockwise). | ||||
| The angle (vertical, horizontal, angled) of each staple with respect | 5.2.7. page-ranges (1setOf rangeOfInteger (1:MAX)) | |||
| to the document depends on the implementation which may in turn | ||||
| depend on the value of the attribute. | ||||
| Note: The effect of this attribute on jobs with multiple documents is | This RECOMMENDED attribute identifies the range(s) of Input Pages | |||
| controlled by the "multiple-document-handling" job attribute (section | that the Printer uses for each Set to be printed prior to imposition | |||
| 4.2.4) and the relationship of this attribute and the other | of those pages onto Impressions. Nothing is printed for any pages | |||
| attributes that control document processing is described in section | identified that do not exist in the Set/Document(s). Ranges MUST be | |||
| 15.3. | in ascending order, (1-3, 5-7, 15-19, etc.) and MUST NOT overlap so | |||
| that a non-spooling Printer can process the Job in a single pass. If | ||||
| the ranges are not ascending or are overlapping, the Printer MUST | ||||
| reject the request and return the 'client-error-bad-request' status | ||||
| code. The attribute is associated with Input Pages and not | ||||
| application-numbered pages such as the page numbers found in the | ||||
| headers and or footers for certain word processing applications. | ||||
| If the client supplies a value of 'none' along with any other | For Jobs with multiple Documents, the "multiple-document-handling" | |||
| combination of values, it is the same as if only that other | attribute determines what constitutes a Set for purposes of the | |||
| combination of values had been supplied (that is the 'none' value has | specified page range(s). When "multiple-document-handling" is | |||
| no effect). | 'single-document', the Printer MUST apply each supplied page range | |||
| once to the concatenation of the Input Pages. For example, if there | ||||
| are 8 Documents of 10 pages each, the page-range '41-60' prints the | ||||
| pages in the 5th and 6th Documents as a single Document and none of | ||||
| the pages of the other Documents are printed. When "multiple- | ||||
| document-handling" is 'separate-documents-uncollated-copies' or | ||||
| 'separate-documents-collated-copies', the Printer MUST apply each | ||||
| supplied page range repeatedly to each Document copy. For the same | ||||
| Job, the page-range '1-3, 10-10' would print the first 3 pages and | ||||
| the 10th page of each of the 8 Documents in the Job, as 8 separate | ||||
| Sets. | ||||
| 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX)) | "page-ranges-supported" is a boolean value indicating whether the | |||
| Printer is capable of supporting the printing of page ranges. This | ||||
| capability can differ from one PDL to another. There is no "page- | ||||
| ranges-default" attribute. If the "page-ranges" attribute is not | ||||
| supplied by the Client, all pages of the Document are printed. | ||||
| This attribute identifies the range(s) of print-stream pages that the | Note: In many cases the Client supplies only those Input Pages that | |||
| Printer object uses for each copy of each document which are to be | need to be printed in the Document data and the "page-ranges" Job | |||
| printed. Nothing is printed for any pages identified that do not | Template attribute is not used. However, Clients that submit | |||
| exist in the document(s). Ranges MUST be in ascending order, for | already-generated Document data (either static content from some web | |||
| example: 1-3, 5-7, 15-19 and MUST NOT overlap, so that a non-spooling | site or previously-submitted content the End User wishes to reprint) | |||
| Printer object can process the job in a single pass. If the ranges | can use this attribute to print just a subset of the pages contained | |||
| are not ascending or are overlapping, the IPP object MUST reject the | in the Document. In this case, if a "page-ranges" value of 'n-m' is | |||
| request and return the 'client-error-bad-request' status code. The | specified, the first page to be printed will be page n. All | |||
| attribute is associated with print-stream pages not application- | subsequent pages of the Document will be printed through and | |||
| numbered pages (for example, the page numbers found in the headers | including page m. | |||
| and or footers for certain word processing applications). | ||||
| For Jobs with multiple documents, the "multiple-document-handling" | Note: The effect of this attribute on Jobs with multiple Documents is | |||
| attribute determines what constitutes a "copy" for purposes of the | controlled by the "multiple-document-handling" Job attribute | |||
| specified page range(s). When "multiple-document-handling" is | (Section 5.2.4) and the relationship of this attribute and the other | |||
| 'single-document', the Printer object MUST apply each supplied page | attributes that control Document processing is described in | |||
| range once to the concatenation of the print-stream pages. For | Appendix C.3. | |||
| example, if there are 8 documents of 10 pages each, the page-range | ||||
| '41:60' prints the pages in the 5th and 6th documents as a single | ||||
| document and none of the pages of the other documents are printed. | ||||
| When "multiple-document- handling" is 'separate-documents- | ||||
| uncollated-copies' or 'separate-documents-collated-copies', the | ||||
| Printer object MUST apply each supplied page range repeatedly to each | ||||
| document copy. For the same job, the page-range '1:3, 10:10' would | ||||
| print the first 3 pages and the 10th page of each of the 8 documents | ||||
| in the Job, as 8 separate documents. | ||||
| In most cases, the exact pages to be printed will be generated by a | 5.2.8. sides (type2 keyword) | |||
| device driver and this attribute would not be required. However, | ||||
| when printing an archived document which has already been formatted, | ||||
| the end user may elect to print just a subset of the pages contained | ||||
| in the document. In this case, if page-range = n.m is specified, the | ||||
| first page to be printed will be page n. All subsequent pages of the | ||||
| document will be printed through and including page m. | ||||
| "page-ranges-supported" is a boolean value indicating whether or not | This RECOMMENDED attribute specifies how Impressions are placed upon | |||
| the printer is capable of supporting the printing of page ranges. | the sides of a Media Sheet. | |||
| This capability may differ from one PDL to another. There is no | ||||
| "page-ranges-default" attribute. If the "page-ranges" attribute is | ||||
| not supplied by the client, all pages of the document will be | ||||
| printed. | ||||
| Note: The effect of this attribute on jobs with multiple documents is | The standard keyword values are: | |||
| controlled by the "multiple-document-handling" job attribute (section | ||||
| 4.2.4) and the relationship of this attribute and the other | ||||
| attributes that control document processing is described in section | ||||
| 15.3. | ||||
| 4.2.8 sides (type2 keyword) | o 'one-sided': imposes each consecutive Impression upon the same | |||
| side of consecutive Media Sheets. | ||||
| This attribute specifies how print-stream pages are to be imposed | o 'two-sided-long-edge': imposes each consecutive pair of | |||
| upon the sides of an instance of a selected medium, i.e., an | Impressions upon front and back sides of consecutive Media Sheets, | |||
| impression. | such that the orientation of each pair of Impressions on the | |||
| medium would be correct for the reader as if for binding on the | ||||
| long edge. This imposition is sometimes called 'duplex' or 'head- | ||||
| to-head'. | ||||
| The standard keyword values are: | o 'two-sided-short-edge': imposes each consecutive pair of | |||
| Impressions upon front and back sides of consecutive Media Sheets, | ||||
| such that the orientation of each pair of Impressions on the | ||||
| medium would be correct for the reader as if for binding on the | ||||
| short edge. This imposition is sometimes called 'tumble' or | ||||
| 'head-to-toe'. | ||||
| 'one-sided': imposes each consecutive print-stream page upon the | Note: The effect of this attribute on Jobs with multiple Documents is | |||
| same side of consecutive media sheets. | controlled by the "multiple-document-handling" Job attribute | |||
| 'two-sided-long-edge': imposes each consecutive pair of print- | (Section 5.2.4) and the relationship of this attribute and the other | |||
| stream pages upon front and back sides of consecutive media | attributes that control Document processing is described in | |||
| sheets, such that the orientation of each pair of print-stream | Appendix C.3. | |||
| pages on the medium would be correct for the reader as if for | ||||
| binding on the long edge. This imposition is sometimes called | ||||
| 'duplex' or 'head-to-head'. | ||||
| 'two-sided-short-edge': imposes each consecutive pair of print- | ||||
| stream pages upon front and back sides of consecutive media | ||||
| sheets, such that the orientation of each pair of print-stream | ||||
| pages on the medium would be correct for the reader as if for | ||||
| binding on the short edge. This imposition is sometimes called | ||||
| 'tumble' or 'head-to-toe'. | ||||
| 'two-sided-long-edge', 'two-sided-short-edge', | ||||
| 'tumble', and 'duplex' all work the same for portrait or | ||||
| landscape. However | ||||
| 'head-to-toe' is | ||||
| 'tumble' in portrait but 'duplex' in landscape. 'head-to-head' | ||||
| also switches between 'duplex' and 'tumble' when using portrait | ||||
| and landscape modes. | ||||
| Note: The effect of this attribute on jobs with multiple documents is | 5.2.9. number-up (integer(1:MAX)) | |||
| controlled by the "multiple-document-handling" job attribute (section | ||||
| 4.2.4) and the relationship of this attribute and the other | ||||
| attributes that control document processing is described in section | ||||
| 15.3. | ||||
| 4.2.9 number-up (integer(1:MAX)) | This attribute specifies the number of Input Pages to impose upon a | |||
| single Impression. For example, if the value is: | ||||
| This attribute specifies the number of print-stream pages to impose | o '1': the Printer MUST place one Input Page on a single Impression. | |||
| upon a single side of an instance of a selected medium. For example, | ||||
| if the value is: | ||||
| Value Description | o '2': the Printer MUST place two Input Pages on a single | |||
| Impression. | ||||
| '1' the Printer MUST place one print-stream page on a single side | o '4': the Printer MUST place four Input Pages on a single | |||
| of an instance of the selected medium (MAY add some sort | Impression. | |||
| of translation, scaling, or rotation). | ||||
| '2' the Printer MUST place two print-stream pages on a single side | ||||
| of an instance of the selected medium (MAY add some sort | ||||
| of translation, scaling, or rotation). | ||||
| '4' the Printer MUST place four print-stream pages on a single | ||||
| side of an instance of the selected medium (MAY add some | ||||
| sort of translation, scaling, or rotation). | ||||
| This attribute primarily controls the translation, scaling and | In all cases, the Printer MAY add some sort of translation, scaling, | |||
| rotation of print-stream pages. | or rotation of Input Pages when imposing them. | |||
| Note: The effect of this attribute on jobs with multiple documents is | Note: The effect of this attribute on Jobs with multiple Documents is | |||
| controlled by the "multiple-document-handling" job attribute (section | controlled by the "multiple-document-handling" Job attribute | |||
| 4.2.4) and the relationship of this attribute and the other | (Section 5.2.4) and the relationship of this attribute and the other | |||
| attributes that control document processing is described in section | attributes that control Document processing is described in | |||
| 15.3. | Appendix C.3. | |||
| 4.2.10 orientation-requested (type2 enum) | 5.2.10. orientation-requested (type2 enum) | |||
| This attribute indicates the desired orientation for printed print- | This RECOMMENDED attribute indicates the desired orientation for | |||
| stream pages; it does not describe the orientation of the client- | printed Input Pages; it does not describe the orientation of the | |||
| supplied print-stream pages. | Client-supplied Input Pages. | |||
| For some document formats (such as 'application/postscript'), the | For some Document formats (such as 'application/postscript'), the | |||
| desired orientation of the print-stream pages is specified within the | desired orientation of the Input Pages is sometimes specified within | |||
| document data. This information is generated by a device driver | the Document data. This information is generated by a printer driver | |||
| prior to the submission of the print job. Other document formats | prior to the submission of the print Job. Other Document formats such | |||
| (such as 'text/plain') do not include the notion of desired | as 'text/plain' do not include the notion of desired orientation | |||
| orientation within the document data. In the latter case it is | within the Document data. In the latter case it is possible for the | |||
| possible for the Printer object to bind the desired orientation to | Printer to bind the desired orientation to the Document data after it | |||
| the document data after it has been submitted. It is expected that a | has been submitted. Printers MAY only support "orientations- | |||
| Printer object would only support "orientations-requested" for some | requested" for some Document formats (e.g., 'text/plain' or 'text/ | |||
| document formats (e.g., 'text/plain' or 'text/html') but not others | html') but not others (e.g., 'application/postscript'). This is no | |||
| (e.g., 'application/postscript'). This is no different than any | different than any other Job Template attribute since Section 5.2, | |||
| other Job Template attribute since section 4.2, item 1, points out | item 1, points out that a Printer can support or not support any Job | |||
| that a Printer object may support or not support any Job Template | Template attribute based on the Document format supplied by the | |||
| attribute based on the document format supplied by the client. | Client. However, a special mention is made here since it is very | |||
| However, a special mention is made here since it is very likely that | likely that a Printer will support "orientation-requested" for only a | |||
| a Printer object will support "orientation-requested" for only a | subset of the supported Document formats. | |||
| subset of the supported document formats. | ||||
| Standard enum values are: | Standard enum values are listed in Table 11: | |||
| Value Symbolic Name and Description | Note: The effect of this attribute on Jobs with multiple Documents is | |||
| controlled by the "multiple-document-handling" Job attribute | ||||
| (Section 5.2.4) and the relationship of this attribute and the other | ||||
| attributes that control Document processing is described in | ||||
| Appendix C.3. | ||||
| '3' 'portrait': The content will be imaged across the short edge | +-------+-----------------------------------------------------------+ | |||
| of the medium. | | Value | Symbolic Name and Description | | |||
| '4' 'landscape': The content will be imaged across the long edge | +-------+-----------------------------------------------------------+ | |||
| of the medium. Landscape is defined to be a rotation of | | '3' | 'portrait': The content will be imaged across the short | | |||
| the print-stream page to be imaged by +90 degrees with | | | edge of the medium. | | |||
| respect to the medium (i.e. anti-clockwise) from the | +-------+-----------------------------------------------------------+ | |||
| portrait orientation. Note: The +90 direction was | | '4' | 'landscape': The content will be imaged across the long | | |||
| chosen because simple finishing on the long edge is the | | | edge of the medium. Landscape is defined to be a rotation | | |||
| same edge whether portrait or landscape | | | of the Input Page to be imaged by +90 degrees with | | |||
| '5' 'reverse-landscape': The content will be imaged across the | | | respect to the medium (i.e. anti-clockwise) from the | | |||
| long edge of the medium. Reverse-landscape is defined to | | | portrait orientation. Note: The +90 direction was chosen | | |||
| be a rotation of the print-stream page to be imaged by - | | | because simple finishing on the long edge is the same | | |||
| 90 degrees with respect to the medium (i.e. clockwise) | | | edge whether portrait or landscape | | |||
| from the portrait orientation. Note: The 'reverse- | +-------+-----------------------------------------------------------+ | |||
| landscape' value was added because some applications | | '5' | 'reverse-landscape': The content will be imaged across | | |||
| rotate landscape -90 degrees from portrait, rather than | | | the long edge of the medium. Reverse-landscape is defined | | |||
| +90 degrees. | | | to be a rotation of the Input Page to be imaged by -90 | | |||
| '6' 'reverse-portrait': The content will be imaged across the | | | degrees with respect to the medium (i.e. clockwise) from | | |||
| short edge of the medium. Reverse-portrait is defined to | | | the portrait orientation. Note: The 'reverse-landscape' | | |||
| be a rotation of the print-stream page to be imaged by | | | value was added because some applications rotate | | |||
| 180 degrees with respect to the medium from the portrait | | | landscape -90 degrees from portrait, rather than +90 | | |||
| orientation. Note: The 'reverse-portrait' value was | | | degrees. | | |||
| added for use with the "finishings" attribute in cases | +-------+-----------------------------------------------------------+ | |||
| where the opposite edge is desired for finishing a | | '6' | 'reverse-portrait': The content will be imaged across the | | |||
| portrait document on simple finishing devices that have | | | short edge of the medium. Reverse-portrait is defined to | | |||
| only one finishing position. Thus a 'text'/plain' | | | be a rotation of the Input Page to be imaged by 180 | | |||
| portrait document can be stapled "on the right" by a | | | degrees with respect to the medium from the portrait | | |||
| simple finishing device as is common use with some middle | | | orientation. Note: The 'reverse-portrait' value was added | | |||
| eastern languages such as Hebrew. | | | for use with the "finishings" attribute in cases where | | |||
| | | the opposite edge is desired for finishing a portrait | | ||||
| | | document on simple finishing devices that have only one | | ||||
| | | finishing position. Thus a 'text'/plain' portrait | | ||||
| | | document can be stapled "on the right" by a simple | | ||||
| | | finishing device as is common use with some middle | | ||||
| | | eastern languages such as Hebrew. | | ||||
| +-------+-----------------------------------------------------------+ | ||||
| Note: The effect of this attribute on jobs with multiple documents is | Table 11: "orientation-requested" Enum Values | |||
| controlled by the "multiple-document-handling" job attribute (section | ||||
| 4.2.4) and the relationship of this attribute and the other | ||||
| attributes that control document processing is described in section | ||||
| 15.3. | ||||
| 4.2.11 media (type3 keyword | name(MAX)) | 5.2.11. media (type2 keyword | name(MAX)) | |||
| This attribute identifies the medium that the Printer uses for all | This RECOMMENDED attribute identifies the medium that the Printer | |||
| impressions of the Job. | uses for all Impressions of the Job. | |||
| The values for "media" include medium-names, medium-sizes, input- | The values for "media" historically have included medium-names, | |||
| trays and electronic forms so that one attribute specifies the media. | medium-sizes, input-trays and electronic forms so that one attribute | |||
| If a Printer object supports a medium name as a value of this | specifies the media. However, the Client SHOULD only use the media | |||
| attribute, such a medium name implicitly selects an input-tray that | attribute to specify medium-sizes using PWG Media Standardized Names | |||
| contains the specified medium. If a Printer object supports a medium | [PWG5101.1]. | |||
| size as a value of this attribute, such a medium size implicitly | ||||
| selects a medium name that in turn implicitly selects an input-tray | ||||
| that contains the medium with the specified size. If a Printer | ||||
| object supports an input-tray as the value of this attribute, such an | ||||
| input-tray implicitly selects the medium that is in that input-tray | ||||
| at the time the job prints. This case includes manual-feed input- | ||||
| trays. If a Printer object supports an electronic form as the value | ||||
| of this attribute, such an electronic form implicitly selects a | ||||
| medium-name that in turn implicitly selects an input-tray that | ||||
| contains the medium specified by the electronic form. The electronic | ||||
| form also implicitly selects an image that the Printer MUST merge | ||||
| with the document data as its prints each page. | ||||
| Standard keyword values are taken from ISO DPA [ISO10175], the | If a Printer supports a medium name as a value of this attribute, | |||
| Printer MIB [RFC1759], and ASME-Y14.1M [ASME-Y14.1M] and are listed | such a medium name implicitly selects an input-tray that contains the | |||
| in section 14. An administrator MAY define additional values using | specified medium. If a Printer supports a medium size as a value of | |||
| the 'name' or 'keyword' attribute syntax, depending on | this attribute, such a medium size implicitly selects a medium name | |||
| implementation. | that in turn implicitly selects an input-tray that contains the | |||
| medium with the specified size. If a Printer supports an input-tray | ||||
| as the value of this attribute, such an input-tray implicitly selects | ||||
| the medium that is in that input-tray at the time the Job prints. | ||||
| This case includes manual-feed input-trays. If a Printer supports an | ||||
| electronic form as the value of this attribute, such an electronic | ||||
| form implicitly selects a medium-name that in turn implicitly selects | ||||
| an input-tray that contains the medium specified by the electronic | ||||
| form. The electronic form also implicitly selects an image that the | ||||
| Printer MUST merge with the Document data as its prints each page. | ||||
| PWG Media Standardized Names [PWG5101.1] SHOULD be used. Legacy | ||||
| keyword values are taken from ISO DPA [ISO10175], the Printer MIB | ||||
| [RFC3805], and ASME-Y14.1M [ASME-Y14.1M]. An Adminstrator MAY define | ||||
| additional values using the 'name' or 'keyword' attribute syntax, | ||||
| depending on implementation. | ||||
| There is also an additional Printer attribute named "media-ready" | There is also an additional Printer attribute named "media-ready" | |||
| which differs from "media-supported" in that legal values only | which differs from "media-supported" in that legal values only | |||
| include the subset of "media-supported" values that are physically | include the subset of "media-supported" values that are physically | |||
| loaded and ready for printing with no operator intervention required. | loaded and ready for printing with no Operator intervention required. | |||
| If an IPP object supports "media-supported", it NEED NOT support | ||||
| "media-ready". | ||||
| The relationship of this attribute and the other attributes that | The relationship of this attribute and the other attributes that | |||
| control document processing is described in section 15.3. | control Document processing is described in Appendix C.3. | |||
| 4.2.12 printer-resolution (resolution) | Note: The "media-col" attribute [PWG5100.3] [PWG5100.13] is an | |||
| alternative to the "media" attribute that allows the Client to | ||||
| specify medium requirements in greater detail. | ||||
| This attribute identifies the resolution that Printer uses for the | 5.2.12. printer-resolution (resolution) | |||
| Job. | ||||
| 4.2.13 print-quality (type2 enum) | This RECOMMENDED attribute identifies the output resolution that the | |||
| Printer uses for the Job. | ||||
| This attribute specifies the print quality that the Printer uses for | Note: This attribute and the "print-quality" attribute | |||
| the Job. | (Section 5.2.13) are both used to specify the overall output quality | |||
| of the Job. If a Client specifies conflicting "printer-resolution" | ||||
| and "print-quality" values, Printers SHOULD use the "print-quality" | ||||
| value. | ||||
| The standard enum values are: | 5.2.13. print-quality (type2 enum) | |||
| Value Symbolic Name and Description | This RECOMMENDED attribute specifies the print quality that the | |||
| Printer uses for the Job. | ||||
| '3' 'draft': lowest quality available on the printer | The standard enum values are listed in Table 12. | |||
| '4' 'normal': normal or intermediate quality on the printer | ||||
| '5' 'high': highest quality available on the printer | ||||
| 4.3 Job Description Attributes | Note: This attribute and the "printer-resolution" attribute | |||
| (Section 5.2.12) are both used to specify the overall output quality | ||||
| of the Job. If a Client specifies conflicting "printer-resolution" | ||||
| and "print-quality" values, Printers SHOULD use the "print-quality" | ||||
| value. | ||||
| +-------+---------------------------------------------------------+ | ||||
| | Value | Symbolic Name and Description | | ||||
| +-------+---------------------------------------------------------+ | ||||
| | '3' | 'draft': lowest quality available on the printer | | ||||
| +-------+---------------------------------------------------------+ | ||||
| | '4' | 'normal': normal or intermediate quality on the printer | | ||||
| +-------+---------------------------------------------------------+ | ||||
| | '5' | 'high': highest quality available on the printer | | ||||
| +-------+---------------------------------------------------------+ | ||||
| Table 12: "print-quality" Enum Values | ||||
| 5.3. Job Description and Status Attributes | ||||
| The attributes in this section form the attribute group called "job- | The attributes in this section form the attribute group called "job- | |||
| description". The following table summarizes these attributes. The | description". Tables 13 and 14 summarize these attributes. The | |||
| third column indicates whether the attribute is a REQUIRED attribute | third column of each table indicates whether the attribute is a | |||
| that MUST be supported by Printer objects. If it is not indicated as | REQUIRED attribute that MUST be supported by Printers. If it is not | |||
| REQUIRED, then it is OPTIONAL. The maximum size in octets for 'text' | indicated as REQUIRED, then it is OPTIONAL. The maximum size in | |||
| and 'name' attributes is indicated in parenthesizes. | octets for 'text' and 'name' attributes is indicated in | |||
| parenthesizes. | ||||
| +----------------------------+----------------------+--------------+ | +------------------+----------------+-----------+ | |||
| | Attribute | Syntax | REQUIRED? | | | Attribute | Syntax | REQUIRED? | | |||
| +----------------------------+----------------------+--------------+ | +------------------+----------------+-----------+ | |||
| | job-uri | uri | REQUIRED | | | job-impressions | integer(0:MAX) | | | |||
| +----------------------------+----------------------+--------------+ | +------------------+----------------+-----------+ | |||
| | job-id | integer(1:MAX) | REQUIRED | | | job-k-octets | integer(0:MAX) | | | |||
| +----------------------------+----------------------+--------------+ | +------------------+----------------+-----------+ | |||
| | job-printer-uri | uri | REQUIRED | | | job-media-sheets | integer(0:MAX) | | | |||
| +----------------------------+----------------------+--------------+ | +------------------+----------------+-----------+ | |||
| | job-more-info | uri | | | | job-name | name(MAX) | REQUIRED | | |||
| +----------------------------+----------------------+--------------+ | +------------------+----------------+-----------+ | |||
| | job-name | name (MAX) | REQUIRED | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | job-originating-user-name | name (MAX) | REQUIRED | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | job-state | type1 enum | REQUIRED | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | job-state-reasons | 1setOf type2 keyword | REQUIRED | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | job-state-message | text (MAX) | | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | job-detailed-status- | 1setOf text (MAX) | | | ||||
| | messages | | | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | job-document-access-errors | 1setOf text (MAX) | | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | number-of-documents | integer (0:MAX) | | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | output-device-assigned | name (127) | | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | time-at-creation | integer (MIN:MAX) | REQUIRED | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | time-at-processing | integer (MIN:MAX) | REQUIRED | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | time-at-completed | integer (MIN:MAX) | REQUIRED | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | job-printer-up-time | integer (1:MAX) | REQUIRED | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | date-time-at-creation | dateTime | | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | date-time-at-processing | dateTime | | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | date-time-at-completed | dateTime | | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | number-of-intervening-jobs | integer (0:MAX) | | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | job-message-from-operator | text (127) | | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | job-k-octets | integer (0:MAX) | | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | job-impressions | integer (0:MAX) | | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | job-media-sheets | integer (0:MAX) | | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | job-k-octets-processed | integer (0:MAX) | | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | job-impressions-completed | integer (0:MAX) | | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | job-media-sheets-completed | integer (0:MAX) | | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | attributes-charset | charset | REQUIRED | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| | attributes-natural-language| naturalLanguage | REQUIRED | | ||||
| +----------------------------+----------------------+--------------+ | ||||
| 4.3.1 job-uri (uri) | Table 13: Job Description Attributes (READ-WRITE) | |||
| This REQUIRED attribute contains the URI for the job. The Printer | +-------------------------------+----------------------+-----------+ | |||
| object, on receipt of a new job, generates a URI which identifies the | | Attribute | Syntax | REQUIRED? | | |||
| new Job. The Printer object returns the value of the "job-uri" | +-------------------------------+----------------------+-----------+ | |||
| attribute as part of the response to a create request. The precise | | attributes-charset | charset | REQUIRED | | |||
| format of a Job URI is implementation dependent. If the Printer | +-------------------------------+----------------------+-----------+ | |||
| object supports more than one URI and there is some relationship | | attributes-natural-language | naturalLanguage | REQUIRED | | |||
| between the newly formed Job URI and the Printer object's URI, the | +-------------------------------+----------------------+-----------+ | |||
| Printer object uses the Printer URI supplied by the client in the | | date-time-at-completed | dateTime | | | |||
| create request. For example, if the create request comes in over a | +-------------------------------+----------------------+-----------+ | |||
| secure channel, the new Job URI MUST use the same secure channel. | | date-time-at-creation | dateTime | | | |||
| This can be guaranteed because the Printer object is responsible for | +-------------------------------+----------------------+-----------+ | |||
| generating the Job URI and the Printer object is aware of its | | date-time-at-processing | dateTime | | | |||
| security configuration and policy as well as the Printer URI used in | +-------------------------------+----------------------+-----------+ | |||
| the create request. | | job-detailed-status- messages | 1setOf text(MAX) | | | |||
| +-------------------------------+----------------------+-----------+ | ||||
| | job-document-access-errors | 1setOf text(MAX) | | | ||||
| +-------------------------------+----------------------+-----------+ | ||||
| | job-id | integer(1:MAX) | REQUIRED | | ||||
| +-------------------------------+----------------------+-----------+ | ||||
| | job-impressions-completed | integer(0:MAX) | | | ||||
| +-------------------------------+----------------------+-----------+ | ||||
| | job-k-octets-processed | integer(0:MAX) | | | ||||
| +-------------------------------+----------------------+-----------+ | ||||
| | job-media-sheets-completed | integer(0:MAX) | | | ||||
| +-------------------------------+----------------------+-----------+ | ||||
| | job-message-from-operator | text(127) | | | ||||
| +-------------------------------+----------------------+-----------+ | ||||
| | job-more-info | uri | | | ||||
| +-------------------------------+----------------------+-----------+ | ||||
| | job-originating-user-name | name(MAX) | REQUIRED | | ||||
| +-------------------------------+----------------------+-----------+ | ||||
| | job-printer-up-time | integer(1:MAX) | REQUIRED | | ||||
| +-------------------------------+----------------------+-----------+ | ||||
| | job-printer-uri | uri | REQUIRED | | ||||
| +-------------------------------+----------------------+-----------+ | ||||
| | job-state | type1 enum | REQUIRED | | ||||
| +-------------------------------+----------------------+-----------+ | ||||
| | job-state-message | text(MAX) | | | ||||
| +-------------------------------+----------------------+-----------+ | ||||
| | job-state-reasons | 1setOf type2 keyword | REQUIRED | | ||||
| +-------------------------------+----------------------+-----------+ | ||||
| | job-uri | uri | REQUIRED | | ||||
| +-------------------------------+----------------------+-----------+ | ||||
| | number-of-documents | integer(0:MAX) | | | ||||
| +-------------------------------+----------------------+-----------+ | ||||
| | number-of-intervening-jobs | integer(0:MAX) | | | ||||
| +-------------------------------+----------------------+-----------+ | ||||
| | output-device-assigned | name(127) | | | ||||
| +-------------------------------+----------------------+-----------+ | ||||
| | time-at-completed | integer(MIN:MAX) | REQUIRED | | ||||
| +-------------------------------+----------------------+-----------+ | ||||
| | time-at-creation | integer(MIN:MAX) | REQUIRED | | ||||
| +-------------------------------+----------------------+-----------+ | ||||
| | time-at-processing | integer(MIN:MAX) | REQUIRED | | ||||
| +-------------------------------+----------------------+-----------+ | ||||
| For a description of this attribute and its relationship to "job-id" | Table 14: Job Status Attributes (READ-ONLY) | |||
| and "job-printer-uri" attribute, see the discussion in section 2.4 on | ||||
| "Object Identity". | ||||
| 4.3.2 job-id (integer(1:MAX)) | 5.3.1. job-id (integer(1:MAX)) | |||
| This REQUIRED attribute contains the ID of the job. The Printer, on | This REQUIRED attribute contains the ID of the Job. The Printer, on | |||
| receipt of a new job, generates an ID which identifies the new Job on | receipt of a new job, generates an ID which identifies the new Job on | |||
| that Printer. The Printer returns the value of the "job-id" | that Printer. The Printer returns the value of the "job-id" | |||
| attribute as part of the response to a create request. The 0 value | attribute as part of the response to a Job Creation request. The 0 | |||
| is not included to allow for compatibility with SNMP index values | value is not included to allow for compatibility with SNMP index | |||
| which also cannot be 0. | values which also cannot be 0. | |||
| For a description of this attribute and its relationship to "job-uri" | For a description of this attribute and its relationship to "job-uri" | |||
| and "job-printer-uri" attribute, see the discussion in section 2.4 on | and "job-printer-uri" attribute, see the discussion in Section 3.4 on | |||
| "Object Identity". | "Object Identity". | |||
| 4.3.3 job-printer-uri (uri) | 5.3.2. job-uri (uri) | |||
| This REQUIRED attribute identifies the Printer object that created | This REQUIRED attribute contains the URI for the Job. The Printer, on | |||
| this Job object. When a Printer object creates a Job object, it | receipt of a new job, generates a URI which identifies the new Job. | |||
| populates this attribute with the Printer object URI that was used in | The Printer returns the value of the "job-uri" attribute as part of | |||
| the create request. This attribute permits a client to identify the | the response to a Job Creation request. The precise format of a Job | |||
| Printer object that created this Job object when only the Job | URI is implementation dependent [RFC3510] [RFC7472]. If the Printer | |||
| object's URI is available to the client. The client queries the | supports more than one URI and there is some relationship between the | |||
| creating Printer object to determine which languages, charsets, | newly formed Job URI and the Printer's URI, the Printer uses the | |||
| Printer URI supplied by the Client in the Job Creation request. For | ||||
| example, if the Job Creation request comes in over a secure channel, | ||||
| the new Job URI MUST use the same secure channel. This can be | ||||
| guaranteed because the Printer is responsible for generating the Job | ||||
| URI and the Printer is aware of its security configuration and policy | ||||
| as well as the Printer URI used in the Job Creation request. | ||||
| For a description of this attribute and its relationship to "job-id" | ||||
| and "job-printer-uri" attribute, see the discussion in Section 3.4 on | ||||
| "Object Identity". | ||||
| 5.3.3. job-printer-uri (uri) | ||||
| This REQUIRED attribute identifies the Printer that created this Job. | ||||
| When a Printer creates a Job, it populates this attribute with the | ||||
| Printer URI that was used in the Job Creation request. This | ||||
| attribute permits a Client to identify the Printer that created this | ||||
| Job when only the Job's URI is available to the Client. The Client | ||||
| queries the creating Printer to determine which languages, charsets, | ||||
| operations, are supported for this Job. | operations, are supported for this Job. | |||
| For a description of this attribute and its relationship to "job-uri" | For a description of this attribute and its relationship to "job-uri" | |||
| and "job-id" attribute, see the discussion in section 2.4 on "Object | and "job-id" attribute, see the discussion in Section 3.4 on "Object | |||
| Identity". | Identity". | |||
| 4.3.4 job-more-info (uri) | 5.3.4. job-more-info (uri) | |||
| Similar to "printer-more-info", this attribute contains the URI | Similar to "printer-more-info", this attribute contains the URI | |||
| referencing some resource with more information about this Job | referencing some resource with more information about this Job, | |||
| object, perhaps an HTML page containing information about the Job. | perhaps an HTML page containing status information about the Job. | |||
| 4.3.5 job-name (name(MAX)) | 5.3.5. job-name (name(MAX)) | |||
| This REQUIRED attribute is the name of the job. It is a name that is | This REQUIRED attribute is the name of the Job. It is a name that is | |||
| more user friendly than the "job-uri" attribute value. It does not | more user friendly than the "job-uri" or "job-id" attribute values. | |||
| need to be unique between Jobs. The Job's "job-name" attribute is | It does not need to be unique between Jobs. The Job's "job-name" | |||
| set to the value supplied by the client in the "job-name" operation | attribute is set to the value supplied by the Client in the "job- | |||
| attribute in the create request (see Section 3.2.1.1). If, however, | name" operation attribute in the Job Creation request (see | |||
| the "job-name" operation attribute is not supplied by the client in | Section 4.2.1.1). If, however, the "job-name" operation attribute is | |||
| the create request, the Printer object, on creation of the Job, MUST | not supplied by the Client in the Job Creation request, the Printer, | |||
| generate a name. The printer SHOULD generate the value of the Job's | on creation of the Job, MUST generate a name. The Printer SHOULD | |||
| "job-name" attribute from the first of the following sources that | generate the value of the Job's "job-name" attribute from the first | |||
| produces a value: 1) the "document-name" operation attribute of the | of the following sources that produces a value: 1) the "document- | |||
| first (or only) document, 2) the "document-URI" attribute of the | name" operation attribute of the first (or only) document, 2) the | |||
| first (or only) document, or 3) any other piece of Job specific | "document-URI" attribute of the first (or only) document, or 3) any | |||
| and/or Document Content information. | other piece of Job specific and/or Document data. | |||
| 4.3.6 job-originating-user-name (name(MAX)) | 5.3.6. job-originating-user-name (name(MAX)) | |||
| This REQUIRED attribute contains the name of the end user that | This REQUIRED attribute contains the name of the End User that | |||
| submitted the print job. The Printer object sets this attribute to | submitted the print Job. The Printer sets this attribute to the most | |||
| the most authenticated printable name that it can obtain from the | authenticated printable name that it can obtain from the | |||
| authentication service over which the IPP operation was received. | authentication service over which the IPP operation was received. | |||
| Only if such is not available, does the Printer object use the value | Only if such is not available, does the Printer use the value | |||
| supplied by the client in the "requesting-user-name" operation | supplied by the Client in the "requesting-user-name" operation | |||
| attribute of the create operation (see Sections 4.4.2, 4.4.3, and 8). | attribute of the Job Creation request (see Sections 5.4.2, and 5.4.3, | |||
| and 9). | ||||
| Note: The Printer object needs to keep an internal originating user | ||||
| id of some form, typically as a credential of a principal, with the | ||||
| Job object. Since such an internal attribute is implementation- | ||||
| dependent and not of interest to clients, it is not specified as a | ||||
| Job Description attribute. This originating user id is used for | ||||
| authorization checks (if any) on all subsequent operations. | ||||
| 4.3.7 job-state (type1 enum) | ||||
| This REQUIRED attribute identifies the current state of the job. | ||||
| Even though the IPP protocol defines seven values for job states | ||||
| (plus the out-of-band 'unknown' value - see Section 4.1), | ||||
| implementations only need to support those states which are | ||||
| appropriate for the particular implementation. In other words, a | ||||
| Printer supports only those job states implemented by the output | ||||
| device and available to the Printer object implementation. | ||||
| Standard enum values are: | ||||
| Values Symbolic Name and Description | ||||
| '3' 'pending': The job is a candidate to start processing, but is | ||||
| not yet processing. | ||||
| '4' 'pending-held': The job is not a candidate for processing for | ||||
| any number of reasons but will return to the 'pending' | ||||
| state as soon as the reasons are no longer present. The | ||||
| job's "job-state-reason" attribute MUST indicate why the | ||||
| job is no longer a candidate for processing. | ||||
| '5' 'processing': One or more of: | ||||
| 1. the job is using, or is attempting to use, one or | ||||
| more purely software processes that are analyzing, | ||||
| creating, or interpreting a PDL, etc., | ||||
| 2. the job is using, or is attempting to use, one or | ||||
| more hardware devices that are interpreting a PDL, making | ||||
| marks on a medium, and/or performing finishing, such as | ||||
| stapling, etc., | ||||
| 3. the Printer object has made the job ready for | ||||
| printing, but the output device is not yet printing it, | ||||
| either because the job hasn't reached the output device | ||||
| or because the job is queued in the output device or some | ||||
| other spooler, awaiting the output device to print it. | ||||
| When the job is in the 'processing' state, the entire job | ||||
| state includes the detailed status represented in the | ||||
| Printer object's "printer-state", "printer-state- | ||||
| reasons", and "printer-state-message" attributes. | ||||
| Implementations MAY, though they NEED NOT, include | ||||
| additional values in the job's "job-state-reasons" | ||||
| attribute to indicate the progress of the job, such as | ||||
| adding the 'job-printing' value to indicate when the | ||||
| output device is actually making marks on paper and/or | ||||
| the 'processing-to-stop-point' value to indicate that the | ||||
| IPP object is in the process of canceling or aborting the | ||||
| job. Most implementations won't bother with this nuance. | ||||
| '6' 'processing-stopped': The job has stopped while processing | ||||
| for any number of reasons and will return to the | ||||
| 'processing' state as soon as the reasons are no longer | ||||
| present. | ||||
| The job's "job-state-reason" attribute MAY indicate why | ||||
| the job has stopped processing. For example, if the | ||||
| output device is stopped, the 'printer-stopped' value MAY | ||||
| be included in the job's "job-state-reasons" attribute. | ||||
| Note: When an output device is stopped, the device | Note: The Printer needs to keep an internal originating user id of | |||
| usually indicates its condition in human readable form | some form, typically as a credential of a principal, with the Job. | |||
| locally at the device. A client can obtain more complete | Since such an internal attribute is implementation-dependent and not | |||
| device status remotely by querying the Printer object's | of interest to Clients, it is not specified as a Job attribute. This | |||
| "printer-state", "printer-state-reasons" and "printer- | originating user id is used for authorization checks (if any) on all | |||
| state-message" attributes. | subsequent operations. | |||
| '7' 'canceled': The job has been canceled by a Cancel-Job | 5.3.7. job-state (type1 enum) | |||
| operation and the Printer object has completed canceling | ||||
| the job and all job status attributes have reached their | ||||
| final values for the job. While the Printer object is | ||||
| canceling the job, the job remains in its current state, | ||||
| but the job's "job-state-reasons" attribute SHOULD | ||||
| contain the 'processing-to-stop-point' value and one of | ||||
| the 'canceled-by-user', 'canceled-by-operator', or | ||||
| 'canceled-at-device' value. When the job moves to the | ||||
| 'canceled' state, the 'processing-to-stop-point' value, | ||||
| if present, MUST be removed, but the 'canceled-by-xxx', | ||||
| if present, MUST remain. | ||||
| '8' 'aborted': The job has been aborted by the system, usually | This REQUIRED attribute identifies the current state of the Job. Even | |||
| while the job was in the 'processing' or 'processing- | though the IPP protocol defines seven values for Job states (plus the | |||
| stopped' state and the Printer has completed aborting the | out-of-band 'unknown' value - see Section 5.1), implementations only | |||
| job and all job status attributes have reached their | need to support those states which are appropriate for the particular | |||
| final values for the job. While the Printer object is | implementation. In other words, a Printer supports only those Job | |||
| aborting the job, the job remains in its current state, | states implemented by the Output Device and available to the Printer | |||
| but the job's "job-state-reasons" attribute SHOULD | implementation. | |||
| contain the 'processing-to-stop-point' and 'aborted-by- | ||||
| system' values. When the job moves to the 'aborted' | ||||
| state, the 'processing-to-stop-point' value, if present, | ||||
| MUST be removed, but the 'aborted-by-system' value, if | ||||
| present, MUST remain. | ||||
| '9' 'completed': The job has completed successfully or with | Standard enum values are listed in Table 15. | |||
| warnings or errors after processing and all of the job | ||||
| media sheets have been successfully stacked in the | ||||
| appropriate output bin(s) and all job status attributes | ||||
| have reached their final values for the job. The job's | ||||
| "job-state-reasons" attribute SHOULD contain one of: | ||||
| 'completed-successfully', 'completed-with-warnings', or | ||||
| 'completed-with-errors' values. | ||||
| The final value for this attribute MUST be one of: 'completed', | The final value for this attribute MUST be one of: 'completed', | |||
| 'canceled', or 'aborted' before the Printer removes the job | 'canceled', or 'aborted' before the Printer removes the Job | |||
| altogether. The length of time that jobs remain in the 'canceled', | altogether. The length of time that Jobs remain in the 'canceled', | |||
| 'aborted', and 'completed' states depends on implementation. See | 'aborted', and 'completed' states depends on implementation. See | |||
| section 4.3.7.2. | Section 5.3.7.2. | |||
| The following figure shows the normal job state transitions. | Figure 1 shows the normal Job state transitions. Normally a Job | |||
| progresses from left to right. Other state transitions are unlikely, | ||||
| but are not forbidden. Not shown are the transitions to the | ||||
| 'canceled' state from the 'pending', 'pending-held', and 'processing- | ||||
| stopped' states. | ||||
| +----> canceled | +----> canceled | |||
| / | / | |||
| +----> pending --------> processing ---------+------> completed | +----> pending -------> processing ---------+------> completed | |||
| | ^ ^ \ | | ^ ^ \ | |||
| --->+ | | +----> aborted | --->+ | | +----> aborted | |||
| | v v / | | v v / | |||
| +----> pending-held processing-stopped ---+ | +----> pending-held processing-stopped ---+ | |||
| Normally a job progresses from left to right. Other state | Figure 1: Figure 3 - IPP Job Life Cycle | |||
| transitions are unlikely, but are not forbidden. Not shown are the | ||||
| transitions to the 'canceled' state from the 'pending', 'pending- | ||||
| held', and 'processing-stopped' states. | ||||
| Jobs reach one of the three terminal states: 'completed', 'canceled', | Jobs reach one of the three terminal states: 'completed', 'canceled', | |||
| or 'aborted', after the jobs have completed all activity, including | or 'aborted', after the Jobs have completed all activity, including | |||
| stacking output media, after the jobs have completed all activity, | stacking output media, after the Jobs have completed all activity, | |||
| and all job status attributes have reached their final values for the | and all Job status attributes have reached their final values for the | |||
| job. | Job. | |||
| 4.3.7.1 Forwarding Servers | +--------+----------------------------------------------------------+ | |||
| | Values | Symbolic Name and Description | | ||||
| +--------+----------------------------------------------------------+ | ||||
| | '3' | 'pending': The Job is a candidate to start processing, | | ||||
| | | but is not yet processing. | | ||||
| +--------+----------------------------------------------------------+ | ||||
| | '4' | 'pending-held': The Job is not a candidate for | | ||||
| | | processing for any number of reasons but will return to | | ||||
| | | the 'pending' state as soon as the reasons are no longer | | ||||
| | | present. The Job's "job-state-reason" attribute MUST | | ||||
| | | indicate why the Job is no longer a candidate for | | ||||
| | | processing. | | ||||
| +--------+----------------------------------------------------------+ | ||||
| | '5' | 'processing': One or more of: 1. the Job is using, or is | | ||||
| | | attempting to use, one or more purely software processes | | ||||
| | | that are analyzing, creating, or interpreting a PDL, | | ||||
| | | etc., 2. the Job is using, or is attempting to use, one | | ||||
| | | or more hardware devices that are interpreting a PDL, | | ||||
| | | making marks on a medium, and/or performing finishing, | | ||||
| | | such as stapling, etc., 3. the Printer has made the Job | | ||||
| | | ready for printing, but the Output Device is not yet | | ||||
| | | printing it, either because the Job hasn't reached the | | ||||
| | | Output Device or because the Job is queued in the Output | | ||||
| | | Device or some other spooler, awaiting the Output Device | | ||||
| | | to print it. When the Job is in the 'processing' state, | | ||||
| | | the entire Job state includes the detailed status | | ||||
| | | represented in the Printer's "printer-state", "printer- | | ||||
| | | state-reasons", and "printer-state-message" attributes. | | ||||
| | | Implementations MAY include additional values in the | | ||||
| | | Job's "job-state-reasons" attribute to indicate the | | ||||
| | | progress of the job, such as adding the 'job-printing' | | ||||
| | | value to indicate when the Output Device is actually | | ||||
| | | making marks on paper and/or the 'processing-to-stop- | | ||||
| | | point' value to indicate that the Printer is in the | | ||||
| | | process of canceling or aborting the Job. | | ||||
| +--------+----------------------------------------------------------+ | ||||
| | '6' | 'processing-stopped': The Job has stopped while | | ||||
| | | processing for any number of reasons and will return to | | ||||
| | | the 'processing' state as soon as the reasons are no | | ||||
| | | longer present. The Job's "job-state-reason" attribute | | ||||
| | | MAY indicate why the Job has stopped processing. For | | ||||
| | | example, if the Output Device is stopped, the 'printer- | | ||||
| | | stopped' value MAY be included in the Job's "job-state- | | ||||
| | | reasons" attribute. Note: When an Output Device is | | ||||
| | | stopped, the device usually indicates its condition in | | ||||
| | | human readable form locally at the device. A Client can | | ||||
| | | obtain more complete device status remotely by querying | | ||||
| | | the Printer's "printer-state", "printer-state-reasons" | | ||||
| | | and "printer-state-message" attributes. | | ||||
| +--------+----------------------------------------------------------+ | ||||
| | '7' | 'canceled': The Job has been canceled by a Cancel-Job | | ||||
| | | operation and the Printer has completed canceling the | | ||||
| | | Job and all Job status attributes have reached their | | ||||
| | | final values for the Job. While the Printer is canceling | | ||||
| | | the job, the Job remains in its current state, but the | | ||||
| | | Job's "job-state-reasons" attribute SHOULD contain the | | ||||
| | | 'processing-to-stop-point' value and one of the | | ||||
| | | 'canceled-by-user', 'canceled-by-operator', or | | ||||
| | | 'canceled-at-device' value. When the Job moves to the | | ||||
| | | 'canceled' state, the 'processing-to-stop-point' value, | | ||||
| | | if present, MUST be removed, but the 'canceled-by-xxx', | | ||||
| | | if present, MUST remain. | | ||||
| +--------+----------------------------------------------------------+ | ||||
| | '8' | 'aborted': The Job has been aborted by the system, | | ||||
| | | usually while the Job was in the 'processing' or | | ||||
| | | 'processing-stopped' state and the Printer has completed | | ||||
| | | aborting the Job and all Job status attributes have | | ||||
| | | reached their final values for the Job. While the | | ||||
| | | Printer is aborting the job, the Job remains in its | | ||||
| | | current state, but the Job's "job-state-reasons" | | ||||
| | | attribute SHOULD contain the 'processing-to-stop-point' | | ||||
| | | and 'aborted-by-system' values. When the Job moves to | | ||||
| | | the 'aborted' state, the 'processing-to-stop-point' | | ||||
| | | value, if present, MUST be removed, but the 'aborted-by- | | ||||
| | | system' value, if present, MUST remain. | | ||||
| +--------+----------------------------------------------------------+ | ||||
| | '9' | 'completed': The Job has completed successfully or with | | ||||
| | | warnings or errors after processing and all of the Job | | ||||
| | | Media Sheets have been successfully stacked in the | | ||||
| | | appropriate output bin(s) and all Job status attributes | | ||||
| | | have reached their final values for the Job. The Job's | | ||||
| | | "job-state-reasons" attribute SHOULD contain one of: | | ||||
| | | 'completed-successfully', 'completed-with-warnings', or | | ||||
| | | 'completed-with-errors' values. | | ||||
| +--------+----------------------------------------------------------+ | ||||
| Table 15: "job-state" Enum Values | ||||
| 5.3.7.1. Forwarding Servers | ||||
| As with all other IPP attributes, if the implementation cannot | As with all other IPP attributes, if the implementation cannot | |||
| determine the correct value for this attribute, it SHOULD respond | determine the correct value for this attribute, it SHOULD respond | |||
| with the out-of-band value 'unknown' (see section 4.1) rather than | with the out-of-band value 'unknown' (see Section 5.1) rather than | |||
| try to guess at some possibly incorrect value and give the end user | try to guess at some possibly incorrect value and confuse the End | |||
| the wrong impression about the state of the Job object. For example, | User about the state of the Job. For example, if the implementation | |||
| if the implementation is just a gateway into some printing system | is just a gateway into some printing system from which it can | |||
| from which it can normally get status, but temporarily is unable, | normally get status, but temporarily is unable, then the | |||
| then the implementation should return the 'unknown' value. However, | implementation should return the 'unknown' value. However, if the | |||
| if the implementation is a gateway to a printing system that never | implementation is a gateway to a printing system that never provides | |||
| provides detailed status about the print job, the implementation MAY | detailed status about the print job, the implementation MAY set the | |||
| set the IPP Job object's state to 'completed', provided that it also | IPP Job's state to 'completed', provided that it also sets the | |||
| sets the 'queued-in-device' value in the job's "job-state-reasons" | 'queued-in-device' value in the Job's "job-state-reasons" attribute | |||
| attribute (see section 4.3.8). | (see Section 5.3.8). | |||
| 4.3.7.2 Partitioning of Job States | 5.3.7.2. Partitioning of Job States | |||
| This section partitions the 7 job states into phases: Job Not | This section partitions the seven Job states into phases: Job Not | |||
| Completed, Job Retention, Job History, and Job Removal. This section | Completed, Job Retention, Job History, and Job Removal. This section | |||
| also explains the 'job-restartable' value of the "job-state-reasons" | also explains the 'job-restartable' value of the "job-state-reasons" | |||
| Job Description attribute for use with the Restart-Job operation. | Job Status attribute for use with the Restart-Job and Resubmit-Job | |||
| [PWG5100.11] operations. | ||||
| Job Not Completed: When a job is in the 'pending', 'pending-held', | Job Not Completed: When a Job is in the 'pending', 'pending-held', | |||
| 'processing', or 'processing-stopped' states, the job is not | 'processing', or 'processing-stopped' states, the Job is not | |||
| completed. | completed. | |||
| Job Retention: When a job enters one of the three terminal job | Job Retention: When a Job enters one of the three terminal Job | |||
| states: 'completed', 'canceled', or 'aborted', the IPP Printer | states: 'completed', 'canceled', or 'aborted', the IPP Printer MAY | |||
| object MAY "retain" the job in a restartable condition for an | "retain" the Job in a restartable condition for an implementation- | |||
| implementation-defined time period. This time period MAY be zero | defined time period. This time period MAY be zero seconds and MAY | |||
| seconds and MAY depend on the terminal job state. This phase is | depend on the terminal Job state. This phase is called Job | |||
| called Job Retention. While in the Job Retention phase, the job's | Retention. While in the Job Retention phase, the Job's Document data | |||
| document data is retained and a client may restart the job using the | is retained and a Client can restart the Job using the Restart-Job | |||
| Restart-Job operation. If the IPP object supports the Restart-Job | operation. If the Printer supports the Restart-Job or Resubmit-Job | |||
| operation, then it SHOULD indicate that the job is restartable by | operations, then it SHOULD indicate that the Job is restartable by | |||
| adding the 'job-restartable' value to the job's "job-state-reasons" | adding the 'job-restartable' value to the Job's "job-state-reasons" | |||
| attribute (see Section 4.3.8) during the Job Retention phase. | attribute (see Section 5.3.8) during the Job Retention phase. | |||
| Job History: After the Job Retention phase expires for a job, the | Job History: After the Job Retention phase expires for a Job, the | |||
| Printer object deletes the document data for the job and the job | Printer deletes the Document data for the Job and the Job becomes | |||
| becomes part of the Job History. The Printer object MAY also delete | part of the Job History. The Printer MAY also delete any number of | |||
| any number of the job attributes. Since the job is no longer | the Job attributes. Since the Job is no longer restartable, the | |||
| restartable, the Printer object MUST remove the 'job-restartable' | Printer MUST remove the 'job-restartable' value from the Job's "job- | |||
| value from the job's "job-state-reasons" attribute, if present. | state-reasons" attribute, if present. Printers SHOULD keep the Job | |||
| in the Job History phase for at least 60 seconds to allow Clients to | ||||
| discover the final disposition of the Job. | ||||
| Job Removal: After the job has remained in the Job History for an | Job Removal: After the Job has remained in the Job History for an | |||
| implementation-defined time, such as when the number of jobs exceeds | implementation-defined time, such as when the number of Jobs exceeds | |||
| a fixed number or after a fixed time period (which MAY be zero | a fixed number or after a fixed time period (which MAY be zero | |||
| seconds), the IPP Printer removes the job from the system. | seconds), the IPP Printer removes the Job from the system. | |||
| Using the Get-Jobs operation and supplying the 'not-completed' value | Using the Get-Jobs operation and supplying the 'not-completed' value | |||
| for the "which-jobs" operation attribute, a client is requesting jobs | for the "which-jobs" operation attribute, a Client is requesting Jobs | |||
| in the Job Not Completed phase. Using the Get-Jobs operation and | in the Job Not Completed phase. Using the Get-Jobs operation and | |||
| supplying the 'completed' value for the "which-jobs" operation | supplying the 'completed' value for the "which-jobs" operation | |||
| attribute, a client is requesting jobs in the Job Retention and Job | attribute, a Client is requesting Jobs in the Job Retention and Job | |||
| History phases. Using the Get-Job-Attributes operation, a client is | History phases. Using the Get-Job-Attributes operation, a Client is | |||
| requesting a job in any phase except Job Removal. After Job Removal, | requesting a Job in any phase except Job Removal. After Job Removal, | |||
| the Get-Job-Attributes and Get-Jobs operations no longer are capable | the Get-Job-Attributes and Get-Jobs operations no longer are capable | |||
| of returning any information about a job. | of returning any information about a Job. | |||
| 4.3.8 job-state-reasons (1setOf type2 keyword) | 5.3.8. job-state-reasons (1setOf type2 keyword) | |||
| This REQUIRED attribute provides additional information about the | This REQUIRED attribute provides additional information about the | |||
| job's current state, i.e., information that augments the value of the | Job's current state, i.e., information that augments the value of the | |||
| job's "job-state" attribute. | Job's "job-state" attribute. | |||
| These values MAY be used with any job state or states for which the | These values MAY be used with any Job state or states for which the | |||
| reason makes sense. Some of these value definitions indicate | reason makes sense. Some of these value definitions indicate | |||
| conformance requirements; the rest are OPTIONAL. Furthermore, when | conformance requirements; the rest are OPTIONAL. Furthermore, when | |||
| implemented, the Printer MUST return these values when the reason | implemented, the Printer MUST return these values when the reason | |||
| applies and MUST NOT return them when the reason no longer applies | applies and MUST NOT return them when the reason no longer applies | |||
| whether the value of the Job's "job-state" attribute changed or not. | whether the value of the Job's "job-state" attribute changed or not. | |||
| When the Job does not have any reasons for being in its current | When the Job does not have any reasons for being in its current | |||
| state, the value of the Job's "job-state-reasons" attribute MUST be | state, the value of the Job's "job-state-reasons" attribute MUST be | |||
| 'none'. | 'none'. | |||
| Note: While values cannot be added to the 'job-state' attribute | Note: While values cannot be added to the 'job-state' attribute | |||
| without impacting deployed clients that take actions upon receiving | without impacting deployed Clients that take actions upon receiving | |||
| "job-state" values, it is the intent that additional "job-state- | "job-state" values, it is the intent that additional "job-state- | |||
| reasons" values can be defined and registered without impacting such | reasons" values can be defined and registered without impacting such | |||
| deployed clients. In other words, the "job-state-reasons" attribute | deployed Clients. In other words, the "job-state-reasons" attribute | |||
| is intended to be extensible. | is intended to be extensible. | |||
| The following standard keyword values are defined. For ease of | The following standard keyword values are defined. For ease of | |||
| understanding, the values are presented in the order in which the | understanding, the values are presented in the order in which the | |||
| reasons are likely to occur (if implemented), starting with the | reasons are likely to occur (if implemented), starting with the 'job- | |||
| 'job-incoming' value: | incoming' value: | |||
| 'none': There are no reasons for the job's current state. This | o 'none': There are no reasons for the Job's current state. This | |||
| state reason is semantically equivalent to "job-state-reasons" | state reason is semantically equivalent to "job-state-reasons" | |||
| without any value and MUST be used when there is no other | without any value and MUST be used when there is no other value, | |||
| value, since the 1setOf attribute syntax requires at least one | since the 1setOf attribute syntax requires at least one value. | |||
| value. | ||||
| 'job-incoming': Either (1) the Printer has accepted the Create- | ||||
| Job operation and is expecting additional Send-Document and/or | ||||
| Send-URI operations, or (2) the Printer is retrieving/accepting | ||||
| document data as a result of a Print-Job, Print-URI, Send- | ||||
| Document or Send-URI operation. | ||||
| 'job-data-insufficient': The Create-Job operation has been | ||||
| accepted by the Printer, but the Printer is expecting | ||||
| additional document data before it can move the job into the | ||||
| 'processing' state. If a Printer starts processing before it | ||||
| has received all data, the Printer removes the 'job-data- | ||||
| insufficient' reason, but the 'job-incoming' remains. If a | ||||
| Printer starts processing after it has received all data, the | ||||
| Printer removes the 'job-data-insufficient' reason and the | ||||
| 'job-incoming' at the same time. | ||||
| 'document-access-error': After accepting a Print-URI or Send-URI | ||||
| request, the Printer could not access one or more documents | ||||
| passed by reference. This reason is intended to cover any file | ||||
| access problem, including file does not exist and access denied | ||||
| because of an access control problem. The Printer MAY also | ||||
| indicate the document access error using the "job-document- | ||||
| access-errors" Job Description attribute (see section 4.3.11). | ||||
| Whether the Printer aborts the job and moves the job to the | ||||
| 'aborted' job state or prints all documents that are accessible | ||||
| and moves the job to the 'completed' job state and adds the | ||||
| 'completed-with-errors' value in the job's "job-state-reasons" | ||||
| attribute depends on implementation and/or site policy. This | ||||
| value SHOULD be supported if the Print-URI or Send-URI | ||||
| operations are supported. | ||||
| 'submission-interrupted': The job was not completely submitted | ||||
| for some unforeseen reason, such as: (1) the Printer has | ||||
| crashed before the job was closed by the client, (2) the | ||||
| Printer or the document transfer method has crashed in some | ||||
| non-recoverable way before the document data was entirely | ||||
| transferred to the Printer, (3) the client crashed or failed to | ||||
| close the job before the time-out period. See section 4.4.31. | ||||
| 'job-outgoing': The Printer is transmitting the job to the output | ||||
| device. | ||||
| 'job-hold-until-specified': The value of the job's "job-hold- | o 'job-incoming': Either (1) the Printer has accepted the Create-Job | |||
| until" attribute was specified with a time period that is still | operation and is expecting additional Send-Document and/or Send- | |||
| in the future. The job MUST NOT be a candidate for processing | URI operations, or (2) the Printer is retrieving/accepting | |||
| until this reason is removed and there are no other reasons to | Document data as a result of a Print-Job, Print-URI, Send-Document | |||
| hold the job. This value SHOULD be supported if the "job- | or Send-URI operation. | |||
| hold-until" Job Template attribute is supported. | ||||
| 'resources-are-not-ready': At least one of the resources needed | ||||
| by the job, such as media, fonts, resource objects, etc., is | ||||
| not ready on any of the physical printer's for which the job is | ||||
| a candidate. This condition MAY be detected when the job is | ||||
| accepted, or subsequently while the job is pending or | ||||
| processing, depending on implementation. The job may remain in | ||||
| its current state or be moved to the 'pending-held' state, | ||||
| depending on implementation and/or job scheduling policy. | ||||
| 'printer-stopped-partly': The value of the Printer's "printer- | ||||
| state-reasons" attribute contains the value 'stopped-partly'. | ||||
| 'printer-stopped': The value of the Printer's "printer-state" | ||||
| attribute is 'stopped'. | ||||
| 'job-interpreting': Job is in the 'processing' state, but more | ||||
| specifically, the Printer is interpreting the document data. | ||||
| 'job-queued': Job is in the 'processing' state, but more | ||||
| specifically, the Printer has queued the document data. | ||||
| 'job-transforming': Job is in the 'processing' state, but more | ||||
| specifically, the Printer is interpreting document data and | ||||
| producing another electronic representation. | ||||
| 'job-queued-for-marker': Job is in any of the 'pending-held', | ||||
| 'pending', or 'processing' states, but more specifically, the | ||||
| Printer has completed enough processing of the document to be | ||||
| able to start marking and the job is waiting for the marker. | ||||
| Systems that require human intervention to release jobs using | ||||
| the Release-Job operation, put the job into the 'pending-held' | ||||
| job state. Systems that automatically select a job to use the | ||||
| marker put the job into the 'pending' job state or keep the | ||||
| job in the 'processing' job state while waiting for the marker, | ||||
| depending on implementation. All implementations put the job | ||||
| into (or back into) the 'processing' state when marking does | ||||
| begin. | ||||
| 'job-printing': The output device is marking media. This value is | ||||
| useful for Printers which spend a great deal of time processing | ||||
| (1) when no marking is happening and then want to show that | ||||
| marking is now happening or (2) when the job is in the process | ||||
| of being canceled or aborted while the job remains in the | ||||
| 'processing' state, but the marking has not yet stopped so that | ||||
| impression or sheet counts are still increasing for the job. | ||||
| 'job-canceled-by-user': The job was canceled by the owner of the | o 'job-data-insufficient': The Create-Job operation has been | |||
| job using the Cancel-Job request, i.e., by a user whose | accepted by the Printer, but the Printer is expecting additional | |||
| authenticated identity is the same as the value of the | Document data before it can move the Job into the 'processing' | |||
| originating user that created the Job object, or by some other | state. If a Printer starts processing before it has received all | |||
| authorized end-user, such as a member of the job owner's | data, the Printer removes the 'job-data-insufficient' reason, but | |||
| security group. This value SHOULD be supported. | the 'job-incoming' remains. If a Printer starts processing after | |||
| 'job-canceled-by-operator': The job was canceled by the operator | it has received all data, the Printer removes the 'job-data- | |||
| using the Cancel-Job request, i.e., by a user who has been | insufficient' reason and the 'job-incoming' at the same time. | |||
| authenticated as having operator privileges (whether local or | ||||
| remote). If the security policy is to allow anyone to cancel | ||||
| anyone's job, then this value may be used when the job is | ||||
| canceled by other than the owner of the job. For such a | ||||
| security policy, in effect, everyone is an operator as far as | ||||
| canceling jobs with IPP is concerned. This value SHOULD be | ||||
| supported if the implementation permits canceling by other than | ||||
| the owner of the job. | ||||
| 'job-canceled-at-device': The job was canceled by an unidentified | ||||
| local user, i.e., a user at a console at the device. This | ||||
| value SHOULD be supported if the implementation supports | ||||
| canceling jobs at the console. | ||||
| 'aborted-by-system': The job (1) is in the process of being | ||||
| aborted, (2) has been aborted by the system and placed in the | ||||
| 'aborted' state, or (3) has been aborted by the system and | ||||
| placed in the 'pending-held' state, so that a user or operator | ||||
| can manually try the job again. This value SHOULD be | ||||
| supported. | ||||
| 'unsupported-compression': The job was aborted by the system | ||||
| because the Printer determined while attempting to decompress | ||||
| the document-data's that the compression is actually not among | ||||
| those supported by the Printer. This value MUST be supported, | ||||
| since "compressions is a REQUIRED operation attribute. | ||||
| 'compression-error': The job was aborted by the system because the | ||||
| Printer encountered an error in the document-data while | ||||
| decompressing it. If the Printer posts this reason, the | ||||
| document-data has already passed any tests that would have led | ||||
| to the 'unsupported-compression' job-state-reason. | ||||
| 'unsupported-document-format': The job was aborted by the system | ||||
| because the document-data's document-format is not among those | ||||
| supported by the Printer. If the client specifies the | ||||
| document-format as 'application/octet-stream', the printer MAY | ||||
| abort the job and post this reason even though the format is a | ||||
| member of the "document-format-supported" printer attribute, | ||||
| but not among the auto-sensed document-formats. This value | ||||
| MUST be supported, since "document-format" is a REQUIRED | ||||
| operation attribute. | ||||
| 'document-format-error': The job was aborted by the system because | o 'document-access-error': After accepting a Print-URI or Send-URI | |||
| the Printer encountered an error in the document-data while | request, the Printer could not access one or more documents passed | |||
| processing it. If the Printer posts this reason, the | by reference. This reason is intended to cover any file access | |||
| document-data has already passed any tests that would have led | problem, including file does not exist and access denied because | |||
| to the 'unsupported-document-format' job-state-reason. | of an access control problem. The Printer MAY also indicate the | |||
| 'processing-to-stop-point': The requester has issued a Cancel-Job | document access error using the "job-document-access-errors" Job | |||
| operation or the Printer object has aborted the job, but is | Status attribute (see Section 5.3.11). Whether the Printer aborts | |||
| still performing some actions on the job until a specified stop | the Job and moves the Job to the 'aborted' Job state or prints all | |||
| point occurs or job termination/cleanup is completed. | documents that are accessible and moves the Job to the 'completed' | |||
| Job state and adds the 'completed-with-errors' value in the Job's | ||||
| "job-state-reasons" attribute depends on implementation and/or | ||||
| site policy. This value SHOULD be supported if the Print-URI or | ||||
| Send-URI operations are supported. | ||||
| If the implementation requires some measurable time to cancel | o 'submission-interrupted': The Job was not completely submitted for | |||
| the job in the 'processing' or 'processing-stopped' job states, | some unforeseen reason, such as: (1) the Printer has crashed | |||
| the IPP object MUST use this value to indicate that the Printer | before the Job was closed by the Client, (2) the Printer or the | |||
| object is still performing some actions on the job while the | document transfer method has crashed in some non-recoverable way | |||
| job remains in the 'processing' or 'processing-stopped' state. | before the Document data was entirely transferred to the Printer, | |||
| After all the job's job description attributes have stopped | (3) the Client crashed or failed to close the Job before the time- | |||
| incrementing, the Printer object moves the job from the | out period. See Section 5.4.31. | |||
| 'processing' state to the 'canceled' or | ||||
| 'aborted' job states. | ||||
| 'service-off-line': The Printer is off-line and accepting no | o 'job-outgoing': The Printer is transmitting the Job to the Output | |||
| jobs. All 'pending' jobs are put into the 'pending-held' | Device. | |||
| state. This situation could be true if the service's or | ||||
| document transform's input is impaired or broken. | ||||
| 'job-completed-successfully': The job completed successfully. | ||||
| This value SHOULD be supported. | ||||
| 'job-completed-with-warnings': The job completed with warnings. | ||||
| This value SHOULD be supported if the implementation detects | ||||
| warnings. | ||||
| 'job-completed-with-errors': The job completed with errors (and | ||||
| possibly warnings too). This value SHOULD be supported if the | ||||
| implementation detects errors. | ||||
| 'job-restartable' - This job is retained (see section 4.3.7.2) and | ||||
| is currently able to be restarted using the Restart-Job | ||||
| operation (see section 3.3.7). If 'job-restartable' is a value | ||||
| of the job's 'job-state-reasons' attribute, then the IPP object | ||||
| MUST accept a Restart-Job operation for that job. This value | ||||
| SHOULD be supported if the Restart-Job operation is supported. | ||||
| 'queued-in-device': The job has been forwarded to a device or | ||||
| print system that is unable to send back status. The Printer | ||||
| sets the job's "job-state " attribute to 'completed' and adds | ||||
| the 'queued-in-device' value to the job's "job-state-reasons" | ||||
| attribute to indicate that the Printer has no additional | ||||
| information about the job and never will have any better | ||||
| information. See section 4.3.7.1. | ||||
| 4.3.9 job-state-message (text(MAX)) | o 'job-hold-until-specified': The value of the Job's "job-hold- | |||
| until" attribute was specified with a time period that is still in | ||||
| the future. The Job MUST NOT be a candidate for processing until | ||||
| this reason is removed and there are no other reasons to hold the | ||||
| Job. This value SHOULD be supported if the "job-hold-until" Job | ||||
| Template attribute is supported. | ||||
| This attribute specifies information about the "job-state" and "job- | o 'resources-are-not-ready': At least one of the resources needed by | |||
| state-reasons" attributes in human readable text. If the Printer | the job, such as media, fonts, resource objects, etc., is not | |||
| object supports this attribute, the Printer object MUST be able to | ready on any of the physical Output Devices for which the Job is a | |||
| candidate. This condition MAY be detected when the Job is | ||||
| accepted, or subsequently while the Job is pending or processing, | ||||
| depending on implementation. The Job can remain in its current | ||||
| state or be moved to the 'pending-held' state, depending on | ||||
| implementation and/or Job scheduling policy. | ||||
| o 'printer-stopped-partly': The value of the Printer's "printer- | ||||
| state-reasons" attribute contains the value 'stopped-partly'. | ||||
| o 'printer-stopped': The value of the Printer's "printer-state" | ||||
| attribute is 'stopped'. | ||||
| o 'job-interpreting': Job is in the 'processing' state, but more | ||||
| specifically, the Printer is interpreting the Document data. | ||||
| o 'job-queued': Job is in the 'processing' state, but more | ||||
| specifically, the Printer has queued the Document data. | ||||
| o 'job-transforming': Job is in the 'processing' state, but more | ||||
| specifically, the Printer is interpreting Document data and | ||||
| producing another electronic representation. | ||||
| o 'job-queued-for-marker': Job is in any of the 'pending-held', | ||||
| 'pending', or 'processing' states, but more specifically, the | ||||
| Printer has completed enough processing of the document to be able | ||||
| to start marking and the Job is waiting for the marker. Systems | ||||
| that require human intervention to release Jobs using the Release- | ||||
| Job operation put the Job into the 'pending-held' Job state. | ||||
| Systems that automatically select a Job to use the marker put the | ||||
| Job into the 'pending' Job state or keep the Job in the | ||||
| 'processing' Job state while waiting for the marker, depending on | ||||
| implementation. All implementations put the Job into the | ||||
| 'processing' state when marking does begin. | ||||
| o 'job-printing': The Output Device is marking media. This value is | ||||
| useful for Printers which spend a great deal of time processing | ||||
| (1) when no marking is happening and then want to show that | ||||
| marking is now happening or (2) when the Job is in the process of | ||||
| being canceled or aborted while the Job remains in the | ||||
| 'processing' state, but the marking has not yet stopped so that | ||||
| Impression or sheet counts are still increasing for the Job. | ||||
| o 'job-canceled-by-user': The Job was canceled by the owner of the | ||||
| Job using the Cancel-Job request, i.e., by a user whose | ||||
| authenticated identity is the same as the value of the originating | ||||
| user that created the Job, or by some other authorized End User, | ||||
| such as a member of the Job owner's security group. This value | ||||
| SHOULD be supported. | ||||
| o 'job-canceled-by-operator': The Job was canceled by the Operator | ||||
| using the Cancel-Job request, i.e., by a user who has been | ||||
| authenticated as having Operator privileges (whether local or | ||||
| remote). If the security policy is to allow anyone to cancel | ||||
| anyone's job, then this value can be used when the Job is canceled | ||||
| by other than the owner of the Job. For such a security policy, in | ||||
| effect, everyone is an Operator as far as canceling Jobs with IPP | ||||
| is concerned. This value SHOULD be supported if the | ||||
| implementation permits canceling by other than the owner of the | ||||
| Job. | ||||
| o 'job-canceled-at-device': The Job was canceled by an unidentified | ||||
| local user, i.e., a user at a console at the device. This value | ||||
| SHOULD be supported if the implementation supports canceling Jobs | ||||
| at the console. | ||||
| o 'aborted-by-system': The Job (1) is in the process of being | ||||
| aborted, (2) has been aborted by the system and placed in the | ||||
| 'aborted' state, or (3) has been aborted by the system and placed | ||||
| in the 'pending-held' state, so that a user or Operator can | ||||
| manually try the Job again. This value SHOULD be supported. | ||||
| o 'unsupported-compression': The Job was aborted by the system | ||||
| because the Printer determined while attempting to decompress the | ||||
| Document data's that the compression is actually not among those | ||||
| supported by the Printer. This value MUST be supported, since | ||||
| "compressions is a REQUIRED operation attribute. | ||||
| o 'compression-error': The Job was aborted by the system because the | ||||
| Printer encountered an error in the Document data while | ||||
| decompressing it. If the Printer posts this reason, the Document | ||||
| data has already passed any tests that would have led to the | ||||
| 'unsupported-compression' "job-state-reason". | ||||
| o 'unsupported-document-format': The Job was aborted by the system | ||||
| because the Document data's document-format is not among those | ||||
| supported by the Printer. If the Client specifies the document- | ||||
| format as 'application/octet-stream', the Printer MAY abort the | ||||
| Job and post this reason even though the format is a member of the | ||||
| "document-format-supported" Printer attribute, but not among the | ||||
| auto-sensed Document formats. This value MUST be supported, since | ||||
| "document-format" is a REQUIRED operation attribute. | ||||
| o 'document-format-error': The Job was aborted by the system because | ||||
| the Printer encountered an error in the Document data while | ||||
| processing it. If the Printer posts this reason, the Document | ||||
| data has already passed any tests that would have led to the | ||||
| 'unsupported-document-format' job-state-reason. | ||||
| o 'processing-to-stop-point': The requester has issued a Cancel-Job | ||||
| operation or the Printer has aborted the Job, but is still | ||||
| performing some actions on the Job until a specified stop point | ||||
| occurs or Job termination/cleanup is completed. | ||||
| o If the implementation requires some measurable time to cancel the | ||||
| Job in the 'processing' or 'processing-stopped' Job states, the | ||||
| Printer MUST use this value to indicate that the Printer is still | ||||
| performing some actions on the Job while the Job remains in the | ||||
| 'processing' or 'processing-stopped' state. After all the Job's | ||||
| Job Description attributes have stopped incrementing, the Printer | ||||
| moves the Job from the 'processing' state to the 'canceled' or | ||||
| 'aborted' Job states. | ||||
| o 'service-off-line': The Printer is offline and accepting no Jobs. | ||||
| All 'pending' Jobs are put into the 'pending-held' state. This | ||||
| situation could be true if the service's or document transform's | ||||
| input is impaired or broken. | ||||
| o 'job-completed-successfully': The Job completed successfully. | ||||
| This value SHOULD be supported. | ||||
| o 'job-completed-with-warnings': The Job completed with warnings. | ||||
| This value SHOULD be supported if the implementation detects | ||||
| warnings. | ||||
| o 'job-completed-with-errors': The Job completed with errors (and | ||||
| possibly warnings too). This value SHOULD be supported if the | ||||
| implementation detects errors. | ||||
| o 'job-restartable' - This Job is retained (see Section 5.3.7.2) and | ||||
| is currently able to be restarted using the Restart-Job (see | ||||
| Section 4.3.7) or Resubmit-Job [PWG5100.11] operation. If 'job- | ||||
| restartable' is a value of the Job's "job-state-reasons" | ||||
| attribute, then the Printer MUST accept a Restart-Job operation | ||||
| for that Job. This value SHOULD be supported if the Restart-Job | ||||
| operation is supported. | ||||
| o 'queued-in-device': The Job has been forwarded to a device or | ||||
| print system that is unable to send back status. The Printer sets | ||||
| the Job's "job-state " attribute to 'completed' and adds the | ||||
| 'queued-in-device' value to the Job's "job-state-reasons" | ||||
| attribute to indicate that the Printer has no additional | ||||
| information about the Job and never will have any better | ||||
| information. See Section 5.3.7.1. | ||||
| 5.3.9. job-state-message (text(MAX)) | ||||
| This RECOMMENDED attribute specifies information about the "job- | ||||
| state" and "job-state-reasons" attributes in human readable text. If | ||||
| the Printer supports this attribute, the Printer MUST be able to | ||||
| generate this message in any of the natural languages identified by | generate this message in any of the natural languages identified by | |||
| the Printer's "generated-natural-language-supported" attribute (see | the Printer's "generated-natural-language-supported" attribute (see | |||
| the "attributes-natural-language" operation attribute specified in | the "attributes-natural-language" operation attribute specified in | |||
| Section 3.1.4.1). | Section 4.1.4.1). | |||
| The value SHOULD NOT contain additional information not contained in | The value SHOULD NOT contain additional information not contained in | |||
| the values of the "job-state" and "job-states-reasons" attributes, | the values of the "job-state" and "job-states-reasons" attributes, | |||
| such as interpreter error information. Otherwise, application | such as interpreter error information. Otherwise, application | |||
| programs might attempt to parse the (localized text). For such | programs might attempt to parse the (localized) text. For such | |||
| additional information such as interpreter errors for application | additional information such as interpreter errors for application | |||
| program consumption or specific document access errors, new | program consumption or specific document access errors, new | |||
| attributes with keyword values, needs to be developed and registered. | attributes with keyword values need to be developed and registered. | |||
| 4.3.10 job-detailed-status-messages (1setOf text(MAX)) | 5.3.10. job-detailed-status-messages (1setOf text(MAX)) | |||
| This attribute specifies additional detailed and technical | This attribute specifies additional detailed and technical | |||
| information about the job. The Printer NEED NOT localize the | information about the Job. The Printer SHOULD localize the message | |||
| message(s), since they are intended for use by the system | unless such localization would obscure the technical meaning of the | |||
| administrator or other experienced technical persons. Localization | message. Clients MUST NOT attempt to parse the value of this | |||
| might obscure the technical meaning of such messages. Clients MUST | attribute. See "job-document-access-errors" (Section 5.3.11) for | |||
| NOT attempt to parse the value of this attribute. See "job- | additional errors that a program can process. | |||
| document-access-errors" (section 4.3.11) for additional errors that a | ||||
| program can process. | ||||
| 4.3.11 job-document-access-errors (1setOf text(MAX)) | 5.3.11. job-document-access-errors (1setOf text(MAX)) | |||
| This attribute provides additional information about each document | This attribute provides additional information about each document | |||
| access error for this job encountered by the Printer after it | access error for this Job encountered by the Printer after it | |||
| returned a response to the Print-URI or Send-URI operation and | returned a response to the Print-URI or Send-URI operation and | |||
| subsequently attempted to access document(s) supplied in the Print- | subsequently attempted to access document(s) supplied in the Print- | |||
| URI or Send-URI operation. For errors in the protocol that is | URI or Send-URI operation. For errors in the protocol that is | |||
| identified by the URI scheme in the "document-uri" operation | identified by the URI scheme in the "document-uri" operation | |||
| attribute, such as 'http:' or 'ftp:', the error code is returned in | attribute, such as 'http:' or 'ftp:', the error code is returned in | |||
| parentheses, followed by the URI. For example: | parentheses, followed by the URI. For example: | |||
| (404) http://ftp.pwg.org/pub/pwg/ipp/new_MOD/ipp-model-v11.pdf | (404) http://ftp.pwg.org/pub/pwg/ipp/new_MOD/ipp-model-v11-990510.pdf | |||
| Most Internet protocols use decimal error codes (unlike IPP), so the | Most Internet protocols use decimal error codes (unlike IPP), so the | |||
| ASCII error code representation is in decimal. | ASCII error code representation is in decimal. | |||
| 4.3.12 number-of-documents (integer(0:MAX)) | 5.3.12. number-of-documents (integer(0:MAX)) | |||
| This attribute indicates the number of documents in the job, i.e., | This attribute indicates the number of documents in the job, i.e., | |||
| the number of Send-Document, Send-URI, Print-Job, or Print-URI | the number of Send-Document, Send-URI, Print-Job, or Print-URI | |||
| operations that the Printer has accepted for this job, regardless of | operations that the Printer has accepted for this job, regardless of | |||
| whether the document data has reached the Printer object or not. | whether the Document data has reached the Printer. | |||
| Implementations supporting the OPTIONAL Create-Job/Send- | Implementations supporting the RECOMMENDED Create-Job/Send-Document/ | |||
| Document/Send-URI operations SHOULD support this attribute so that | Send-URI operations SHOULD support this attribute so that Clients can | |||
| clients can query the number of documents in each job. | query the number of documents in each Job. | |||
| 4.3.13 output-device-assigned (name(127)) | 5.3.13. output-device-assigned (name(127)) | |||
| This attribute identifies the output device to which the Printer | This attribute identifies the Output Device to which the Printer has | |||
| object has assigned this job. If an output device implements an | assigned this Job. If an Output Device implements an embedded | |||
| embedded Printer object, the Printer object NEED NOT set this | Printer, the Printer SHOULD set this attribute. If a print server | |||
| attribute. If a print server implements a Printer object, the value | implements a Printer, the value MAY be empty (zero-length string) or | |||
| MAY be empty (zero- length string) or not returned until the Printer | not returned until the Printer assigns an Output Device to the Job. | |||
| object assigns an output device to the job. This attribute is | This attribute is particularly useful when a single Printer supports | |||
| particularly useful when a single Printer object supports multiple | multiple devices (so called "fan-out" - see Section 3.1). | |||
| devices (so called "fan-out" - see section 2.1). | ||||
| 4.3.14 Event Time Job Description Attributes | 5.3.14. Event Time Job Status Attributes | |||
| This section defines the Job Description attributes that indicate the | This section defines the Job Status attributes that indicate the time | |||
| time at which certain events occur for a job. If the job event has | at which certain events occur for a Job. If the Job event has not yet | |||
| not yet occurred, then the IPP object MUST return the 'no-value' | occurred, then the Printer MUST return the 'no-value' out-of-band | |||
| out-of-band value (see the beginning of Section 4.1). The "time-at- | value (see the beginning of Section 5.1). The "time-at-xxx | |||
| xxx(integer)" attributes represent time as an 'integer' representing | (integer)" attributes represent time as an 'integer' representing the | |||
| the number of seconds since the device was powered up (informally | number of seconds since the device was powered up (informally called | |||
| called "time ticks"). The "date-time-at-xxx(dateTime)" attributes | "time ticks"). The "date-time-at-xxx (dateTime)" attributes | |||
| represent time as 'dateTime' representing date and time (including an | represent time as 'dateTime' representing date and time (including an | |||
| offset from UTC). | offset from UTC). | |||
| In order to populate these attributes, the Printer object copies the | In order to populate these attributes, the Printer copies the | |||
| value(s) of the following Printer Description attributes at the time | value(s) of the following Printer Status attributes at the time the | |||
| the event occurs: | event occurs: | |||
| 1. the value in the Printer's "printer-up-time" attribute for the | 1. the value in the Printer's "printer-up-time" attribute for the | |||
| "time-at-xxx(integer)" attributes | "time-at-xxx (integer)" attributes | |||
| 2. the value in the Printer's "printer-current-time" attribute for | 2. the value in the Printer's "printer-current-time" attribute for | |||
| the "date-time-at-xxx(dateTime)" attributes. | the "date-time-at-xxx (dateTime)" attributes. | |||
| If the Printer resets its "printer-up-time" attribute to 1 on power- | If the Printer resets its "printer-up-time" attribute to 1 on power- | |||
| up (see section 4.4.29) and has persistent jobs, then it MUST change | up (see Section 5.4.29) and has persistent jobs, then it MUST change | |||
| all of jobs' "time-at-xxx(integer)" (time tick) job attributes whose | all of Jobs' "time-at-xxx (integer)" (time tick) Job attributes whose | |||
| events have occurred either to: | events have occurred either to: | |||
| 1. 0 to indicate that the event happened before the most recent | 1. 0 to indicate that the event happened before the most recent | |||
| power up OR | power up OR | |||
| 2. the negative of the number of seconds before the most recent | 2. the negative of the number of seconds before the most recent | |||
| power-up that the event took place, though the negative number | power-up that the event took place, if the Printer knows the | |||
| NEED NOT reflect the exact number of seconds. | exact number of seconds. | |||
| If a client queries a "time-at-xxx(integer)" time tick Job attribute | If a Client queries a "time-at-xxx (integer)" time tick Job attribute | |||
| and finds the value to be 0 or negative, the client MUST assume that | and finds the value to be 0 or negative, the Client MUST assume that | |||
| the event occurred in some life other than the Printer's current | the event occurred in some life other than the Printer's current | |||
| life. | life. | |||
| Note: A Printer does not change the values of any "date-time-at- | Note: A Printer does not change the values of any "date-time-at-xxx | |||
| xxx(dateTime)" job attributes on power-up. | (dateTime)" Job attributes on power-up. | |||
| 4.3.14.1 time-at-creation (integer(MIN:MAX)) | 5.3.14.1. time-at-creation (integer(MIN:MAX)) | |||
| This REQUIRED attribute indicates the time at which the Job object | This REQUIRED attribute indicates the time at which the Job was | |||
| was created. | created. | |||
| 4.3.14.2 time-at-processing (integer(MIN:MAX)) | 5.3.14.2. time-at-processing (integer(MIN:MAX)) | |||
| This REQUIRED attribute indicates the time at which the Job object | This REQUIRED attribute indicates the time at which the Job first | |||
| first began processing after the create operation or the most recent | began processing after the Job Creation request or the most recent | |||
| Restart-Job operation. The out-of-band 'no-value' value is returned | Restart-Job operation. The out-of-band 'no-value' value is returned | |||
| if the job has not yet been in the 'processing' state (see the | if the Job has not yet been in the 'processing' state (see the | |||
| beginning of Section 4.1). | beginning of Section 5.1). | |||
| 4.3.14.3 time-at-completed (integer(MIN:MAX)) | 5.3.14.3. time-at-completed (integer(MIN:MAX)) | |||
| This REQUIRED attribute indicates the time at which the Job object | This REQUIRED attribute indicates the time at which the Job entered a | |||
| completed (or was canceled or aborted). The out-of-band 'no-value' | Terminating State ('completed', 'canceled', or 'aborted'). The out- | |||
| value is returned if the job has not yet completed, been canceled, or | of-band 'no-value' value is returned if the Job has not yet | |||
| aborted (see the beginning of Section 4.1). | completed, been canceled, or aborted (see the beginning of | |||
| Section 5.1). | ||||
| 4.3.14.4 job-printer-up-time (integer(1:MAX)) | 5.3.14.4. job-printer-up-time (integer(1:MAX)) | |||
| This REQUIRED Job Description attribute indicates the amount of time | This REQUIRED Job Status attribute indicates the amount of time (in | |||
| (in seconds) that the Printer implementation has been up and running. | seconds) that the Printer implementation has been up and running. | |||
| This attribute is an alias for the "printer-up-time" Printer | This attribute is an alias for the "printer-up-time" Printer Status | |||
| Description attribute (see Section 4.4.29). | attribute (see Section 5.4.29). | |||
| A client MAY request this attribute in a Get-Job-Attributes or Get- | A Client MAY request this attribute in a Get-Job-Attributes or Get- | |||
| Jobs request and use the value returned in combination with other | Jobs request and use the value returned in combination with other | |||
| requested Event Time Job Description Attributes in order to display | requested Event Time Job Status Attributes in order to display time | |||
| time attributes to a user. The difference between this attribute and | attributes to a user. The difference between this attribute and the | |||
| the 'integer' value of a "time-at-xxx" attribute is the number of | 'integer' value of a "time-at-xxx" attribute is the number of seconds | |||
| seconds ago that the "time-at-xxx" event occurred. A client can | ago that the "time-at-xxx" event occurred. A Client can compute the | |||
| compute the wall-clock time at which the "time-at-xxx" event occurred | wall-clock time at which the "time-at-xxx" event occurred by | |||
| by subtracting this difference from the client's wall-clock time. | subtracting this difference from the client's wall-clock time. | |||
| 4.3.14.5 date-time-at-creation (dateTime) | 5.3.14.5. date-time-at-creation (dateTime) | |||
| This attribute indicates the date and time at which the Job object | This RECOMMENDED attribute indicates the date and time at which the | |||
| was created. | Job was created. | |||
| 4.3.14.6 date-time-at-processing (dateTime) | 5.3.14.6. date-time-at-processing (dateTime) | |||
| This attribute indicates the date and time at which the Job object | This RECOMMENDED attribute indicates the date and time at which the | |||
| first began processing after the create operation or the most recent | Job first began processing after the Job Creation request or the most | |||
| Restart-Job operation. | recent Restart-Job operation. | |||
| 4.3.14.7 date-time-at-completed (dateTime) | 5.3.14.7. date-time-at-completed (dateTime) | |||
| This attribute indicates the date and time at which the Job object | This RECOMMENDED attribute indicates the date and time at which the | |||
| completed (or was canceled or aborted). | Job entered a Terminating State ('completed', 'canceled', or | |||
| 'aborted'). | ||||
| 4.3.15 number-of-intervening-jobs (integer(0:MAX)) | 5.3.15. number-of-intervening-jobs (integer(0:MAX)) | |||
| This attribute indicates the number of jobs that are "ahead" of this | This attribute indicates the number of Jobs that are "ahead" of this | |||
| job in the relative chronological order of expected time to complete | Job in the relative chronological order of expected time to complete | |||
| (i.e., the current scheduled order). For efficiency, it is only | (i.e., the current scheduled order). For efficiency, it is only | |||
| necessary to calculate this value when an operation is performed that | necessary to calculate this value when an operation is performed that | |||
| requests this attribute. | requests this attribute. | |||
| 4.3.16 job-message-from-operator (text(127)) | 5.3.16. job-message-from-operator (text(127)) | |||
| This attribute provides a message from an operator, system | This attribute provides a message from an Operator, Adminstrator, or | |||
| administrator or "intelligent" process to indicate to the end user | "intelligent" process to indicate to the End User the reasons for | |||
| the reasons for modification or other management action taken on a | modification or other management action taken on a Job. | |||
| job. | ||||
| 4.3.17 Job Size Attributes | 5.3.17. Job Size Attributes | |||
| This sub-section defines job attributes that describe the size of the | This sub-section defines Job attributes that describe the size of the | |||
| job. These attributes are not intended to be counters; they are | Job. These attributes are not intended to be counters; they are | |||
| intended to be useful routing and scheduling information if known. | intended to be useful routing and scheduling information if known. | |||
| For these attributes, the Printer object may try to compute the value | For these attributes, the Printer can try to compute the value if it | |||
| if it is not supplied in the create request. Even if the client does | is not supplied in the Job Creation request. Even if the Client does | |||
| supply a value for these three attributes in the create request, the | supply a value for these three attributes in the Job Creation | |||
| Printer object MAY choose to change the value if the Printer object | request, the Printer MAY choose to change the value if the Printer is | |||
| is able to compute a value which is more accurate than the client | able to compute a value which is more accurate than the Client | |||
| supplied value. The Printer object may be able to determine the | supplied value. The Printer can determine the correct value for | |||
| correct value for these attributes either right at job submission | these attributes either right at Job submission time or at any later | |||
| time or at any later point in time. | point in time. | |||
| 4.3.17.1 job-k-octets (integer(0:MAX)) | 5.3.17.1. job-k-octets (integer(0:MAX)) | |||
| This attribute specifies the total size of the document(s) in K | This attribute specifies the total size of the Document(s) in K | |||
| octets, i.e., in units of 1024 octets requested to be processed in | octets, i.e., in units of 1024 octets requested to be processed in | |||
| the job. The value MUST be rounded up, so that a job between 1 and | the Job. The value MUST be rounded up, so that a Job between 1 and | |||
| 1024 octets MUST be indicated as being 1, 1025 to 2048 MUST be 2, | 1024 octets MUST be indicated as being 1, 1025 to 2048 MUST be 2, | |||
| etc. | etc. | |||
| This value MUST NOT include the multiplicative factors contributed by | This value MUST NOT include the multiplicative factors contributed by | |||
| the number of copies specified by the "copies" attribute, independent | the number of copies specified by the "copies" attribute, independent | |||
| of whether the device can process multiple copies without making | of whether the device can process multiple copies without making | |||
| multiple passes over the job or document data and independent of | multiple passes over the Job or Document data and independent of | |||
| whether the output is collated or not. Thus the value is independent | whether the output is collated or not. Thus the value is independent | |||
| of the implementation and indicates the size of the document(s) | of the implementation and indicates the size of the document(s) | |||
| measured in K octets independent of the number of copies. | measured in K octets independent of the number of copies. | |||
| This value MUST also not include the multiplicative factor due to a | This value also MUST NOT include the multiplicative factor due to a | |||
| copies instruction embedded in the document data. If the document | copies instruction embedded in the Document data. If the Document | |||
| data actually includes replications of the document data, this value | data actually includes replications of the Document data, this value | |||
| will include such replication. In other words, this value is always | will include such replication. In other words, this value is always | |||
| the size of the source document data, rather than a measure of the | the size of the source Document data, rather than a measure of the | |||
| hardcopy output to be produced. | hardcopy output to be produced. | |||
| 4.3.17.2 job-impressions (integer(0:MAX)) | 5.3.17.2. job-impressions (integer(0:MAX)) | |||
| This attribute specifies the total size in number of impressions of | This RECOMMENDED attribute specifies the total size in number of | |||
| the document(s) being submitted (see the definition of impression in | Impressions of the Document(s) being submitted (see the definition of | |||
| section 12.2.5). | Impression in Section 2.3.4). | |||
| As with "job-k-octets", this value MUST NOT include the | As with "job-k-octets", this value MUST NOT include the | |||
| multiplicative factors contributed by the number of copies specified | multiplicative factors contributed by the number of copies specified | |||
| by the "copies" attribute, independent of whether the device can | by the "copies" attribute, independent of whether the device can | |||
| process multiple copies without making multiple passes over the job | process multiple copies without making multiple passes over the Job | |||
| or document data and independent of whether the output is collated or | or Document data and independent of whether the output is collated or | |||
| not. Thus the value is independent of the implementation and | not. Thus the value is independent of the implementation and | |||
| reflects the size of the document(s) measured in impressions | reflects the size of the document(s) measured in Impressions | |||
| independent of the number of copies. | independent of the number of copies. | |||
| As with "job-k-octets", this value MUST also not include the | As with "job-k-octets", this value also MUST NOT include the | |||
| multiplicative factor due to a copies instruction embedded in the | multiplicative factor due to a copies instruction embedded in the | |||
| document data. If the document data actually includes replications | Document data. If the Document data actually includes replications | |||
| of the document data, this value will include such replication. In | of the Document data, this value will include such replication. In | |||
| other words, this value is always the number of impressions in the | other words, this value is always the number of Impressions in the | |||
| source document data, rather than a measure of the number of | source Document data, rather than a measure of the number of | |||
| impressions to be produced by the job. | Impressions to be produced by the Job. | |||
| 4.3.17.3 job-media-sheets (integer(0:MAX)) | 5.3.17.3. job-media-sheets (integer(0:MAX)) | |||
| This attribute specifies the total number of media sheets to be | This RECOMMENDED attribute specifies the total number of Media Sheets | |||
| produced for this job. | to be produced for this Job. | |||
| Unlike the "job-k-octets" and the "job-impressions" attributes, this | Unlike the "job-k-octets" and the "job-impressions" attributes, this | |||
| value MUST include the multiplicative factors contributed by the | value MUST include the multiplicative factors contributed by the | |||
| number of copies specified by the "copies" attribute and a 'number of | number of copies specified by the "copies" attribute and a 'number of | |||
| copies' instruction embedded in the document data, if any. This | copies' instruction embedded in the Document data, if any. This | |||
| difference allows the system administrator to control the lower and | difference allows the Adminstrator to control the lower and upper | |||
| upper bounds of both (1) the size of the document(s) with "job-k- | bounds of both (1) the size of the document(s) with "job-k-octets- | |||
| octets-supported" and "job-impressions-supported" and (2) the size of | supported" and "job-impressions-supported" and (2) the size of the | |||
| the job with "job-media-sheets-supported". | Job with "job-media-sheets-supported". | |||
| 4.3.18 Job Progress Attributes | 5.3.18. Job Progress Attributes | |||
| This sub-section defines job attributes that describe the progress of | This sub-section defines Job attributes that describe the progress of | |||
| the job. These attributes are intended to be counters. That is, the | the Job. These attributes are intended to be counters. That is, the | |||
| value for a job that has not started processing MUST be 0. When the | values for a Job that has not started processing MUST be 0. When the | |||
| job's "job-state" is 'processing' or 'processing-stopped', this value | Job's "job-state" is 'processing' or 'processing-stopped', this value | |||
| is intended to contain the amount of the job that has been processed | is intended to contain the amount of the Job that has been processed | |||
| to the time at which the attributes are requested. When the job | to the time at which the attributes are requested. When the Job | |||
| enters the 'completed', 'canceled', or 'aborted' states, these values | enters the 'completed', 'canceled', or 'aborted' states, these values | |||
| are the final values for the job. | are the final values for the Job. | |||
| 4.3.18.1 job-k-octets-processed (integer(0:MAX)) | 5.3.18.1. job-k-octets-processed (integer(0:MAX)) | |||
| This attribute specifies the total number of octets processed in K | This attribute specifies the total number of octets processed in K | |||
| octets, i.e., in units of 1024 octets so far. The value MUST be | octets, i.e., in units of 1024 octets so far. The value MUST be | |||
| rounded up, so that a job between 1 and 1024 octets inclusive MUST be | rounded up, so that a Job between 1 and 1024 octets inclusive MUST be | |||
| indicated as being 1, 1025 to 2048 inclusive MUST be 2, etc. | indicated as being 1, 1025 to 2048 inclusive MUST be 2, etc. | |||
| For implementations where multiple copies are produced by the | For implementations where multiple copies are produced by the | |||
| interpreter with only a single pass over the data, the final value | interpreter with only a single pass over the data, the final value | |||
| MUST be equal to the value of the "job-k-octets" attribute. For | MUST be equal to the value of the "job-k-octets" attribute. For | |||
| implementations where multiple copies are produced by the interpreter | implementations where multiple copies are produced by the interpreter | |||
| by processing the data for each copy, the final value MUST be a | by processing the data for each copy, the final value MUST be a | |||
| multiple of the value of the "job-k-octets" attribute. | multiple of the value of the "job-k-octets" attribute. | |||
| 4.3.18.2 job-impressions-completed (integer(0:MAX)) | 5.3.18.2. job-impressions-completed (integer(0:MAX)) | |||
| This job attribute specifies the number of impressions completed for | This RECOMMENDED attribute specifies the number of Impressions | |||
| the job so far. For printing devices, the impressions completed | completed for the Job so far. For printing devices, the Impressions | |||
| includes interpreting, marking, and stacking the output. | completed includes interpreting, marking, and stacking the output. | |||
| 4.3.18.3 job-media-sheets-completed (integer(0:MAX)) | 5.3.18.3. job-media-sheets-completed (integer(0:MAX)) | |||
| This job attribute specifies the media-sheets completed marking and | This RECOMMENDED Job attribute specifies the Media Sheets completed | |||
| stacking for the entire job so far whether those sheets have been | marking and stacking for the entire Job so far whether those sheets | |||
| processed on one side or on both. | have been processed on one side or on both. | |||
| 4.3.19 attributes-charset (charset) | 5.3.19. attributes-charset (charset) | |||
| This REQUIRED attribute is populated using the value in the client | This REQUIRED attribute is populated using the value in the Client | |||
| supplied "attributes-charset" attribute in the create request. It | supplied "attributes-charset" attribute in the Job Creation request. | |||
| identifies the charset (coded character set and encoding method) used | It identifies the charset (coded character set and encoding method) | |||
| by any Job attributes with attribute syntax 'text' and 'name' that | used by any Job attributes with attribute syntax 'text' and 'name' | |||
| were supplied by the client in the create request. See Section 3.1.4 | that were supplied by the Client in the Job Creation request. See | |||
| for a complete description of the "attributes-charset" operation | Section 4.1.4 for a complete description of the "attributes-charset" | |||
| attribute. | operation attribute. | |||
| This attribute does not indicate the charset in which the 'text' and | This attribute does not indicate the charset in which the 'text' and | |||
| 'name' values are stored internally in the Job object. The internal | 'name' values are stored internally in the Job. The internal charset | |||
| charset is implementation-defined. The IPP object MUST convert from | is implementation-defined. The Printer MUST convert from whatever | |||
| whatever the internal charset is to that being requested in an | the internal charset is to that being requested in an operation as | |||
| operation as specified in Section 3.1.4. | specified in Section 4.1.4. | |||
| 4.3.20 attributes-natural-language (naturalLanguage) | 5.3.20. attributes-natural-language (naturalLanguage) | |||
| This REQUIRED attribute is populated using the value in the client | This REQUIRED attribute is populated using the value in the Client | |||
| supplied "attributes-natural-language" attribute in the create | supplied "attributes-natural-language" attribute in the Job Creation | |||
| request. It identifies the natural language used for any Job | request. It identifies the natural language used for any Job | |||
| attributes with attribute syntax 'text' and 'name' that were supplied | attributes with attribute syntax 'text' and 'name' that were supplied | |||
| by the client in the create request. See Section 3.1.4 for a | by the Client in the Job Creation request. See Section 4.1.4 for a | |||
| complete description of the "attributes-natural-language" operation | complete description of the "attributes-natural-language" operation | |||
| attribute. See Sections 4.1.1.2 and 4.1.2.2 for how a Natural | attribute. See Sections 5.1.2.2 and 5.1.3.2 for how a Natural | |||
| Language Override may be supplied explicitly for each 'text' and | Language Override can be supplied explicitly for each 'text' and | |||
| 'name' attribute value that differs from the value identified by the | 'name' attribute value that differs from the value identified by the | |||
| "attributes-natural-language" attribute. | "attributes-natural-language" attribute. | |||
| 4.4 Printer Description Attributes | 5.4. Printer Description and Status Attributes | |||
| These attributes form the attribute group called "printer- | These attributes form the attribute group called "printer- | |||
| description". The following table summarizes these attributes, their | description". Tables 16 and 17 summarize these attributes, their | |||
| syntax, and whether or not they are REQUIRED for a Printer object to | syntax, and whether they are REQUIRED for a Printer to support. If | |||
| support. If they are not indicated as REQUIRED, they are OPTIONAL. | they are not indicated as REQUIRED, they are OPTIONAL. The maximum | |||
| The maximum size in octets for 'text' and 'name' attributes is | size in octets for 'text' and 'name' attributes is indicated in | |||
| indicated in parenthesizes. | parenthesizes. | |||
| Note: How these attributes are set by an Administrator is outside the | Note: How these attributes are set by an Administrator is outside the | |||
| scope of this IPP/1.1 document. | scope of this document. | |||
| +----------------------------+---------------------------+-----------+ | +------------------------------------+----------------+-------------+ | |||
| | Attribute | Syntax | REQUIRED? | | | Attribute | Syntax | REQUIRED? | | |||
| +----------------------------+---------------------------+-----------+ | +------------------------------------+----------------+-------------+ | |||
| | printer-uri-supported | 1setOf uri | REQUIRED | | | charset-configured | charset | REQUIRED | | |||
| +----------------------------+---------------------------+-----------+ | +------------------------------------+----------------+-------------+ | |||
| | uri-security-supported | 1setOf type2 keyword | REQUIRED | | | charset-supported | 1setOf charset | REQUIRED | | |||
| +----------------------------+---------------------------+-----------+ | +------------------------------------+----------------+-------------+ | |||
| | uri-authentication- | 1setOf type2 keyword | REQUIRED | | | color-supported | boolean | RECOMMENDED | | |||
| | supported | | | | +------------------------------------+----------------+-------------+ | |||
| +----------------------------+---------------------------+-----------+ | | compression-supported | 1setOf type2 | REQUIRED | | |||
| | printer-name | name (127) | REQUIRED | | | | keyword | | | |||
| +----------------------------+---------------------------+-----------+ | +------------------------------------+----------------+-------------+ | |||
| | printer-location | text (127) | | | | document-format-default | mimeMediaType | REQUIRED | | |||
| +----------------------------+---------------------------+-----------+ | +------------------------------------+----------------+-------------+ | |||
| | printer-info | text (127) | | | | document-format-supported | 1setOf | REQUIRED | | |||
| +----------------------------+---------------------------+-----------+ | | | mimeMediaType | | | |||
| | printer-more-info | uri | | | +------------------------------------+----------------+-------------+ | |||
| +----------------------------+---------------------------+-----------+ | | generated-natural-language- | 1setOf natural | REQUIRED | | |||
| | printer-driver-installer | uri | | | | supported | Language | | | |||
| +----------------------------+---------------------------+-----------+ | +------------------------------------+----------------+-------------+ | |||
| | printer-make-and-model | text (127) | | | | ipp-versions-supported | 1setOf type2 | REQUIRED | | |||
| +----------------------------+---------------------------+-----------+ | | | keyword | | | |||
| | printer-more-info- | uri | | | +------------------------------------+----------------+-------------+ | |||
| | manufacturer | | | | | job-impressions-supported | rangeOfInteger | RECOMMENDED | | |||
| +----------------------------+---------------------------+-----------+ | | | (0:MAX) | | | |||
| | printer-state | type1 enum | REQUIRED | | +------------------------------------+----------------+-------------+ | |||
| +----------------------------+---------------------------+-----------+ | | job-k-octets-supported | rangeOfInteger | | | |||
| | printer-state-reasons | 1setOf type2 keyword | REQUIRED | | | | (0:MAX) | | | |||
| +----------------------------+---------------------------+-----------+ | +------------------------------------+----------------+-------------+ | |||
| | printer-state-message | text (MAX) | | | | job-media-sheets-supported | rangeOfInteger | | | |||
| +----------------------------+---------------------------+-----------+ | | | (0:MAX) | | | |||
| | ipp-versions-supported | 1setOf type2 keyword | REQUIRED | | +------------------------------------+----------------+-------------+ | |||
| +----------------------------+---------------------------+-----------+ | | multiple-document-jobs-supported | boolean | RECOMMENDED | | |||
| | operations-supported | 1setOf type2 enum | REQUIRED | | +------------------------------------+----------------+-------------+ | |||
| +----------------------------+---------------------------+-----------+ | | multiple-operation-time-out | integer | RECOMMENDED | | |||
| | multiple-document-jobs- | boolean | | | | | (1:MAX) | | | |||
| | supported | | | | +------------------------------------+----------------+-------------+ | |||
| +----------------------------+---------------------------+-----------+ | | natural-language-configured | naturalLanguag | REQUIRED | | |||
| | charset-configured | charset | REQUIRED | | | | e | | | |||
| +----------------------------+---------------------------+-----------+ | +------------------------------------+----------------+-------------+ | |||
| | charset-supported | 1setOf charset | REQUIRED | | | operations-supported | 1setOf type2 | REQUIRED | | |||
| +----------------------------+---------------------------+-----------+ | | | enum | | | |||
| | natural-language-configured| naturalLanguage | REQUIRED | | +------------------------------------+----------------+-------------+ | |||
| +----------------------------+---------------------------+-----------+ | | pdl-override-supported | type2 keyword | REQUIRED | | |||
| | generated-natural-language-| 1setOf naturalLanguage | REQUIRED | | +------------------------------------+----------------+-------------+ | |||
| | supported | | | | | printer-driver-installer | uri | | | |||
| +----------------------------+---------------------------+-----------+ | +------------------------------------+----------------+-------------+ | |||
| | document-format-default | mimeMediaType | REQUIRED | | | printer-info | text (127) | RECOMMENDED | | |||
| +----------------------------+---------------------------+-----------+ | +------------------------------------+----------------+-------------+ | |||
| | document-format-supported | 1setOf mimeMediaType | REQUIRED | | | printer-location | text (127) | RECOMMENDED | | |||
| +----------------------------+---------------------------+-----------+ | +------------------------------------+----------------+-------------+ | |||
| | printer-is-accepting-jobs | boolean | REQUIRED | | | printer-make-and-model | text (127) | RECOMMENDED | | |||
| +----------------------------+---------------------------+-----------+ | +------------------------------------+----------------+-------------+ | |||
| | queued-job-count | integer (0:MAX) | REQUIRED | | | printer-message-from-operator | text (127) | | | |||
| +----------------------------+---------------------------+-----------+ | +------------------------------------+----------------+-------------+ | |||
| | printer-message-from- | text (127) | | | | printer-more-info-manufacturer | uri | | | |||
| | operator | | | | +------------------------------------+----------------+-------------+ | |||
| +----------------------------+---------------------------+-----------+ | | printer-name | name (127) | REQUIRED | | |||
| | color-supported | boolean | | | +------------------------------------+----------------+-------------+ | |||
| +----------------------------+---------------------------+-----------+ | | reference-uri-schemes-supported | 1setOf | | | |||
| | reference-uri-schemes- | 1setOf uriScheme | | | | | uriScheme | | | |||
| | supported | | | | +------------------------------------+----------------+-------------+ | |||
| +----------------------------+---------------------------+-----------+ | ||||
| | pdl-override-supported | type2 keyword | REQUIRED | | ||||
| +----------------------------+---------------------------+-----------+ | ||||
| | printer-up-time | integer (1:MAX) | REQUIRED | | ||||
| +----------------------------+---------------------------+-----------+ | ||||
| | printer-current-time | dateTime | | | ||||
| +----------------------------+---------------------------+-----------+ | ||||
| | multiple-operation-time-out| integer (1:MAX) | | | ||||
| +----------------------------+---------------------------+-----------+ | ||||
| | compression-supported | 1setOf type3 keyword | REQUIRED | | ||||
| +----------------------------+---------------------------+-----------+ | ||||
| | job-k-octets-supported | rangeOfInteger (0:MAX) | | | ||||
| +----------------------------+---------------------------+-----------+ | ||||
| | job-impressions-supported | rangeOfInteger (0:MAX) | | | ||||
| +----------------------------+---------------------------+-----------+ | ||||
| | job-media-sheets-supported | rangeOfInteger (0:MAX) | | | ||||
| +----------------------------+---------------------------+-----------+ | ||||
| | pages-per-minute | integer(0:MAX) | | | ||||
| +----------------------------+---------------------------+-----------+ | ||||
| | pages-per-minute-color | integer(0:MAX) | | | ||||
| +----------------------------+---------------------------+-----------+ | ||||
| 4.4.1 printer-uri-supported (1setOf uri) | Table 16: Printer Description Attributes (READ-WRITE) | |||
| This REQUIRED Printer attribute contains at least one URI for the | +------------------------------+----------------------+-------------+ | |||
| Printer object. It OPTIONALLY contains more than one URI for the | | Attribute | Syntax | REQUIRED? | | |||
| Printer object. An administrator determines a Printer object's | +------------------------------+----------------------+-------------+ | |||
| URI(s) and configures this attribute to contain those URIs by some | | pages-per-minute-color | integer(0:MAX) | RECOMMENDED | | |||
| means outside the scope of this IPP/1.1 document. The precise format | +------------------------------+----------------------+-------------+ | |||
| of this URI is implementation dependent and depends on the protocol. | | pages-per-minute | integer(0:MAX) | RECOMMENDED | | |||
| See the next two sections for a description of the "uri-security- | +------------------------------+----------------------+-------------+ | |||
| supported" and "uri-authentication-supported" attributes, both of | | printer-current-time | dateTime | RECOMMENDED | | |||
| which are the REQUIRED companion attributes to this "printer-uri- | +------------------------------+----------------------+-------------+ | |||
| supported" attribute. See section 2.4 on Printer object identity and | | printer-is-accepting-Jobs | boolean | REQUIRED | | |||
| section 8.2 on security and URIs for more information. | +------------------------------+----------------------+-------------+ | |||
| | printer-more-info | uri | RECOMMENDED | | ||||
| +------------------------------+----------------------+-------------+ | ||||
| | printer-state | type1 enum | REQUIRED | | ||||
| +------------------------------+----------------------+-------------+ | ||||
| | printer-state-message | text (MAX) | RECOMMENDED | | ||||
| +------------------------------+----------------------+-------------+ | ||||
| | printer-state-reasons | 1setOf type2 keyword | REQUIRED | | ||||
| +------------------------------+----------------------+-------------+ | ||||
| | printer-up-time | integer (1:MAX) | REQUIRED | | ||||
| +------------------------------+----------------------+-------------+ | ||||
| | printer-uri-supported | 1setOf uri | REQUIRED | | ||||
| +------------------------------+----------------------+-------------+ | ||||
| | queued-job-count | integer (0:MAX) | REQUIRED | | ||||
| +------------------------------+----------------------+-------------+ | ||||
| | uri-authentication-supported | 1setOf type2 keyword | REQUIRED | | ||||
| +------------------------------+----------------------+-------------+ | ||||
| | uri-security-supported | 1setOf type2 keyword | REQUIRED | | ||||
| +------------------------------+----------------------+-------------+ | ||||
| 4.4.2 uri-authentication-supported (1setOf type2 keyword) | Table 17: Printer Status Attributes (READ-ONLY) | |||
| 5.4.1. printer-uri-supported (1setOf uri) | ||||
| This REQUIRED Printer attribute contains one or more URI(s) for the | ||||
| Printer. It MAY contains more than one URI for the Printer. An | ||||
| Adminstrator determines a Printer's URI(s) and configures this | ||||
| attribute to contain those URIs by some means outside the scope of | ||||
| this IPP/1.1 document. The precise format of this URI is | ||||
| implementation dependent and depends on the protocol. See the next | ||||
| two sections for a description of the "uri-security-supported" and | ||||
| "uri-authentication-supported" attributes, both of which are the | ||||
| REQUIRED companion attributes to this "printer-uri-supported" | ||||
| attribute. See Section 3.4 on Printer identity and Section 9.2 on | ||||
| security and URIs for more information. | ||||
| 5.4.2. uri-authentication-supported (1setOf type2 keyword) | ||||
| This REQUIRED Printer attribute MUST have the same cardinality | This REQUIRED Printer attribute MUST have the same cardinality | |||
| (contain the same number of values) as the "printer-uri-supported" | (contain the same number of values) as the "printer-uri-supported" | |||
| attribute. This attribute identifies the Client Authentication | attribute. This attribute identifies the Client Authentication | |||
| mechanism associated with each URI listed in the "printer-uri- | mechanism associated with each URI listed in the "printer-uri- | |||
| supported" attribute. The Printer object uses the specified mechanism | supported" attribute. The Printer uses the specified mechanism to | |||
| to identify the authenticated user (see section 8.3). The "i th" | identify the authenticated user (see Section 9.3). The "i th" value | |||
| value in "uri-authentication-supported" corresponds to the "i th" | in "uri-authentication-supported" corresponds to the "i th" value in | |||
| value in "printer-uri-supported" and it describes the authentication | "printer-uri-supported" and it describes the authentication | |||
| mechanisms used by the Printer when accessed via that URI. See | mechanisms used by the Printer when accessed via that URI. See | |||
| [RFC2910] for more details on Client Authentication. | [RFC2910bis] for more details on Client Authentication. | |||
| The following standard keyword values are defined: | The following standard keyword values are defined: | |||
| 'none': There is no authentication mechanism associated with the | o 'none': There is no authentication mechanism associated with the | |||
| URI. The Printer object assumes that the authenticated user is | URI. The Printer assumes that the authenticated user is | |||
| "anonymous". | "anonymous". | |||
| 'requesting-user-name': When a client performs an operation whose | ||||
| target is the associated URI, the Printer object assumes that | ||||
| the authenticated user is specified by the "requesting-user- | ||||
| name" Operation attribute (see section 8.3). If the | ||||
| "requesting-user-name" attribute is absent in a request, the | ||||
| Printer object assumes that the authenticated user is | ||||
| "anonymous". | ||||
| 'basic': When a client performs an operation whose target is the | ||||
| associated URI, the Printer object challenges the client with | ||||
| HTTP basic authentication [RFC2617]. The Printer object assumes | ||||
| that the authenticated user is the name received via the basic | ||||
| authentication mechanism. | ||||
| 'digest': When a client performs an operation whose target is the | ||||
| associated URI, the Printer object challenges the client with | ||||
| HTTP digest authentication [RFC2617]. The Printer object | ||||
| assumes that the authenticated user is the name received via | ||||
| the digest authentication mechanism. | ||||
| 'certificate': When a client performs an operation whose target is | ||||
| the associated URI, the Printer object expects the client to | ||||
| provide a certificate. The Printer object assumes that the | ||||
| authenticated user is the textual name contained within the | ||||
| certificate. | ||||
| 4.4.3 uri-security-supported (1setOf type2 keyword) | o 'requesting-user-name': When a Client performs an operation whose | |||
| target is the associated URI, the Printer assumes that the | ||||
| authenticated user is specified by the "requesting-user-name" | ||||
| operation attribute (see Section 9.3). If the "requesting-user- | ||||
| name" attribute is absent in a request, the Printer assumes that | ||||
| the authenticated user is 'anonymous'. | ||||
| o 'basic': When a Client performs an operation whose target is the | ||||
| associated URI, the Printer challenges the Client with HTTP Basic | ||||
| authentication [RFC7617]. The Printer assumes that the | ||||
| authenticated user is the name received via the Basic | ||||
| authentication mechanism. | ||||
| o 'digest': When a Client performs an operation whose target is the | ||||
| associated URI, the Printer challenges the Client with HTTP Digest | ||||
| authentication [RFC7616]. The Printer assumes that the | ||||
| authenticated user is the name received via the Digest | ||||
| authentication mechanism. | ||||
| o 'certificate': When a Client performs an operation whose target is | ||||
| the associated URI, the Printer expects the Client to provide an | ||||
| X.509 certificate. The Printer assumes that the authenticated | ||||
| user is the textual name (Common Name) contained within the | ||||
| certificate. | ||||
| 5.4.3. uri-security-supported (1setOf type2 keyword) | ||||
| This REQUIRED Printer attribute MUST have the same cardinality | This REQUIRED Printer attribute MUST have the same cardinality | |||
| (contain the same number of values) as the "printer-uri-supported" | (contain the same number of values) as the "printer-uri-supported" | |||
| attribute. This attribute identifies the security mechanisms used | attribute. This attribute identifies the security mechanisms used | |||
| for each URI listed in the "printer-uri-supported" attribute. The "i | for each URI listed in the "printer-uri-supported" attribute. The "i | |||
| th" value in "uri-security-supported" corresponds to the "i th" value | th" value in "uri-security-supported" corresponds to the "i th" value | |||
| in "printer-uri-supported" and it describes the security mechanisms | in "printer-uri-supported" and it describes the security mechanisms | |||
| used for accessing the Printer object via that URI. See [RFC2910] | used for accessing the Printer via that URI. See [RFC2910bis] for | |||
| for more details on security mechanisms. | more details on security mechanisms. | |||
| The following standard keyword values are defined: | The following standard keyword values are defined: | |||
| 'none': There are no secure communication channel protocols in use | o 'none': There are no secure communication channel protocols in use | |||
| for the given URI. | for the given URI. | |||
| 'ssl3': SSL3 [SSL] is the secure communications channel protocol | ||||
| in use for the given URI. | o 'tls': TLS [RFC5246] is the secure communications channel protocol | |||
| 'tls': TLS [RFC2246] is the secure communications channel | in use for the given URI. | |||
| protocol in use for the given URI. | ||||
| This attribute is orthogonal to the definition of a Client | This attribute is orthogonal to the definition of a Client | |||
| Authentication mechanism. Specifically, 'none' does not exclude | Authentication mechanism. Specifically, 'none' does not exclude | |||
| Client Authentication. See section 4.4.2. | Client Authentication. See Section 5.4.2. | |||
| Consider the following example. For a single Printer object, an | Consider the following example. For a single Printer, an | |||
| administrator configures the "printer-uri-supported", "uri- | Adminstrator configures the "printer-uri-supported", "uri- | |||
| authentication-supported" and "uri-security-supported" attributes as | authentication-supported" and "uri-security-supported" attributes as | |||
| follows: | follows: | |||
| "printer-uri-supported": 'xxx://acme.com/open-use-printer', | "printer-uri-supported": 'ipp://printer.example.com/ipp/print/ | |||
| 'xxx://acme.com/restricted-use-printer', | open-use-printer', 'ipp://printer.example.com/ipp/print/ | |||
| 'xxx://acme.com/private-printer' | restricted-use-printer', 'ipps://printer.example.com/ipp/print/ | |||
| "uri-authentication-supported": 'none', 'digest', 'basic' | private-printer' | |||
| "uri-security-supported": 'none', 'none', 'tls' | ||||
| Note: 'xxx' is not a valid scheme. See the IPP/1.1 "Transport and | "uri-authentication-supported": 'none', 'digest', 'basic' | |||
| Encoding" document [RFC2910] for the actual URI schemes to be used in | ||||
| object target attributes. | ||||
| In this case, one Printer object has three URIs. | "uri-security-supported": 'none', 'none', 'tls' | |||
| - For the first URI, 'xxx://acme.com/open-use-printer', the value | In this case, one Printer has three URIs. | |||
| 'none' in "uri-security-supported" indicates that there is no | ||||
| secure channel protocol configured to run under HTTP. The value | ||||
| of 'none' in "uri-authentication-supported" indicates that all | ||||
| users are 'anonymous'. There will be no challenge and the | ||||
| Printer will ignore "requesting-user-name". | ||||
| - For the second URI, 'xxx://acme.com/restricted-use-printer', the | o For the first URI, 'ipp://printer.example.com/ipp/print/open-use- | |||
| value 'none' in "uri-security-supported" indicates that there is | printer', the value 'none' in "uri-security-supported" indicates | |||
| no secure channel protocol configured to run under HTTP. The | that there is no secure channel protocol configured to run under | |||
| value of 'digest' in "uri-authentication-supported" indicates | HTTP. The value of 'none' in "uri-authentication-supported" | |||
| that the Printer will issue a challenge and that the Printer | indicates that all users are 'anonymous'. There will be no | |||
| will use the name supplied by the digest mechanism to determine | challenge and the Printer will ignore "requesting-user-name". | |||
| the authenticated user (see section 8.3). | ||||
| - For the third URI, 'xxx://acme.com/private-printer', the value | ||||
| 'tls' in "uri-security-supported" indicates that TLS is being | ||||
| used to secure the channel. The client SHOULD be prepared to | ||||
| use TLS framing to negotiate an acceptable ciphersuite to use | ||||
| while communicating with the Printer object. In this case, the | ||||
| name implies the use of a secure communications channel, but the | ||||
| fact is made explicit by the presence of the 'tls' value in | ||||
| "uri-security-supported". The client does not need to resort to | ||||
| understanding which security it must use by following naming | ||||
| conventions or by parsing the URI to determine which security | ||||
| mechanisms are implied. The value of 'basic' in "uri- | ||||
| authentication-supported" indicates that the Printer will issue | ||||
| a challenge and that the Printer will use the name supplied by | ||||
| the digest mechanism to determine the authenticated user (see | ||||
| section 8.3). Because this challenge occurs in a tls session, | ||||
| the channel is secure. | ||||
| It is expected that many IPP Printer objects will be configured to | o For the second URI, 'ipp://printer.example.com/ipp/print/ | |||
| support only one channel (either configured to use TLS access or not) | restricted-use-printer', the value 'none' in "uri-security- | |||
| and only one authentication mechanism. Such Printer objects only have | supported" indicates that there is no secure channel protocol | |||
| one URI listed in the "printer-uri-supported" attribute. No matter | configured to run under HTTP. The value of 'digest' in "uri- | |||
| the configuration of the Printer object (whether it has only one URI | authentication-supported" indicates that the Printer will issue a | |||
| or more than one URI), a client MUST supply only one URI in the | challenge and that the Printer will use the name supplied by the | |||
| target "printer-uri" operation attribute. | Digest mechanism to determine the authenticated user (see | |||
| Section 9.3). | ||||
| 4.4.4 printer-name (name(127)) | o For the third URI, 'ipps://printer.example.com/ipp/print/private- | |||
| printer', the value 'tls' in "uri-security-supported" indicates | ||||
| that TLS is being used to secure the channel. The Client SHOULD | ||||
| be prepared to use TLS framing to negotiate an acceptable | ||||
| ciphersuite to use while communicating with the Printer. In this | ||||
| case, the name implies the use of a secure communications channel, | ||||
| but the fact is made explicit by the presence of the 'tls' value | ||||
| in "uri-security-supported". The Client does not need to resort | ||||
| to understanding which security it must use by following naming | ||||
| conventions or by parsing the URI to determine which security | ||||
| mechanisms are implied. The value of 'basic' in "uri- | ||||
| authentication-supported" indicates that the Printer will issue a | ||||
| challenge and that the Printer will use the name supplied by the | ||||
| Basic mechanism to determine the authenticated user (see | ||||
| Section 9.3). Because this challenge occurs in a tls session, the | ||||
| channel is secure. | ||||
| This REQUIRED Printer attribute contains the name of the Printer | Some Printers will be configured to support only one channel (either | |||
| object. It is a name that is more end-user friendly than a URI. An | configured to use TLS access or not) and only one authentication | |||
| administrator determines a printer's name and sets this attribute to | mechanism. Such Printers only have one URI listed in the "printer- | |||
| that name. This name may be the last part of the printer's URI or it | uri-supported" attribute. No matter the configuration of the Printer | |||
| may be unrelated. In non-US-English locales, a name may contain | (whether it has only one URI or more than one URI), a Client MUST | |||
| characters that are not allowed in a URI. | supply only one URI in the target "printer-uri" operation attribute. | |||
| 4.4.5 printer-location (text(127)) | 5.4.4. printer-name (name(127)) | |||
| This Printer attribute identifies the location of the device. This | This REQUIRED Printer attribute contains the name of the Printer. It | |||
| could include things like: "in Room 123A, second floor of building | is a name that is more End User friendly than a URI. An Adminstrator | |||
| XYZ". | determines a Printer's name and sets this attribute to that name. | |||
| This name can be the last part of the Printer's URI or it can be | ||||
| unrelated. In non-US-English locales, a name can contain characters | ||||
| that are not allowed in a URI. | ||||
| 4.4.6 printer-info (text(127)) | 5.4.5. printer-location (text(127)) | |||
| This Printer attribute identifies the descriptive information about | This RECOMMENDED Printer attribute identifies the location of the | |||
| this Printer object. This could include things like: "This printer | device. This could include things like: 'in Room 123A, second floor | |||
| can be used for printing color transparencies for HR presentations", | of building XYZ'. | |||
| or "Out of courtesy for others, please print only small (1-5 page) | ||||
| jobs at this printer", or even "This printer is going away on July 1, | ||||
| 1997, please find a new printer". | ||||
| 4.4.7 printer-more-info (uri) | 5.4.6. printer-info (text(127)) | |||
| This Printer attribute contains a URI used to obtain more information | This RECOMMENDED Printer attribute provides descriptive information | |||
| about this specific Printer object. For example, this could be an | about this Printer. This could include things like: 'This Printer | |||
| HTTP type URI referencing an HTML page accessible to a Web Browser. | can be used for printing color transparencies for HR presentations', | |||
| The information obtained from this URI is intended for end user | or 'Out of courtesy for others, please print only small (1-5 page) | |||
| Jobs at this printer', or even 'This Printer is going away on July 1, | ||||
| please find a new printer'. | ||||
| 5.4.7. printer-more-info (uri) | ||||
| This RECOMMENDED Printer attribute contains a URI used to obtain more | ||||
| information about this specific Printer. For example, this could be | ||||
| an HTTP URI referencing an HTML page accessible to a Web Browser. | ||||
| The information obtained from this URI is intended for End User | ||||
| consumption. Features outside the scope of IPP can be accessed from | consumption. Features outside the scope of IPP can be accessed from | |||
| this URI. The information is intended to be specific to this printer | this URI. The information is intended to be specific to this Printer | |||
| instance and site specific services (e.g. job pricing, services | instance and site specific services, e.g. Job pricing, services | |||
| offered, end user assistance). The device manufacturer may initially | offered, and End User assistance. The device manufacturer can | |||
| populate this attribute. | initially populate this attribute. | |||
| 4.4.8 printer-driver-installer (uri) | 5.4.8. printer-driver-installer (uri) | |||
| This Printer attribute contains a URI to use to locate the driver | This Printer attribute contains a URI to use to locate the driver | |||
| installer for this Printer object. This attribute is intended for | installer for this Printer. This attribute is intended for | |||
| consumption by automata. The mechanics of print driver installation | consumption by automata. The mechanics of print driver installation | |||
| is outside the scope of this IPP/1.1 document. The device | is outside the scope of this document. The device manufacturer can | |||
| manufacturer may initially populate this attribute. | initially populate this attribute. | |||
| 4.4.9 printer-make-and-model (text(127)) | 5.4.9. printer-make-and-model (text(127)) | |||
| This Printer attribute identifies the make and model of the device. | This RECOMMENDED Printer attribute identifies the make and model of | |||
| The device manufacturer may initially populate this attribute. | the device. The device manufacturer can initially populate this | |||
| attribute. | ||||
| 4.4.10 printer-more-info-manufacturer (uri) | 5.4.10. printer-more-info-manufacturer (uri) | |||
| This Printer attribute contains a URI used to obtain more information | This Printer attribute contains a URI used to obtain more information | |||
| about this type of device. The information obtained from this URI is | about this type of device. The information obtained from this URI is | |||
| intended for end user consumption. Features outside the scope of IPP | intended for End User consumption. Features outside the scope of IPP | |||
| can be accessed from this URI (e.g., latest firmware, upgrades, print | can be accessed from this URI (e.g., latest firmware, upgrades, print | |||
| drivers, optional features available, details on color support). The | drivers, optional features available, details on color support). The | |||
| information is intended to be germane to this printer without regard | information is intended to be germane to this Printer without regard | |||
| to site specific modifications or services. The device manufacturer | to site specific modifications or services. The device manufacturer | |||
| may initially populate this attribute. | can initially populate this attribute. | |||
| 4.4.11 printer-state (type1 enum) | 5.4.11. printer-state (type1 enum) | |||
| This REQUIRED Printer attribute identifies the current state of the | This REQUIRED Printer attribute identifies the current state of the | |||
| device. The "printer-state reasons" attribute augments the | device. The "printer-state reasons" attribute augments the "printer- | |||
| "printer-state" attribute to give more detailed information about the | state" attribute to give more detailed information about the Printer | |||
| Printer in the given printer state. | in the given Printer state. | |||
| A Printer object need only update this attribute before responding to | ||||
| an operation which requests the attribute; the Printer object NEED | ||||
| NOT update this attribute continually, since asynchronous event | ||||
| notification is not part of IPP/1.1. A Printer NEED NOT implement | ||||
| all values if they are not applicable to a given implementation. | ||||
| The following standard enum values are defined: | A Printer updates this attribute continually if asynchronous event | |||
| notification [RFC3995] is supported. | ||||
| Value Symbolic Name and Description | Standard enum values are defined in Table 18. Values of "printer- | |||
| state-reasons", such as 'spool-area-full' and 'stopped-partly', MAY | ||||
| be used to provide further information. | ||||
| '3' 'idle': Indicates that new jobs can start processing without | +-------+-----------------------------------------------------------+ | |||
| waiting. | | Value | Symbolic Name and Description | | |||
| '4' 'processing': Indicates that jobs are processing; new jobs | +-------+-----------------------------------------------------------+ | |||
| will wait before processing. | | '3' | 'idle': Indicates that new Jobs can start processing | | |||
| '5' 'stopped': Indicates that no jobs can be processed and | | | without waiting. | | |||
| intervention is required. | +-------+-----------------------------------------------------------+ | |||
| | '4' | 'processing': Indicates that Jobs are processing; new | | ||||
| | | Jobs will wait before processing. | | ||||
| +-------+-----------------------------------------------------------+ | ||||
| | '5' | 'stopped': Indicates that no Jobs can be processed and | | ||||
| | | intervention is required. | | ||||
| +-------+-----------------------------------------------------------+ | ||||
| Values of "printer-state-reasons", such as 'spool-area-full' and | Table 18: "printer-state" Enum Values | |||
| 'stopped-partly', MAY be used to provide further information. | ||||
| 4.4.12 printer-state-reasons (1setOf type2 keyword) | 5.4.12. printer-state-reasons (1setOf type2 keyword) | |||
| This REQUIRED Printer attribute supplies additional detail about the | This REQUIRED Printer attribute supplies additional detail about the | |||
| device's state. Some of the these value definitions indicate | device's state. Some of the these value definitions indicate | |||
| conformance requirements; the rest are OPTIONAL. | conformance requirements; the rest are OPTIONAL. | |||
| Each keyword value MAY have a suffix to indicate its level of | Each keyword value MAY have a suffix to indicate its level of | |||
| severity. The three levels are: report (least severe), warning, and | severity. The three levels are: 'report' (least severe), 'warning', | |||
| error (most severe). | and 'error' (most severe): | |||
| - '-report': This suffix indicates that the reason is a "report". | o '-report': This suffix indicates that the reason is a "report". | |||
| An implementation may choose to omit some or all reports. Some | An implementation can choose to omit some or all reports. Some | |||
| reports specify finer granularity about the printer state; | reports specify finer granularity about the Printer state; others | |||
| others serve as a precursor to a warning. A report MUST contain | serve as a precursor to a warning. A report MUST contain nothing | |||
| nothing that could affect the printed output. | that could affect the printed output. Reports correspond to the | |||
| - '-warning': This suffix indicates that the reason is a | 'other' value for the prtAlertSeverityLevel property in the | |||
| "warning". An implementation may choose to omit some or all | Printer MIB [RFC3805]. | |||
| warnings. Warnings serve as a precursor to an error. A warning | ||||
| MUST contain nothing that prevents a job from completing, though | ||||
| in some cases the output may be of lower quality. | ||||
| - '-error': This suffix indicates that the reason is an "error". | o '-warning': This suffix indicates that the reason is a "warning". | |||
| An implementation MUST include all errors. If this attribute | An implementation can choose to omit some or all warnings. | |||
| contains one or more errors, printer MUST be in the stopped | Warnings serve as a precursor to an error. A warning MUST contain | |||
| state. | nothing that prevents a Job from completing, though in some cases | |||
| the output can be of lower quality. Warnings correspond to the | ||||
| 'warning' value for the prtAlertSeverityLevel property in the | ||||
| Printer MIB [RFC3805]. | ||||
| If the implementation does not add any one of the three suffixes, all | o '-error': This suffix indicates that the reason is an "error". An | |||
| parties MUST assume that the reason is an "error". | implementation MUST include all errors. If this attribute | |||
| contains one or more errors, Printer MUST be in the 'stopped' | ||||
| state. Errors correspond to the 'critical' value for the | ||||
| prtAlertSeverityLevel property in the Printer MIB [RFC3805]. | ||||
| If a Printer object controls more than one output device, each value | If the implementation does not add any one of the three suffixes and | |||
| of this attribute MAY apply to one or more of the output devices. An | the value is not 'none', Clients can assume that the reason is an | |||
| error on one output device that does not stop the Printer object as a | "error" if the Printer is in the 'stopped' state and a "warning" if | |||
| whole MAY appear as a warning in the Printer's "printer-state-reasons | the Printer is in any other state. | |||
| If a Printer controls more than one Output Device, each value of this | ||||
| attribute MAY apply to one or more of the Output Devices. An error | ||||
| on one Output Device that does not stop the Printer as a whole MAY | ||||
| appear as a warning in the Printer's "printer-state-reasons | ||||
| attribute". If the "printer-state" for such a Printer has a value of | attribute". If the "printer-state" for such a Printer has a value of | |||
| 'stopped', then there MUST be an error reason among the values in the | 'stopped', then there MUST be an error reason among the values in the | |||
| "printer-state-reasons" attribute. | "printer-state-reasons" attribute. | |||
| The following standard keyword values are defined: | The following standard keyword values are defined: | |||
| 'other': The device has detected an error other than one listed in | o 'none': There are no reasons. This state reason is semantically | |||
| this document. | equivalent to "printer-state-reasons" without any value and MUST | |||
| 'none': There are not reasons. This state reason is semantically | be used, since the 1setOf attribute syntax requires at least one | |||
| equivalent to "printer-state-reasons" without any value and | value. | |||
| MUST be used, since the 1setOf attribute syntax requires at | ||||
| least one value. | ||||
| 'media-needed': A tray has run out of media. | ||||
| 'media-jam': The device has a media jam. | ||||
| 'moving-to-paused': Someone has paused the Printer object using | ||||
| the Pause-Printer operation (see section 3.2.7) or other means, | ||||
| but the device(s) are taking an appreciable time to stop. | ||||
| Later, when all output has stopped, the "printer-state" becomes | ||||
| 'stopped', and the 'paused' value replaces the 'moving-to- | ||||
| paused' value in the "printer-state-reasons" attribute. This | ||||
| value MUST be supported, if the Pause-Printer operation is | ||||
| supported and the implementation takes significant time to | ||||
| pause a device in certain circumstances. | ||||
| 'paused': Someone has paused the Printer object using the Pause- | ||||
| Printer operation (see section 3.2.7) or other means and the | ||||
| Printer object's "printer-state" is 'stopped'. In this state, | ||||
| a Printer MUST NOT produce printed output, but it MUST perform | ||||
| other operations requested by a client. If a Printer had been | ||||
| printing a job when the Printer was paused, the Printer MUST | ||||
| resume printing that job when the Printer is no longer paused | ||||
| and leave no evidence in the printed output of such a pause. | ||||
| This value MUST be supported, if the Pause-Printer operation is | ||||
| supported. | ||||
| 'shutdown': Someone has removed a Printer object from service, and | ||||
| the device may be powered down or physically removed. In this | ||||
| state, a Printer object MUST NOT produce printed output, and | ||||
| unless the Printer object is realized by a print server that is | ||||
| still active, the Printer object MUST perform no other | ||||
| operations requested by a client, including returning this | ||||
| value. If a Printer object had been printing a job when it was | ||||
| shutdown, the Printer NEED NOT resume printing that job when | ||||
| the Printer is no longer shutdown. If the Printer resumes | ||||
| printing such a job, it may leave evidence in the printed | ||||
| output of such a shutdown, e.g. the part printed before the | ||||
| shutdown may be printed a second time after the shutdown. | ||||
| 'connecting-to-device': The Printer object has scheduled a job on | ||||
| the output device and is in the process of connecting to a | ||||
| shared network output device (and might not be able to actually | ||||
| start printing the job for an arbitrarily long time depending | ||||
| on the usage of the output device by other servers on the | ||||
| network). | ||||
| 'timed-out': The server was able to connect to the output device | ||||
| (or is always connected), but was unable to get a response from | ||||
| the output device. | ||||
| 'stopping': The Printer object is in the process of stopping the | ||||
| device and will be stopped in a while. When the device is | ||||
| stopped, the Printer object will change the Printer object's | ||||
| state to 'stopped'. The 'stopping-warning' reason is never an | ||||
| error, even for a Printer with a single output device. When an | ||||
| output-device ceases accepting jobs, the Printer will have this | ||||
| reason while the output device completes printing. | ||||
| 'stopped-partly': When a Printer object controls more than one | ||||
| output device, this reason indicates that one or more output | ||||
| devices are stopped. If the reason is a report, fewer than | ||||
| half of the output devices are stopped. If the reason is a | ||||
| warning, fewer than all of the output devices are stopped. | ||||
| 'toner-low': The device is low on toner. | ||||
| 'toner-empty': The device is out of toner. | ||||
| 'spool-area-full': The limit of persistent storage allocated for | ||||
| spooling has been reached. The Printer is temporarily unable | ||||
| to accept more jobs. The Printer will remove this value when | ||||
| it is able to accept more jobs. This value SHOULD be used by a | ||||
| non-spooling Printer that only accepts one or a small number | ||||
| jobs at a time or a spooling Printer that has filled the spool | ||||
| space. | ||||
| 'cover-open': One or more covers on the device are open. | ||||
| 'interlock-open': One or more interlock devices on the printer are | ||||
| unlocked. | ||||
| 'door-open': One or more doors on the device are open. | ||||
| 'input-tray-missing': One or more input trays are not in the | ||||
| device. | ||||
| 'media-low': At least one input tray is low on media. | ||||
| 'media-empty': At least one input tray is empty. | ||||
| 'output-tray-missing': One or more output trays are not in the | o 'other': The device has detected a condition other than one listed | |||
| device | in this document. | |||
| 'output-area-almost-full': One or more output area is almost full | ||||
| (e.g. tray, stacker, collator). | ||||
| 'output-area-full': One or more output area is full. (e.g. tray, | ||||
| stacker, collator) | ||||
| 'marker-supply-low': The device is low on at least one marker | ||||
| supply. (e.g. toner, ink, ribbon) | ||||
| 'marker-supply-empty: The device is out of at least one marker | ||||
| supply. (e.g. toner, ink, ribbon) | ||||
| 'marker-waste-almost-full': The device marker supply waste | ||||
| receptacle is almost full. | ||||
| 'marker-waste-full': The device marker supply waste receptacle is | ||||
| full. | ||||
| 'fuser-over-temp': The fuser temperature is above normal. | ||||
| 'fuser-under-temp': The fuser temperature is below normal. | ||||
| 'opc-near-eol': The optical photo conductor is near end of life. | ||||
| 'opc-life-over': The optical photo conductor is no longer | ||||
| functioning. | ||||
| 'developer-low': The device is low on developer. | ||||
| 'developer-empty: The device is out of developer. | ||||
| 'interpreter-resource-unavailable': An interpreter resource is | ||||
| unavailable (i.e. font, form) | ||||
| 4.4.13 printer-state-message (text(MAX)) | o 'connecting-to-device': The Printer has scheduled a Job on the | |||
| Output Device and is in the process of connecting to a shared | ||||
| network Output Device (and might not be able to actually start | ||||
| printing the Job for an arbitrarily long time depending on the | ||||
| usage of the Output Device by other servers on the network). | ||||
| This Printer attribute specifies information about the "printer- | o 'cover-open': One or more covers on the device are open, | |||
| state" and "printer-state-reasons" attributes in human readable text. | equivalent to a prtCoverStatus [RFC3805] of 3 (coverOpen). | |||
| If the Printer object supports this attribute, the Printer object | ||||
| o 'developer-empty: The device is out of developer. | ||||
| o 'developer-low': The device is low on developer. | ||||
| o 'door-open': One or more doors on the device are open, equivalent | ||||
| to a prCoverStatus [RFC3805] of 3 (coverOpen). | ||||
| o 'fuser-over-temp': The fuser temperature is above normal, | ||||
| equivalent to a prtMarkerStatus [RFC3805] of 19 (Unavailable | ||||
| because broken + Critical Alerts). | ||||
| o 'fuser-under-temp': The fuser temperature is below normal, | ||||
| equivalent to a prtMarkerStatus [RFC3805] of 19 (Unavailable | ||||
| because broken + Critical Alerts). | ||||
| o 'input-tray-missing': One or more input trays are not in the | ||||
| device, equivalent to a prtInputStatus [RFC3805] of 19 | ||||
| (Unavailable because broken + Critical Alerts). | ||||
| o 'interlock-open': One or more interlock devices on the Printer are | ||||
| unlocked, equivalent to a prtCoverStatus [RFC3805] of 5 | ||||
| (interlockOpen). | ||||
| o 'interpreter-resource-unavailable': An interpreter resource is | ||||
| unavailable (i.e. font, form) | ||||
| o 'marker-supply-empty: The device is out of at least one marker | ||||
| supply, e.g., toner, ink, ribbon. | ||||
| o 'marker-supply-low': The device is low on at least one marker | ||||
| supply, e.g., toner, ink, ribbon. | ||||
| o 'marker-waste-almost-full': The device marker supply waste | ||||
| receptacle is almost full. | ||||
| o 'marker-waste-full': The device marker supply waste receptacle is | ||||
| full. | ||||
| o 'media-empty': At least one input tray is empty, equivalent to a | ||||
| prtInputStatus [RFC3805] of 19 (Unavailable because broken + | ||||
| Critical Alerts). | ||||
| o 'media-jam': The device has a media jam, equivalent to a | ||||
| prtInputStatus [RFC3805] of 19 (Unavailable because broken + | ||||
| Critical Alerts). | ||||
| o 'media-low': At least one input tray is low on media, equivalent | ||||
| to a prtInputStatus [RFC3805] of 8 (Non-Critical Alerts). | ||||
| o 'media-needed': A tray has run out of media, equivalent to a | ||||
| prtInputStatus [RFC3805] value of 17 (Unavailable and OnRequest + | ||||
| Critical Alerts). | ||||
| o 'moving-to-paused': Someone has paused the Printer using the | ||||
| Pause-Printer operation (see Section 4.2.7) or other means, but | ||||
| the device(s) are taking an appreciable time to stop. Later, when | ||||
| all output has stopped, the "printer-state" becomes 'stopped', and | ||||
| the 'paused' value replaces the 'moving-to-paused' value in the | ||||
| "printer-state-reasons" attribute. This value MUST be supported, | ||||
| if the Pause-Printer operation is supported and the implementation | ||||
| takes significant time to pause a device in certain circumstances. | ||||
| o 'opc-life-over': The optical photo conductor is no longer | ||||
| functioning, equivalent to a prtMarkerStatus [RFC3805] of 19 | ||||
| (Unavailable because broken + Critical Alerts). | ||||
| o 'opc-near-eol': The optical photo conductor is near its end of | ||||
| life, equivalent to a prtMarkerStatus [RFC3805] of 8 (Non-Critical | ||||
| Alerts). | ||||
| o 'output-area-almost-full': One or more output areas are almost | ||||
| full, e.g., tray, stacker, collator, equivalent to a | ||||
| prtOutputStatus [RFC3805] of 8 (Non-Critical Alerts). | ||||
| o 'output-area-full': One or more output areas are full, e.g., tray, | ||||
| stacker, collator, equivalent to a prtInputStatus [RFC3805] of 19 | ||||
| (Unavailable because broken + Critical Alerts). | ||||
| o 'output-tray-missing': One or more output trays are not in the | ||||
| device, equivalent to a prtOutputStatus [RFC3805] of 19 | ||||
| (Unavailable because broken + Critical Alerts). | ||||
| o 'paused': Someone has paused the Printer using the Pause-Printer | ||||
| operation (see Section 4.2.7) or other means and the Printer's | ||||
| "printer-state" is 'stopped'. In this state, a Printer MUST NOT | ||||
| produce printed output, but it MUST perform other operations | ||||
| requested by a Client. If a Printer had been printing a Job when | ||||
| the Printer was paused, the Printer MUST resume printing that Job | ||||
| when the Printer is no longer paused and leave no evidence in the | ||||
| printed output of such a pause. This value MUST be supported, if | ||||
| the Pause-Printer operation is supported. | ||||
| o 'shutdown': Someone has removed a Printer from service, and the | ||||
| device can be powered down or physically removed. In this state, | ||||
| a Printer MUST NOT produce printed output, and unless the Printer | ||||
| is realized by a print server that is still active, the Printer | ||||
| MUST perform no other operations requested by a Client, including | ||||
| returning this value. If a Printer had been printing a Job when | ||||
| it was shutdown, the Printer MAY resume printing that Job when the | ||||
| Printer is restarted. If the Printer resumes printing such a job, | ||||
| it can leave evidence in the printed output of such a shutdown, | ||||
| e.g. the part printed before the shutdown can be printed a second | ||||
| time after the shutdown. | ||||
| o 'spool-area-full': The limit of persistent storage allocated for | ||||
| spooling has been reached. The Printer is temporarily unable to | ||||
| accept more Jobs. The Printer will remove this value when it is | ||||
| able to accept more Jobs. This value SHOULD be used by a non- | ||||
| spooling Printer that only accepts one or a small number Jobs at a | ||||
| time or a spooling Printer that has filled the spool space. | ||||
| o 'stopped-partly': When a Printer controls more than one Output | ||||
| Device, this reason indicates that one or more Output Devices are | ||||
| stopped. If the reason is a report, fewer than half of the Output | ||||
| Devices are stopped. If the reason is a warning, fewer than all | ||||
| of the Output Devices are stopped. | ||||
| o 'stopping': The Printer is in the process of stopping the device | ||||
| and will be stopped in a while. When the device is stopped, the | ||||
| Printer will change the Printer's state to 'stopped'. The | ||||
| 'stopping-warning' reason is never an error, even for a Printer | ||||
| with a single Output Device. When an output-device ceases | ||||
| accepting Jobs, the Printer will have this reason while the Output | ||||
| Device completes printing. | ||||
| o 'timed-out': The server was able to connect to the Output Device | ||||
| (or is always connected), but was unable to get a response from | ||||
| the Output Device. | ||||
| o 'toner-empty': The device is out of toner. | ||||
| o 'toner-low': The device is low on toner. | ||||
| 5.4.13. printer-state-message (text(MAX)) | ||||
| This RECOMMENDED Printer attribute specifies information about the | ||||
| "printer-state" and "printer-state-reasons" attributes in human | ||||
| readable text. If the Printer supports this attribute, the Printer | ||||
| MUST be able to generate this message in any of the natural languages | MUST be able to generate this message in any of the natural languages | |||
| identified by the Printer's "generated-natural-language-supported" | identified by the Printer's "generated-natural-language-supported" | |||
| attribute (see the "attributes-natural-language" operation attribute | attribute (see the "attributes-natural-language" operation attribute | |||
| specified in Section 3.1.4.1). | specified in Section 4.1.4.1). | |||
| 4.4.14 ipp-versions-supported (1setOf type2 keyword) | 5.4.14. ipp-versions-supported (1setOf type2 keyword) | |||
| This REQUIRED attribute identifies the IPP protocol version(s) that | This REQUIRED attribute identifies the IPP protocol version(s) that | |||
| this Printer supports, including major and minor versions, i.e., the | this Printer supports, including major and minor versions, i.e., the | |||
| version numbers for which this Printer implementation meets the | version numbers for which this Printer implementation meets the | |||
| conformance requirements. For version number validation, the Printer | conformance requirements. For version number validation, the Printer | |||
| matches the (two-octet binary) "version-number" parameter supplied by | matches the (two-octet binary) "version-number" parameter supplied by | |||
| the client in each request (see sections 3.1.1 and 3.1.8) with the | the Client in each request (see Sections 4.1.1 and 4.1.8) with the | |||
| (US-ASCII) keyword values of this attribute. | (US-ASCII) keyword values of this attribute. | |||
| The following standard keyword values are defined: | The following standard keyword values are defined in this document: | |||
| '1.0': Meets the conformance requirement of IPP version 1.0 as | o '1.0': Meets the conformance requirement of IPP version 1.0 as | |||
| specified in RFC 2566 [RFC2566] and RFC 2565 [RFC2565] | specified in RFC 2566 [RFC2566] and RFC 2565 [RFC2565] including | |||
| including any extensions registered according to Section 6 and | any extensions registered according to Section 7 and any extension | |||
| any extension defined in this version or any future version of | defined in this version or any future version of the IPP "Model | |||
| the IPP "Model and Semantics" document or the IPP "Encoding and | and Semantics" document or the IPP "Encoding and Transport" | |||
| Transport" document following the rules, if any, when the | document following the rules, if any, when the "version-number" | |||
| "version-number" parameter is '1.0'. | parameter is '1.0'. | |||
| '1.1': Meets the conformance requirement of IPP version 1.1 as | ||||
| specified in this document and [RFC2910] including any | ||||
| extensions registered according to Section 6 and any extension | ||||
| defined in any future versions of the IPP "Model and Semantics" | ||||
| document or the IPP Encoding and Transport document following | ||||
| the rules, if any, when the "version-number" parameter is | ||||
| '1.1'. | ||||
| 4.4.15 operations-supported (1setOf type2 enum) | o '1.1': Meets the conformance requirement of IPP version 1.1 as | |||
| specified in this document and [RFC2910bis] including any | ||||
| extensions registered according to Section 7 and any extension | ||||
| defined in any future versions of the IPP "Model and Semantics" | ||||
| document or the IPP Encoding and Transport document following the | ||||
| rules, if any, when the "version-number" parameter is '1.1'. | ||||
| Additional values are defined in IPP 2.0, 2.1, and 2.2 [PWG5100.12]. | ||||
| 5.4.15. operations-supported (1setOf type2 enum) | ||||
| This REQUIRED Printer attribute specifies the set of supported | This REQUIRED Printer attribute specifies the set of supported | |||
| operations for this Printer object and contained Job objects. | operations for this Printer and contained Jobs. | |||
| This attribute is encoded as any other enum attribute syntax | This attribute is encoded as any other enum attribute syntax | |||
| according to [RFC2910] as 32-bits. However, all 32-bit enum values | according to [RFC2910bis] as 32-bits. However, all 32-bit enum | |||
| for this attribute MUST NOT exceed 0x00008FFF, since these same | values for this attribute MUST NOT exceed 0x00007FFF, since these | |||
| values are also passed in two octets in the "operation-id" parameter | same values are also passed in two octets in the "operation-id" | |||
| (see section 3.1.1) in each Protocol request with the two high order | parameter (see Section 4.1.1) in each Protocol request with the two | |||
| octets omitted in order to indicate the operation being performed | high order octets omitted in order to indicate the operation being | |||
| [RFC2910]. | performed [RFC2910bis]. | |||
| The following standard enum and "operation-id" (see section 3.1.2) | Table 19 lists the enum and "operation-id" (see Section 4.1.2) values | |||
| values are defined: | that are defined in this document. | |||
| Value Operation Name | +---------------+---------------------------------------------------+ | |||
| ----------------- ------------------------------------- | | Value | Operation Name | | |||
| +---------------+---------------------------------------------------+ | ||||
| | 0x0000 | reserved, not used | | ||||
| +---------------+---------------------------------------------------+ | ||||
| | 0x0001 | reserved, not used | | ||||
| +---------------+---------------------------------------------------+ | ||||
| | 0x0002 | Print-Job | | ||||
| +---------------+---------------------------------------------------+ | ||||
| | 0x0003 | Print-URI | | ||||
| +---------------+---------------------------------------------------+ | ||||
| | 0x0004 | Validate-Job | | ||||
| +---------------+---------------------------------------------------+ | ||||
| | 0x0005 | Create-Job | | ||||
| +---------------+---------------------------------------------------+ | ||||
| | 0x0006 | Send-Document | | ||||
| +---------------+---------------------------------------------------+ | ||||
| | 0x0007 | Send-URI | | ||||
| +---------------+---------------------------------------------------+ | ||||
| | 0x0008 | Cancel-Job | | ||||
| +---------------+---------------------------------------------------+ | ||||
| | 0x0009 | Get-Job-Attributes | | ||||
| +---------------+---------------------------------------------------+ | ||||
| | 0x000A | Get-Jobs | | ||||
| +---------------+---------------------------------------------------+ | ||||
| | 0x000B | Get-Printer-Attributes | | ||||
| +---------------+---------------------------------------------------+ | ||||
| | 0x000C | Hold-Job | | ||||
| +---------------+---------------------------------------------------+ | ||||
| | 0x000D | Release-Job | | ||||
| +---------------+---------------------------------------------------+ | ||||
| | 0x000E | Restart-Job | | ||||
| +---------------+---------------------------------------------------+ | ||||
| | 0x000F | reserved for a future operation | | ||||
| +---------------+---------------------------------------------------+ | ||||
| | 0x0010 | Pause-Printer | | ||||
| +---------------+---------------------------------------------------+ | ||||
| | 0x0011 | Resume-Printer | | ||||
| +---------------+---------------------------------------------------+ | ||||
| | 0x0012 | Purge-Jobs | | ||||
| +---------------+---------------------------------------------------+ | ||||
| | 0x0013-0x3FFF | reserved for future standards track operations | | ||||
| | | (see Section 7.4) | | ||||
| +---------------+---------------------------------------------------+ | ||||
| | 0x4000-0x7FFF | reserved for vendor extensions (see Section 7.4) | | ||||
| +---------------+---------------------------------------------------+ | ||||
| 0x0000 reserved, not used | Table 19: "operations-supported" and "operation-id" Enum Values | |||
| 0x0001 reserved, not used | ||||
| 0x0002 Print-Job | ||||
| 0x0003 Print-URI | ||||
| 0x0004 Validate-Job | ||||
| 0x0005 Create-Job | ||||
| 0x0006 Send-Document | ||||
| 0x0007 Send-URI | ||||
| 0x0008 Cancel-Job | ||||
| 0x0009 Get-Job-Attributes | ||||
| 0x000A Get-Jobs | ||||
| 0x000B Get-Printer-Attributes | ||||
| 0x000C Hold-Job | ||||
| 0x000D Release-Job | ||||
| 0x000E Restart-Job | ||||
| 0x000F reserved for a future operation | ||||
| 0x0010 Pause-Printer | ||||
| 0x0011 Resume-Printer | ||||
| 0x0012 Purge-Jobs | ||||
| 0x0013-0x3FFF reserved for future IETF standards track | ||||
| operations (see section 6.4) | ||||
| 0x4000-0x8FFF reserved for vendor extensions (see section 6.4) | ||||
| 4.4.16 multiple-document-jobs-supported (boolean) | 5.4.16. multiple-document-jobs-supported (boolean) | |||
| This Printer attribute indicates whether or not the Printer supports | This RECOMMENDED Printer attribute indicates whether the Printer | |||
| more than one document per job, i.e., more than one Send-Document or | supports more than one Document per Job, i.e., more than one Send- | |||
| Send-Data operation with document data. If the Printer supports the | Document operation with Document data and/or Send-URI operation. If | |||
| Create-Job and Send-Document operations (see section 3.2.4 and | the Printer supports the Create-Job and Send-Document operations (see | |||
| 3.3.1), it MUST support this attribute. | Section 4.2.4 and 3.3.1), it MUST support this attribute. | |||
| 4.4.17 charset-configured (charset) | 5.4.17. charset-configured (charset) | |||
| This REQUIRED Printer attribute identifies the charset that the | This REQUIRED Printer attribute identifies the charset that the | |||
| Printer object has been configured to represent 'text' and 'name' | Printer has been configured to represent 'text' and 'name' Printer | |||
| Printer attributes that are set by the operator, system | attributes that are set by the Operator, Adminstrator, or | |||
| administrator, or manufacturer, i.e., for "printer-name" (name), | manufacturer, i.e., for "printer-name" (name), "printer-location" | |||
| "printer-location" (text), "printer-info" (text), and "printer-make- | (text), "printer-info" (text), and "printer-make-and-model" (text). | |||
| and-model" (text). Therefore, the value of the Printer object's | Therefore, the value of the Printer's "charset-configured" attribute | |||
| "charset-configured" attribute MUST also be among the values of the | MUST also be among the values of the Printer's "charset-supported" | |||
| Printer object's "charset-supported" attribute. | attribute. | |||
| 4.4.18 charset-supported (1setOf charset) | 5.4.18. charset-supported (1setOf charset) | |||
| This REQUIRED Printer attribute identifies the set of charsets that | This REQUIRED Printer attribute identifies the set of charsets that | |||
| the Printer and contained Job objects support in attributes with | the Printer and contained Jobs support in attributes with attribute | |||
| attribute syntax 'text' and 'name'. At least the value 'utf-8' MUST | syntax 'text' and 'name'. At least the value 'utf-8' MUST be | |||
| be present, since IPP objects MUST support the UTF-8 [RFC2279] | present, since IPP objects MUST support the UTF-8 [RFC3629] charset. | |||
| charset. If a Printer object supports a charset, it means that for | If a Printer supports a charset, it means that for all attributes of | |||
| all attributes of syntax 'text' and 'name' the IPP object MUST (1) | syntax 'text' and 'name' the Printer MUST (1) accept the charset in | |||
| accept the charset in requests and return the charset in responses as | requests and return the charset in responses as needed. | |||
| needed. | ||||
| If more charsets than UTF-8 are supported, the IPP object MUST | If more charsets than UTF-8 are supported, the Printer MUST perform | |||
| perform charset conversion between the charsets as described in | charset conversion between the charsets as described in | |||
| Section 3.1.4.2. | Section 4.1.4.2. | |||
| 4.4.19 natural-language-configured (naturalLanguage) | 5.4.19. natural-language-configured (naturalLanguage) | |||
| This REQUIRED Printer attribute identifies the natural language that | This REQUIRED Printer attribute identifies the natural language that | |||
| the Printer object has been configured to represent 'text' and 'name' | the Printer has been configured to represent 'text' and 'name' | |||
| Printer attributes that are set by the operator, system | Printer attributes that are set by the Operator, Adminstrator, or | |||
| administrator, or manufacturer, i.e., for "printer-name" (name), | manufacturer, i.e., for "printer-name" (name), "printer-location" | |||
| "printer-location" (text), "printer-info" (text), and "printer-make- | (text), "printer-info" (text), and "printer-make-and-model" (text). | |||
| and-model" (text). When returning these Printer attributes, the | When returning these Printer attributes, the Printer MAY return them | |||
| Printer object MAY return them in the configured natural language | in the configured natural language specified by this attribute, | |||
| specified by this attribute, instead of the natural language | instead of the natural language requested by the Client in the | |||
| requested by the client in the "attributes-natural-language" | "attributes-natural-language" operation attribute. See | |||
| operation attribute. See Section 3.1.4.1 for the specification of | Section 4.1.4.1 for the specification of the OPTIONAL multiple | |||
| the OPTIONAL multiple natural language support. Therefore, the value | natural language support. Therefore, the value of the Printer's | |||
| of the Printer object's "natural-language-configured" attribute MUST | "natural-language-configured" attribute MUST also be among the values | |||
| also be among the values of the Printer object's "generated-natural- | of the Printer's "generated-natural-language-supported" attribute. | |||
| language-supported" attribute. | ||||
| 4.4.20 generated-natural-language-supported (1setOf naturalLanguage) | 5.4.20. generated-natural-language-supported (1setOf naturalLanguage) | |||
| This REQUIRED Printer attribute identifies the natural language(s) | This REQUIRED Printer attribute identifies the natural language(s) | |||
| that the Printer object and contained Job objects support in | that the Printer and contained Jobs support in attributes with | |||
| attributes with attribute syntax 'text' and 'name'. The natural | attribute syntax 'text' and 'name'. The natural language(s) | |||
| language(s) supported depends on implementation and/or configuration. | supported depends on implementation and/or configuration. Unlike | |||
| Unlike charsets, IPP objects MUST accept requests with any natural | charsets, Printers MUST accept requests with any natural language or | |||
| language or any Natural Language Override whether the natural | any Natural Language Override whether the natural language is | |||
| language is supported or not. | supported or not. | |||
| If a Printer object supports a natural language, it means that for | If a Printer supports a natural language, it means that for any of | |||
| any of the attributes for which the Printer or Job object generates | the attributes for which the Printer or Job generates messages, i.e., | |||
| messages, i.e., for the "job-state-message" and "printer-state- | for the "job-state-message" and "printer-state-message" attributes | |||
| message" attributes and Operation Messages (see Section 3.1.5) in | and operation messages (see Section 4.1.5) in operation responses, | |||
| operation responses, the Printer and Job objects MUST be able to | the Printer and Job MUST be able to generate messages in any of the | |||
| generate messages in any of the Printer's supported natural | Printer's supported natural languages. See Section 4.1.4 for the | |||
| languages. See section 3.1.4 for the definition of 'text' and 'name' | definition of 'text' and 'name' attributes in operation requests and | |||
| attributes in operation requests and responses. | responses. | |||
| Note: A Printer object that supports multiple natural languages, | Note: A Printer that supports multiple natural languages often has | |||
| often has separate catalogs of messages, one for each natural | separate catalogs of messages, one for each natural language | |||
| language supported. | supported. | |||
| 4.4.21 document-format-default (mimeMediaType) | 5.4.21. document-format-default (mimeMediaType) | |||
| This REQUIRED Printer attribute identifies the document format that | This REQUIRED Printer attribute identifies the Document format that | |||
| the Printer object has been configured to assume if the client does | the Printer has been configured to assume if the Client does not | |||
| not supply a "document-format" operation attribute in any of the | supply a "document-format" operation attribute in any of the | |||
| operation requests that supply document data. The standard values | operation requests that supply Document data. The standard values | |||
| for this attribute are Internet Media types (sometimes called MIME | for this attribute are Internet Media types (sometimes called MIME | |||
| types). For further details see the description of the | media types). For further details see the description of the | |||
| 'mimeMediaType' attribute syntax in Section 4.1.9. | 'mimeMediaType' attribute syntax in Section 5.1.10. | |||
| 4.4.22 document-format-supported (1setOf mimeMediaType) | 5.4.22. document-format-supported (1setOf mimeMediaType) | |||
| This REQUIRED Printer attribute identifies the set of document | This REQUIRED Printer attribute identifies the set of Document | |||
| formats that the Printer object and contained Job objects can | formats that the Printer and contained Jobs can support. For further | |||
| support. For further details see the description of the | details see the description of the 'mimeMediaType' attribute syntax | |||
| 'mimeMediaType' attribute syntax in Section 4.1.9. | in Section 5.1.10. | |||
| 4.4.23 printer-is-accepting-jobs (boolean) | 5.4.23. printer-is-accepting-Jobs (boolean) | |||
| This REQUIRED Printer attribute indicates whether the printer is | This REQUIRED Printer attribute indicates whether the Printer is | |||
| currently able to accept jobs, i.e., is accepting Print-Job, Print- | currently able to accept Jobs, i.e., is accepting Print-Job, Print- | |||
| URI, and Create-Job requests. If the value is 'true', the printer is | URI, and Create-Job requests. If the value is 'true', the Printer is | |||
| accepting jobs. If the value is 'false', the Printer object is | accepting Jobs. If the value is 'false', the Printer is currently | |||
| currently rejecting any jobs submitted to it. In this case, the | rejecting any Jobs submitted to it. In this case, the Printer | |||
| Printer object returns the 'server-error-not-accepting-jobs' status | returns the 'server-error-not-accepting-Jobs' status code. | |||
| code. | ||||
| This value is independent of the "printer-state" and "printer-state- | This value is independent of the "printer-state" and "printer-state- | |||
| reasons" attributes because its value does not affect the current | reasons" attributes because its value does not affect the current | |||
| job; rather it affects future jobs. This attribute, when 'false', | job; rather it affects future Jobs. This attribute, when 'false', | |||
| causes the Printer to reject jobs even when the "printer-state" is | causes the Printer to reject Jobs even when the "printer-state" is | |||
| 'idle' or, when 'true', causes the Printer object to accepts jobs | 'idle' or, when 'true', causes the Printer to accepts Jobs even when | |||
| even when the "printer-state" is 'stopped'. | the "printer-state" is 'stopped'. | |||
| 4.4.24 queued-job-count (integer(0:MAX)) | 5.4.24. queued-job-count (integer(0:MAX)) | |||
| This REQUIRED Printer attribute contains a count of the number of | This REQUIRED Printer attribute contains a count of the number of | |||
| jobs that are either 'pending', 'processing', 'pending-held', or | Jobs that are either 'pending', 'processing', 'pending-held', or | |||
| 'processing-stopped' and is set by the Printer object. | 'processing-stopped' and is set by the Printer. | |||
| 4.4.25 printer-message-from-operator (text(127)) | 5.4.25. printer-message-from-operator (text(127)) | |||
| This Printer attribute provides a message from an operator, system | This Printer attribute provides a message from an Operator, | |||
| administrator or "intelligent" process to indicate to the end user | Adminstrator, or "intelligent" process to indicate to the End User | |||
| information or status of the printer, such as why it is unavailable | information or status of the printer, such as why it is unavailable | |||
| or when it is expected to be available. | or when it is expected to be available. | |||
| 4.4.26 color-supported (boolean) | 5.4.26. color-supported (boolean) | |||
| This Printer attribute identifies whether the device is capable of | This RECOMMENDED Printer attribute identifies whether the device is | |||
| any type of color printing at all, including highlight color. All | capable of any type of color printing at all, including highlight | |||
| document instructions having to do with color are embedded within the | color. All document instructions having to do with color are | |||
| document PDL (none are external IPP attributes in IPP/1.1). | embedded within the Document PDL, although IPP attributes can affect | |||
| the rendering of those colors. | ||||
| Note: end-users are able to determine the nature and details of the | Note: End users are able to determine the nature and details of the | |||
| color support by querying the "printer-more-info-manufacturer" | color support by querying the "printer-more-info-manufacturer" | |||
| Printer attribute. | Printer attribute. | |||
| 4.4.27 reference-uri-schemes-supported (1setOf uriScheme) | 5.4.27. reference-uri-schemes-supported (1setOf uriScheme) | |||
| This Printer attribute specifies which URI schemes are supported for | This Printer attribute specifies which URI schemes are supported for | |||
| use in the "document-uri" operation attribute of the Print-URI or | use in the "document-uri" operation attribute of the Print-URI or | |||
| Send-URI operation. If a Printer object supports these optional | Send-URI operations. If a Printer supports these OPTIONAL | |||
| operations, it MUST support the "reference-uri-schemes-supported" | operations, it MUST support the "reference-uri-schemes-supported" | |||
| Printer attribute with at least the following schemed URI value: | Printer attribute with at least the following URI scheme value: | |||
| 'ftp': The Printer object will use an FTP 'get' operation as | o 'ftp': The Printer will use an FTP 'get' operation as defined in | |||
| defined in RFC 2228 [RFC2228] using FTP URLs as defined by | RFC 2228 [RFC2228] using FTP URLs as defined by [RFC3986] and | |||
| [RFC2396] and [RFC2316]. | [RFC2316]. | |||
| The Printer object MAY OPTIONALLY support other URI schemes (see | The Printer MAY support other URI schemes (see Section 5.1.7). | |||
| section 4.1.6). | ||||
| 4.4.28 pdl-override-supported (type2 keyword) | 5.4.28. pdl-override-supported (type2 keyword) | |||
| This REQUIRED Printer attribute expresses the ability for a | This REQUIRED Printer attribute expresses the ability for a | |||
| particular Printer implementation to either attempt to override | particular Printer implementation to override Document data | |||
| document data instructions with IPP attributes or not. | instructions with IPP attributes. The following keyword values are | |||
| defined in this document: | ||||
| This attribute takes on the following keyword values: | o 'attempted': This value indicates that the Printer attempts to | |||
| make the IPP attribute values take precedence over embedded | ||||
| instructions in the Document data, however there is no guarantee. | ||||
| - 'attempted': This value indicates that the Printer object | o 'not-attempted': This value indicates that the Printer makes no | |||
| attempts to make the IPP attribute values take precedence over | attempt to make the IPP attribute values take precedence over | |||
| embedded instructions in the document data, however there is no | embedded instructions in the Document data. | |||
| guarantee. | ||||
| - 'not-attempted': This value indicates that the Printer object | ||||
| makes no attempt to make the IPP attribute values take | ||||
| precedence over embedded instructions in the document data. | ||||
| Section 15 contains a full description of how this attribute | Appendix C contains a full description of how this attribute | |||
| interacts with and affects other IPP attributes, especially the | interacts with and affects other IPP attributes, especially the "ipp- | |||
| "ipp-attribute-fidelity" attribute. | attribute-fidelity" attribute. | |||
| 4.4.29 printer-up-time (integer(1:MAX)) | 5.4.29. printer-up-time (integer(1:MAX)) | |||
| This REQUIRED Printer attribute indicates the amount of time (in | This REQUIRED Printer attribute indicates the amount of time (in | |||
| seconds) that this Printer instance has been up and running. The | seconds) that this Printer instance has been up and running. The | |||
| value is a monotonically increasing value starting from 1 when the | value is a monotonically increasing value starting from 1 when the | |||
| Printer object is started-up (initialized, booted, etc.). This value | Printer is started-up (initialized, booted, etc.). This value is | |||
| is used to populate the Event Time Job Description Job attributes | used to populate the Event Time Job Status attributes "time-at- | |||
| "time-at-creation", "time-at-processing", and "time-at-completed" | creation", "time-at-processing", and "time-at-completed" (see | |||
| (see section 4.3.14). | Section 5.3.14). | |||
| If the Printer object goes down at some value 'n', and comes back up, | If the Printer goes down at some value 'n', and comes back up, the | |||
| the implementation MAY: | implementation MAY: | |||
| 1. Know how long it has been down, and resume at some value | 1. Know how long it has been down, and resume at some value greater | |||
| greater than 'n', or | than 'n', or | |||
| 2. Restart from 1. | ||||
| In other words, if the device or devices that the Printer object is | 2. Restart from 1. | |||
| representing are restarted or power cycled, the Printer object MAY | ||||
| continue counting this value or MAY reset this value to 1 depending | ||||
| on implementation. However, if the Printer object software ceases | ||||
| running, and restarts without knowing the last value for "printer- | ||||
| up-time", the implementation MUST reset this value to 1. If this | ||||
| value is reset and the Printer has persistent jobs, the Printer MUST | ||||
| reset the "time-at-xxx(integer) Event Time Job Description attributes | ||||
| according to Section 4.3.14. An implementation MAY use both | ||||
| implementation alternatives, depending on warm versus cold start, | ||||
| respectively. | ||||
| 4.4.30 printer-current-time (dateTime) | In other words, if the device or devices that the Printer is | |||
| representing are restarted or power cycled, the Printer MAY continue | ||||
| counting this value or MAY reset this value to 1 depending on | ||||
| implementation. However, if the Printer software ceases running, and | ||||
| restarts without knowing the last value for "printer-up-time", the | ||||
| implementation MUST reset this value to 1. If this value is reset | ||||
| and the Printer has persistent Jobs, the Printer MUST reset the | ||||
| "time-at-xxx (integer)" Event Time Job Status attributes according to | ||||
| Section 5.3.14. An implementation MAY use both implementation | ||||
| alternatives, depending on warm versus cold start, respectively. | ||||
| This Printer attribute indicates the current date and time. This | 5.4.30. printer-current-time (dateTime) | |||
| value is used to populate the Event Time Job Description attributes: | ||||
| "date-time-at-creation", "date-time-at-processing", and "date-time- | ||||
| at-completed" (see Section 4.3.14). | ||||
| The date and time is obtained on a "best efforts basis" and does not | This RECOMMENDED Printer attribute indicates the current date and | |||
| have to be that precise in order to work in practice. A Printer | time. This value is used to populate the Event Time Job Status | |||
| implementation sets the value of this attribute by obtaining the date | attributes: "date-time-at-creation", "date-time-at-processing", and | |||
| and time via some implementation-dependent means, such as getting the | "date-time-at-completed" (see Section 5.3.14). | |||
| value from a network time server, initialization at time of | ||||
| manufacture, or setting by an administrator. See [IPP-IIG] for | ||||
| examples. If an implementation supports this attribute and the | ||||
| implementation knows that it has not yet been set, then the | ||||
| implementation MUST return the value of this attribute using the | ||||
| out-of-band 'no-value' meaning not configured. See the beginning of | ||||
| section 4.1. | ||||
| The time zone of this attribute NEED NOT be the time zone used by | The date and time is obtained on a "best efforts basis" and in | |||
| people located near the Printer object or device. The client MUST | practice does not have to be precise in order to be useful. A | |||
| NOT expect that the time zone of any received 'dateTime' value to be | Printer implementation sets the value of this attribute by obtaining | |||
| in the time zone of the client or in the time zone of the people | the date and time via some implementation-dependent means, such as | |||
| located near the printer. | getting the value from a network time server, initialization at time | |||
| of manufacture, or setting by an Adminstrator. See [RFC3196] and | ||||
| [PWG5100.19] for examples. If an implementation supports this | ||||
| attribute and the implementation knows that it has not yet been set, | ||||
| then the implementation MUST return the value of this attribute using | ||||
| the out-of-band 'no-value' meaning not configured. See the beginning | ||||
| of Section 5.1. | ||||
| The client SHOULD display any dateTime attributes to the user in | The time zone of this attribute might not be the time zone used by | |||
| client local time by converting the 'dateTime' value returned by the | people located near the Printer or device. The Client MUST NOT | |||
| server to the time zone of the client, rather than using the time | expect that the time zone of any received 'dateTime' value to be in | |||
| the time zone of the Client or in the time zone of the people located | ||||
| near the Printer. | ||||
| The Client SHOULD display any dateTime attributes to the user in | ||||
| Client local time by converting the 'dateTime' value returned by the | ||||
| server to the time zone of the Client, rather than using the time | ||||
| zone returned by the Printer in attributes that use the 'dateTime' | zone returned by the Printer in attributes that use the 'dateTime' | |||
| attribute syntax. | attribute syntax. | |||
| 4.4.31 multiple-operation-time-out (integer(1:MAX)) | 5.4.31. multiple-operation-time-out (integer(1:MAX)) | |||
| This Printer attributes identifies the minimum time (in seconds) that | This RECOMMENDED Printer attributes identifies the minimum time (in | |||
| the Printer object waits for additional Send-Document or Send-URI | seconds) that the Printer waits for additional Send-Document or Send- | |||
| operations to follow a still-open Job object before taking any | URI operations to follow a still-open Job before taking any recovery | |||
| recovery actions, such as the ones indicated in section 3.3.1. If | actions, such as the ones indicated in Section 4.3.1. If the Printer | |||
| the Printer object supports the Create-Job and Send-Document | supports the Create-Job and Send-Document operations (see | |||
| operations (see section 3.2.4 and 3.3.1), it MUST support this | Section 4.2.4 and 3.3.1), it MUST support this attribute. | |||
| attribute. | ||||
| It is RECOMMENDED that vendors supply a value for this attribute that | Printers SHOULD use a value between '60' and '240' seconds. An | |||
| is between 60 and 240 seconds. An implementation MAY allow a system | implementation MAY allow an Adminstrator to set this attribute by | |||
| administrator to set this attribute (by means outside this IPP/1.1 | means outside this document. If so, the Adminstrator MAY be able to | |||
| document). If so, the system administrator MAY be able to set values | set values outside this range. | |||
| outside this range. | ||||
| 4.4.32 compression-supported (1setOf type3 keyword) | 5.4.32. compression-supported (1setOf type2 keyword) | |||
| This REQUIRED Printer attribute identifies the set of supported | This REQUIRED Printer attribute identifies the set of supported | |||
| compression algorithms for document data. Compression only applies | compression algorithms for Document data. Compression only applies | |||
| to the document data; compression does not apply to the encoding of | to the Document data; compression does not apply to the encoding of | |||
| the IPP operation itself. The supported values are used to validate | the IPP operation itself. The supported values are used to validate | |||
| the client supplied "compression" operation attributes in Print-Job, | the Client supplied "compression" operation attributes in Print-Job | |||
| Send-Document, and Send-URI requests. | and Send-Document requests. | |||
| Standard keyword values are : | Standard keyword values defined in this document are: | |||
| 'none': no compression is used. | o 'none': no compression is used. | |||
| 'deflate': ZIP public domain inflate/deflate) compression technology | ||||
| in RFC 1951 [RFC1951] | o 'deflate': ZIP inflate/deflate compression technology described in | |||
| 'gzip' GNU zip compression technology described in RFC 1952 | RFC 1951 [RFC1951]. | |||
| o 'gzip': GNU zip compression technology described in RFC 1952 | ||||
| [RFC1952]. | [RFC1952]. | |||
| 'compress': UNIX compression technology in RFC 1977 [RFC1977] | o 'compress': UNIX compression technology described in RFC 1977 | |||
| [RFC1977]. | ||||
| 4.4.33 job-k-octets-supported (rangeOfInteger(0:MAX)) | 5.4.33. job-k-octets-supported (rangeOfInteger(0:MAX)) | |||
| This Printer attribute specifies the upper and lower bounds of total | This Printer attribute specifies the upper and lower bounds of total | |||
| sizes of jobs in K octets, i.e., in units of 1024 octets. The | sizes of Jobs in K octets, i.e., in units of 1024 octets. The | |||
| supported values are used to validate the client supplied "job-k- | supported values are used to validate the Client supplied "job- | |||
| octets" operation attributes in create requests. The corresponding | k-octets" operation attribute in Job Creation requests. The | |||
| job description attribute "job-k-octets" is defined in section | corresponding Job Description attribute "job-k-octets" is defined in | |||
| 4.3.17.1. | Section 5.3.17.1. | |||
| 4.4.34 job-impressions-supported (rangeOfInteger(0:MAX)) | 5.4.34. job-impressions-supported (rangeOfInteger(0:MAX)) | |||
| This Printer attribute specifies the upper and lower bounds for the | This RECOMMENDED Printer attribute specifies the upper and lower | |||
| number of impressions per job. The supported values are used to | bounds for the number of Impressions per Job. The supported values | |||
| validate the client supplied "job-impressions" operation attributes | are used to validate the Client supplied "job-impressions" operation | |||
| in create requests. The corresponding job description attribute | attribute in Job Creation requests. The corresponding Job | |||
| "job-impressions" is defined in section 4.3.17.2. | Description attribute "job-impressions" is defined in | |||
| Section 5.3.17.2. | ||||
| 4.4.35 job-media-sheets-supported (rangeOfInteger(0:MAX)) | 5.4.35. job-media-sheets-supported (rangeOfInteger(0:MAX)) | |||
| This Printer attribute specifies the upper and lower bounds for the | This Printer attribute specifies the upper and lower bounds for the | |||
| number of media sheets per job. The supported values are used to | number of Media Sheets per Job. The supported values are used to | |||
| validate the client supplied "job-media-sheets" operation attributes | validate the Client supplied "job-media-sheets" operation attribute | |||
| in create requests. The corresponding Job attribute "job-media- | in Job Creation requests. The corresponding Job attribute "job- | |||
| sheets" is defined in section 4.3.17.3. | media-sheets" is defined in Section 5.3.17.3. | |||
| 4.4.36 pages-per-minute (integer(0:MAX)) | 5.4.36. pages-per-minute (integer(0:MAX)) | |||
| This Printer attributes specifies the nominal number of pages per | This RECOMMENDED Printer attributes specifies the nominal number of | |||
| minute to the nearest whole number which may be generated by this | pages per minute to the nearest whole number which can be generated | |||
| printer (e.g., simplex, black-and-white). This attribute is | by this Printer (e.g., simplex, black-and-white). This attribute is | |||
| informative, not a service guarantee. Generally, it is the value | informative, not a service guarantee. Generally, it is the value | |||
| used in the marketing literature to describe the device. | used in the marketing literature to describe the speed of the device. | |||
| A value of 0 indicates a device that takes more than two minutes to | A value of 0 indicates a device that takes more than two minutes to | |||
| process a page. | process a page. | |||
| 4.4.37 pages-per-minute-color (integer(0:MAX)) | 5.4.37. pages-per-minute-color (integer(0:MAX)) | |||
| This Printer attributes specifies the nominal number of pages per | This RECOMMENDED Printer attributes specifies the nominal number of | |||
| minute to the nearest whole number which may be generated by this | pages per minute to the nearest whole number which can be generated | |||
| printer when printing color (e.g., simplex, color). For purposes of | by this Printer when printing color (e.g., simplex, color). For | |||
| this attribute, "color" means the same as for the "color-supported" | purposes of this attribute, "color" means the same as for the "color- | |||
| attribute, namely, the device is capable of any type of color | supported" attribute, namely, the device is capable of any type of | |||
| printing at all, including highlight color. This attribute is | color printing at all, including highlight color. This attribute is | |||
| informative, not a service guarantee. Generally, it is the value | informative, not a service guarantee. Generally, it is the value | |||
| used in the marketing literature to describe the color capabilities | used in the marketing literature to describe the color capabilities | |||
| of this device. | of this device. | |||
| A value of 0 indicates a device that takes more than two minutes to | A value of 0 indicates a device that takes more than two minutes to | |||
| process a page. | process a page in color. | |||
| If a color device has several color modes, it MAY use the pages-per- | If a color device has several color modes, it MAY use the pages-per- | |||
| minute value for this attribute that corresponds to the mode that | minute value for this attribute that corresponds to the mode that | |||
| produces the highest number. | produces the highest number. | |||
| Black and white only printers MUST NOT support this attribute. If | Black and white only printers MUST NOT support this attribute. If | |||
| this attribute is present, then the "color-supported" Printer | this attribute is present, then the "color-supported" Printer | |||
| description attribute MUST be present and have a 'true' value. | Description attribute MUST be present and have a 'true' value. | |||
| The values of these two attributes returned by the Get-Printer- | The values of these two attributes returned by the Get-Printer- | |||
| Attributes operation MAY be affected by the "document-format" | Attributes operation MAY be affected by the "document-format" | |||
| attribute supplied by the client in the Get-Printer-Attributes | attribute supplied by the Client in the Get-Printer-Attributes | |||
| request. In other words, the implementation MAY have different | request. In other words, the implementation MAY have different | |||
| speeds depending on the document format being processed. See section | speeds depending on the Document format being processed. See | |||
| 3.2.5.1 Get-Printer-Attributes. | Section 4.2.5.1 Get-Printer-Attributes. | |||
| 5. Conformance | 6. Conformance | |||
| This section describes conformance issues and requirements. This | This section describes conformance issues and requirements. This | |||
| document introduces model entities such as objects, operations, | document introduces model entities such as objects, operations, | |||
| attributes, attribute syntaxes, and attribute values. These | attributes, attribute syntaxes, and attribute values. These | |||
| conformance sections describe the conformance requirements which | conformance sections describe the conformance requirements which | |||
| apply to these model entities. | apply to these model entities. | |||
| 5.1 Client Conformance Requirements | 6.1. Client Conformance Requirements | |||
| This section describes the conformance requirements for a client (see | This section describes the conformance requirements for a Client (see | |||
| section 2.1), whether it be: | Section 3.1), whether it be: | |||
| 1. contained within software controlled by an end user, e.g. | 1. contained within software controlled by an End User, e.g. | |||
| activated by the "Print" menu item in an application that sends | activated by the "Print" menu item in an application that sends | |||
| IPP requests or | IPP requests or | |||
| 2. the print server component that sends IPP requests to either an | 2. the print server component that sends IPP requests to either an | |||
| output device or another "downstream" print server. | Output Device or another "downstream" print server. | |||
| A conforming client MUST support all REQUIRED operations as defined | A conforming Client MUST support all REQUIRED operations as defined | |||
| in this document. For each attribute included in an operation | in this document. For each attribute included in an operation | |||
| request, a conforming client MUST supply a value whose type and value | request, a conforming Client MUST supply a value whose type and value | |||
| syntax conforms to the requirements of the Model document as | syntax conforms to the requirements of the Model document as | |||
| specified in Sections 3 and 4. A conforming client MAY supply any | specified in Sections 4 and 5. A conforming Client MAY supply any | |||
| IETF standards track extensions and/or vendor extensions in an | standards track extensions and/or vendor extensions in an operation | |||
| operation request, as long as the extensions meet the requirements in | request, as long as the extensions meet the requirements in | |||
| Section 6. | Section 7. | |||
| Otherwise, there are no conformance requirements placed on the user | ||||
| interfaces provided by IPP clients or their applications. For | ||||
| example, one application might not allow an end user to submit | ||||
| multiple documents per job, while another does. One application | ||||
| might first query a Printer object in order to supply a graphical | ||||
| user interface (GUI) dialogue box with supported and default values | ||||
| whereas a different implementation might not. | ||||
| When sending a request, an IPP client NEED NOT supply any attributes | While this document does not define conformance requirements for the | |||
| that are indicated as OPTIONALLY supplied by the client. | user interfaces provided by IPP Clients or their applications, best | |||
| practices for user interfaces are defined in [PWG5100.19]. | ||||
| A client MUST be able to accept any of the attribute syntaxes defined | A Client MUST be able to accept any of the attribute syntaxes defined | |||
| in Section 4.1, including their full range, that may be returned to | in Section 5.1, including their full range, that can be returned to | |||
| it in a response from a Printer object. In particular for each | it in a response from a Printer. In particular for each attribute | |||
| attribute that the client supports whose attribute syntax is 'text', | that the Client supports whose attribute syntax is 'text', the Client | |||
| the client MUST accept and process both the 'textWithoutLanguage' and | MUST accept and process both the 'textWithoutLanguage' and | |||
| 'textWithLanguage' forms. Similarly, for each attribute that the | 'textWithLanguage' forms. Similarly, for each attribute that the | |||
| client supports whose attribute syntax is 'name', the client MUST | Client supports whose attribute syntax is 'name', the Client MUST | |||
| accept and process both the 'nameWithoutLanguage' and | accept and process both the 'nameWithoutLanguage' and | |||
| 'nameWithLanguage' forms. For presentation purposes, truncation of | 'nameWithLanguage' forms. For presentation purposes, truncation of | |||
| long attribute values is not recommended. A recommended approach | long attribute values is not recommended. A recommended approach | |||
| would be for the client implementation to allow the user to scroll | would be for the Client implementation to allow the user to scroll | |||
| through long attribute values. | through long attribute values. | |||
| A response MAY contain attribute groups, attributes, attribute | A response MAY contain attribute groups, attributes, attribute | |||
| syntaxes, values, and status codes that the client does not expect. | syntaxes, values, and status codes that the Client does not expect. | |||
| Therefore, a client implementation MUST gracefully handle such | Therefore, a Client implementation MUST gracefully handle such | |||
| responses and not refuse to inter-operate with a conforming Printer | responses and not refuse to interoperate with a conforming Printer | |||
| that is returning IETF standards track extension or vendor | that is returning standards track extension or vendor extensions, | |||
| extensions, including attribute groups, attributes, attribute | including attribute groups, attributes, attribute syntaxes, attribute | |||
| syntaxes, attribute values, status codes, and out-of-band attribute | values, status codes, and out-of-band attribute values that conform | |||
| values that conform to Section 6. Clients may choose to ignore any | to Section 7. Clients can choose to ignore any parameters, attribute | |||
| parameters, attribute groups, attributes, attribute syntaxes, or | groups, attributes, attribute syntaxes, or values that they do not | |||
| values that they do not understand. | understand. | |||
| While a client is sending data to a printer, it SHOULD do its best to | While a Client is sending data to a Printer, it SHOULD do its best to | |||
| prevent a channel from being closed by a lower layer when the channel | prevent a channel from being closed by a lower layer when the channel | |||
| is blocked (i.e. flow-controlled off) for whatever reason, e.g. 'out | is blocked (i.e. flow-controlled off) for whatever reason, e.g. 'out | |||
| of paper' or 'job ahead hasn't freed up enough memory'. However, the | of paper' or 'Job ahead hasn't freed up enough memory'. However, the | |||
| layer that launched the print submission (e.g. an end user) MAY close | layer that launched the print submission (e.g. an End User) MAY close | |||
| the channel in order to cancel the job. When a client closes a | the channel in order to cancel the Job. When a Client closes a | |||
| channel, a Printer MAY print all or part of the received portion of | channel, a Printer MAY print all or part of the received portion of | |||
| the document. See the "Encoding and Transport" document [RFC2910] | the Document. See the "Encoding and Transport" document [RFC2910bis] | |||
| for more details. | for more details. | |||
| A client MUST support Client Authentication as defined in the IPP/1.1 | A Client MUST support Client Authentication as defined in the IPP/1.1 | |||
| Encoding and Transport document [RFC2910]. A client SHOULD support | Encoding and Transport document [RFC2910bis]. A Client SHOULD | |||
| Operation Privacy and Server Authentication as defined in the IPP/1.1 | support Operation Privacy and Server Authentication as defined in the | |||
| Encoding and Transport document [RFC2910]. See also section 8 of | IPP/1.1 Encoding and Transport document [RFC2910bis]. See also | |||
| this document. | Section 9 of this document. | |||
| 5.2 IPP Object Conformance Requirements | 6.2. IPP Object Conformance Requirements | |||
| This section specifies the conformance requirements for conforming | This section specifies the conformance requirements for conforming | |||
| implementations of IPP objects (see section 2). These requirements | implementations of IPP objects (see Section 3). These requirements | |||
| apply to an IPP object whether it is: | apply to an IPP object whether it is: | |||
| (1) an (embedded) device component that accepts IPP requests and | (1) an (embedded) device component that accepts IPP requests and | |||
| controls the device or | controls the device or | |||
| (2) a component of a print server that accepts IPP requests (where | (2) a component of a print server that accepts IPP requests (where | |||
| the print server control one or more networked devices using IPP or | the print server control one or more networked devices using IPP or | |||
| other protocols). | other protocols). | |||
| 5.2.1 Objects | 6.2.1. Objects | |||
| Conforming implementations MUST implement all of the model objects as | Conforming implementations MUST implement all of the model objects as | |||
| defined in this document in the indicated sections: | defined in this document in the indicated sections: | |||
| Section 2.1 - Printer Object | Section 3.1 - Printer Object | |||
| Section 2.2 - Job Object | ||||
| 5.2.2 Operations | Section 3.2 - Job Object | |||
| 6.2.2. Operations | ||||
| Conforming IPP object implementations MUST implement all of the | Conforming IPP object implementations MUST implement all of the | |||
| REQUIRED model operations, including REQUIRED responses, as defined | REQUIRED model operations, including REQUIRED responses, as defined | |||
| in this document in the indicated sections: | in this document in the indicated sections. Table 20 lists the | |||
| operations for a Printer, while Table 21 lists the operations for a | ||||
| Job. | ||||
| For a Printer object: | +----------------------------------------+-------------+ | |||
| Print-Job (section 3.2.1) REQUIRED | | Operation | Conformance | | |||
| Print-URI (section 3.2.2) OPTIONAL | +----------------------------------------+-------------+ | |||
| Validate-Job (section 3.2.3) REQUIRED | | Print-Job (Section 4.2.1) | REQUIRED | | |||
| Create-Job (section 3.2.4) OPTIONAL | +----------------------------------------+-------------+ | |||
| Get-Printer-Attributes (section 3.2.5) REQUIRED | | Print-URI (Section 4.2.2) | OPTIONAL | | |||
| Get-Jobs (section 3.2.6) REQUIRED | +----------------------------------------+-------------+ | |||
| Pause-Printer (section 3.2.7) OPTIONAL | | Validate-Job (Section 4.2.3) | REQUIRED | | |||
| Resume-Printer (section 3.2.8) OPTIONAL | +----------------------------------------+-------------+ | |||
| Purge-Jobs (section 3.2.9) OPTIONAL | | Create-Job (Section 4.2.4) | RECOMMENDED | | |||
| +----------------------------------------+-------------+ | ||||
| | Get-Printer-Attributes (Section 4.2.5) | REQUIRED | | ||||
| +----------------------------------------+-------------+ | ||||
| | Get-Jobs (Section 4.2.6) | REQUIRED | | ||||
| +----------------------------------------+-------------+ | ||||
| | Pause-Printer (Section 4.2.7) | OPTIONAL | | ||||
| +----------------------------------------+-------------+ | ||||
| | Resume-Printer (Section 4.2.8) | OPTIONAL | | ||||
| +----------------------------------------+-------------+ | ||||
| | Purge-Jobs (Section 4.2.9) | SHOULD NOT | | ||||
| +----------------------------------------+-------------+ | ||||
| For a Job object: | Table 20: Conformance Requirements for Printer Operations | |||
| Send-Document (section 3.3.1) OPTIONAL | ||||
| Send-URI (section 3.3.2) OPTIONAL | +------------------------------------+-------------+ | |||
| Cancel-Job (section 3.3.3) REQUIRED | | Operation | Conformance | | |||
| Get-Job-Attributes (section 3.3.4) REQUIRED | +------------------------------------+-------------+ | |||
| Hold-Job (section 3.3.5) OPTIONAL | | Send-Document (Section 4.3.1) | RECOMMENDED | | |||
| Release-Job (section 3.3.6) OPTIONAL | +------------------------------------+-------------+ | |||
| Restart-Job (section 3.3.7) OPTIONAL | | Send-URI (Section 4.3.2) | RECOMMENDED | | |||
| +------------------------------------+-------------+ | ||||
| | Cancel-Job (Section 4.3.3) | REQUIRED | | ||||
| +------------------------------------+-------------+ | ||||
| | Get-Job-Attributes (Section 4.3.4) | REQUIRED | | ||||
| +------------------------------------+-------------+ | ||||
| | Hold-Job (Section 4.3.5) | OPTIONAL | | ||||
| +------------------------------------+-------------+ | ||||
| | Release-Job (Section 4.3.6) | OPTIONAL | | ||||
| +------------------------------------+-------------+ | ||||
| | Restart-Job (Section 4.3.7) | SHOULD NOT | | ||||
| +------------------------------------+-------------+ | ||||
| Table 21: Conformance Requirements for Job Operations | ||||
| Conforming IPP objects MUST support all REQUIRED operation attributes | Conforming IPP objects MUST support all REQUIRED operation attributes | |||
| and all values of such attributes if so indicated in the description. | and all values of such attributes if so indicated in the description. | |||
| Conforming IPP objects MUST ignore all unsupported or unknown | Conforming IPP objects MUST ignore all unsupported or unknown | |||
| operation attributes or operation attribute groups received in a | operation attributes or operation attribute groups received in a | |||
| request, but MUST reject a request that contains a supported | request, but MUST reject a request that contains a supported | |||
| operation attribute that contains an unsupported value. | operation attribute that contains an unsupported value. | |||
| Conforming IPP objects MAY return operation responses that contain | Conforming IPP objects MAY return operation responses that contain | |||
| attributes groups, attributes names, attribute syntaxes, attribute | attributes groups, attributes names, attribute syntaxes, attribute | |||
| values, and status codes that are extensions to this standard. The | values, and status codes that are extensions to this standard. The | |||
| additional attribute groups MAY occur in any order. | additional attribute groups MAY occur in any order. | |||
| The following section on object attributes specifies the support | The following section on object attributes specifies the support | |||
| required for object attributes. | required for object attributes. | |||
| 5.2.3 IPP Object Attributes | 6.2.3. IPP Object Attributes | |||
| Conforming IPP objects MUST support all of the REQUIRED object | Conforming IPP objects MUST support all of the REQUIRED object | |||
| attributes, as defined in this document in the indicated sections. | attributes, as defined in this document in the indicated sections. | |||
| If an object supports an attribute, it MUST support only those values | If an object supports an attribute, it MUST support only those values | |||
| specified in this document or through the extension mechanism | specified in this document or through the extension mechanism | |||
| described in section 5.2.4. It MAY support any non-empty subset of | described in Section 6.2.4. It MAY support any non-empty subset of | |||
| these values. That is, it MUST support at least one of the specified | these values. That is, it MUST support at least one of the specified | |||
| values and at most all of them. | values and at most all of them. | |||
| 5.2.4 Versions | 6.2.4. Versions | |||
| IPP/1.1 clients MUST meet the conformance requirements for clients | IPP/1.1 Clients MUST meet the conformance requirements for Clients | |||
| specified in this document and [RFC2910]. IPP/1.1 clients MUST send | specified in this document and [RFC2910bis]. IPP/1.1 Clients MUST be | |||
| requests containing a "version-number" parameter with a '1.1' value. | capable of sending requests containing a "version-number" parameter | |||
| with a value of '1.1'. | ||||
| IPP/1.1 Printer and Job objects MUST meet the conformance | IPP/1.1 Printer and Job objects MUST meet the conformance | |||
| requirements for IPP objects specified in this document and | requirements for IPP objects specified in this document and | |||
| [RFC2910]. IPP/1.1 objects MUST accept requests containing a | [RFC2910bis]. IPP/1.1 objects MUST accept requests containing a | |||
| "version-number" parameter with a '1.1' value (or reject the request | "version-number" parameter with a '1.1' value or reject the request | |||
| if the operation is not supported). | if the operation is not supported. | |||
| It is beyond the scope of this specification to mandate conformance | It is beyond the scope of this specification to mandate conformance | |||
| with previous versions. IPP/1.1 was deliberately designed, however, | with other IPP versions. However, IPP was deliberately designed to | |||
| to make supporting previous versions easy. It is worth noting that, | make supporting different versions easy. IPP/1.1 Printer | |||
| at the time of composing this specification (1999), we would expect | implementations MUST: | |||
| IPP/1.1 Printer implementations to: | ||||
| understand any valid request in the format of IPP/1.0, or 1.1; | o decode and process any well-formed IPP/1.1 request; and | |||
| respond appropriately with a response containing the same | o respond appropriately with a response containing the same | |||
| "version-number" parameter value used by the client in the request. | "version-number" parameter value used by the Client in the | |||
| request. | ||||
| And we would expect IPP/1.1 clients to: | IPP/1.1 Client implementations MUST: | |||
| understand any valid response in the format of IPP/1.0, or 1.1. | o decode and process any well-formed IPP/1.1 response. | |||
| It is recommended that IPP/1.1 clients try supplying alternate | IPP Clients SHOULD try supplying alternate version numbers if they | |||
| version numbers if they receive a 'server-error-version-not- | receive a 'server-error-version-not-supported' error return in a | |||
| supported' error return in a response. | response. | |||
| 5.2.5 Extensions | 6.2.5. Extensions | |||
| A conforming IPP object MAY support IETF standards track extensions | A conforming IPP object MAY support standards track extensions and | |||
| and vendor extensions, as long as the extensions meet the | vendor extensions, as long as the extensions meet the requirements | |||
| requirements specified in Section 6. | specified in Section 7. | |||
| For each attribute included in an operation response, a conforming | For each attribute included in an operation response, a conforming | |||
| IPP object MUST return a value whose type and value syntax conforms | IPP object MUST return a value whose type and value syntax conforms | |||
| to the requirement of the Model document as specified in Sections 3 | to the requirement of the Model document as specified in Sections 4 | |||
| and 4. | and 5. | |||
| 5.2.6 Attribute Syntaxes | 6.2.6. Attribute Syntaxes | |||
| An IPP object MUST be able to accept any of the attribute syntaxes | An IPP object MUST be able to accept any of the attribute syntaxes | |||
| defined in Section 4.1, including their full range, in any operation | defined in Section 5.1, including their full range, in any operation | |||
| in which a client may supply attributes or the system administrator | in which a Client can supply attributes or the Adminstrator can | |||
| may configure attributes (by means outside the scope of this IPP/1.1 | configure attributes (by means outside the scope of this IPP/1.1 | |||
| document). In particular for each attribute that the IPP object | document). In particular for each attribute that the IPP object | |||
| supports whose attribute syntax is 'text', the IPP object MUST accept | supports whose attribute syntax is 'text', the IPP object MUST accept | |||
| and process both the 'textWithoutLanguage' and 'textWithLanguage' | and process both the 'textWithoutLanguage' and 'textWithLanguage' | |||
| forms. Similarly, for each attribute that the IPP object supports | forms. Similarly, for each attribute that the IPP object supports | |||
| whose attribute syntax is 'name', the IPP object MUST accept and | whose attribute syntax is 'name', the IPP object MUST accept and | |||
| process both the 'nameWithoutLanguage' and 'nameWithLanguage' forms. | process both the 'nameWithoutLanguage' and 'nameWithLanguage' forms. | |||
| Furthermore, an IPP object MUST return attributes to the client in | Furthermore, an IPP object MUST return attributes to the Client in | |||
| operation responses that conform to the syntax specified in Section | operation responses that conform to the syntax specified in | |||
| 4.1, including their full range if supplied previously by a client. | Section 5.1, including their full range if supplied previously by a | |||
| Client. | ||||
| 5.2.7 Security | 6.2.7. Security | |||
| An IPP Printer implementation SHOULD contain support for Client | An IPP Printer implementation SHOULD contain support for Client | |||
| Authentication as defined in the IPP/1.1 Encoding and Transport | Authentication as defined in the IPP/1.1 Encoding and Transport | |||
| document [RFC2910]. A Printer implementation MAY allow an | document [RFC2910bis]. A Printer implementation MAY allow an | |||
| administrator to configure the Printer so that all, some, or none of | Adminstrator to configure the Printer so that all, some, or none of | |||
| the users are authenticated. See also section 8 of this document. | the users are authenticated. See also Section 9 of this document. | |||
| An IPP Printer implementation SHOULD contain support for Operation | An IPP Printer implementation SHOULD contain support for Operation | |||
| Privacy and Server Authentication as defined in the IPP/1.1 Encoding | Privacy and Server Authentication as defined in the IPP/1.1 Encoding | |||
| and Transport document [RFC2910]. A Printer implementation MAY allow | and Transport document [RFC2910bis]. A Printer implementation MAY | |||
| an administrator to configure the degree of support for Operation | allow an Adminstrator to configure the degree of support for | |||
| Privacy and Server Authentication. See also section 8 of this | Operation Privacy and Server Authentication. See also Section 9 of | |||
| document. | this document. | |||
| Security MUST NOT be compromised when a client supplies a lower | Security MUST NOT be compromised when a Client supplies a lower | |||
| "version-number" parameter in a request. For example, if an IPP/1.1 | "version-number" parameter in a request. For example, if an IPP/1.1 | |||
| conforming Printer object accepts version '1.0' requests and is | conforming Printer accepts version '1.0' requests and is configured | |||
| configured to enforce Digest Authentication, it MUST do the same for | to enforce Digest Authentication, it MUST do the same for a version | |||
| a version '1.0' request. | '1.0' request. | |||
| 5.3 Charset and Natural Language Requirements | 6.3. Charset and Natural Language Requirements | |||
| All clients and IPP objects MUST support the 'utf-8' charset as | All Clients and IPP objects MUST support the 'utf-8' charset as | |||
| defined in section 4.1.7. | defined in Section 5.1.8. | |||
| IPP objects MUST be able to accept any client request which correctly | IPP objects MUST be able to accept any Client request which correctly | |||
| uses the "attributes-natural-language" operation attribute or the | uses the "attributes-natural-language" operation attribute or the | |||
| Natural Language Override mechanism on any individual attribute | Natural Language Override mechanism on any individual attribute | |||
| whether or not the natural language is supported by the IPP object. | whether or not the natural language is supported by the IPP object. | |||
| If an IPP object supports a natural language, then it MUST be able to | If an IPP object supports a natural language, then it MUST be able to | |||
| translate (perhaps by table lookup) all generated 'text' or 'name' | translate (perhaps by table lookup) all generated 'text' or 'name' | |||
| attribute values into one of the supported languages (see section | attribute values into one of the supported languages (see | |||
| 3.1.4). That is, the IPP object that supports a natural language | Section 4.1.4). | |||
| NEED NOT be a general purpose translator of any arbitrary 'text' or | ||||
| 'name' value supplied by the client into that natural language. | ||||
| However, the object MUST be able to translate (automatically | ||||
| generate) any of its own attribute values and messages into that | ||||
| natural language. | ||||
| 6. IANA Considerations | 7. IANA Considerations | |||
| This section describes the procedures for defining semantics for the | This section describes the procedures for defining semantics for the | |||
| following IETF standards track extensions and vendor extensions to | following standards track extensions and vendor extensions to the | |||
| the IPP/1.1 Model and Semantics document: | IPP/1.1 Model and Semantics document: | |||
| 1. keyword attribute values | 1. keyword attribute values | |||
| 2. enum attribute values | ||||
| 3. attributes | ||||
| 4. attribute syntaxes | ||||
| 5. operations | ||||
| 6. attribute groups | ||||
| 7. status codes | ||||
| 8. out-of-band attribute values | ||||
| Extensions registered for use with IPP/1.1 are OPTIONAL for client | 2. enum attribute values | |||
| and IPP object conformance to the IPP/1.1 "Model and Semantics" | ||||
| document (this document). | ||||
| These extension procedures are aligned with the guidelines as set | 3. attributes | |||
| forth by the IESG [IANA-CON]. Section 11 describes how to propose | ||||
| new registrations for consideration. IANA will reject registration | ||||
| proposals that leave out required information or do not follow the | ||||
| appropriate format described in Section 11. The IPP/1.1 Model and | ||||
| Semantics document may also be extended by an appropriate RFC that | ||||
| specifies any of the above extensions. | ||||
| 6.1 Typed 'keyword' and 'enum' Extensions | 4. attribute syntaxes | |||
| IPP allows for 'keyword' and 'enum' extensions (see sections 4.1.2.3 | 5. operations | |||
| and 4.1.4). This document uses prefixes to the 'keyword' and 'enum' | ||||
| basic attribute syntax type in order to communicate extra information | ||||
| to the reader through its name. This extra information is not | ||||
| represented in the protocol because it is unimportant to a client or | ||||
| Printer object. The list below describes the prefixes and their | ||||
| meaning. | ||||
| "type1": This IPP specification document must be revised (or | 6. attribute groups | |||
| another IETF standards track document which augments this | ||||
| document) to add a new keyword or a new enum. No vendor | ||||
| defined keywords or enums are allowed. | ||||
| "type2": Implementers can, at any time, add new keyword or enum | 7. status codes | |||
| values by proposing the complete specification to IANA: | ||||
| iana@iana.org | 8. out-of-band attribute values | |||
| IANA will forward the registration proposal to the IPP | Extensions registered for use with IPP/1.1 are OPTIONAL for Client | |||
| Designated Expert who will review the proposal with a mailing | and IPP object conformance to the IPP/1.1 "Model and Semantics" | |||
| list that the Designated Expert keeps for this purpose. | document (this document). | |||
| Initially, that list will be the mailing list used by the IPP | ||||
| WG: | ||||
| ipp@pwg.org | These extension procedures are aligned with the guidelines as set | |||
| forth by the IESG [IANA-CON]. Appendix A describes how to propose | ||||
| new registrations for consideration. IANA will reject registration | ||||
| proposals that leave out required information or do not follow the | ||||
| appropriate format described in Appendix A. The IPP/1.1 Model and | ||||
| Semantics document can also be extended by an appropriate standards | ||||
| track document that specifies any of the above extensions. | ||||
| even after the IPP WG is disbanded as permitted by [IANA-CON]. | 7.1. Typed 'keyword' and 'enum' Extensions | |||
| The IPP Designated Expert is appointed by the IESG Area | IPP allows for 'keyword' and 'enum' extensions (see Sections 5.1.3.3 | |||
| Director responsible for IPP, according to [IANA-CON]. | and 5.1.5). This document uses prefixes to the 'keyword' and 'enum' | |||
| basic attribute syntax type in order to communicate extra information | ||||
| to the reader through its name. This extra information is not | ||||
| represented in the protocol because it is unimportant to a Client or | ||||
| Printer. The list below describes the prefixes and their meaning. | ||||
| When a type2 keyword or enum is approved, the IPP Designated | "type1": This IPP specification document MUST be revised (or another | |||
| Expert becomes the point of contact for any future maintenance | standards track document which augments this document) to add a new | |||
| that might be required for that registration. | keyword or a new enum. No vendor defined keywords or enums are | |||
| allowed. | ||||
| "type3": Implementers can, at any time, add new keyword and enum | "type2": Implementors can, at any time, add new keyword or enum | |||
| values by submitting the complete specification to IANA as for | values by proposing the complete specification to IANA: | |||
| type2 who will forward the proposal to the IPP Designated | ||||
| Expert. While no additional technical review is required, the | ||||
| IPP Designated Expert may, at his/her discretion, forward the | ||||
| proposal to the same mailing list as for type2 registrations | ||||
| for advice and comment. | ||||
| When a type3 keyword or enum is approved by the IPP Designated | iana@iana.org | |||
| Expert, the original proposer becomes the point of contact for | ||||
| any future maintenance that might be required for that | ||||
| registration. | ||||
| For type2 and type3 keywords, the proposer includes the name of the | IANA will forward the registration proposal to the IPP Designated | |||
| keyword in the registration proposal and the name is part of the | Expert(s) who will review the proposal with a mailing list that the | |||
| technical review. | Designated Expert(s) keep for this purpose. Initially, that list | |||
| will be the mailing list used by the PWG IPP WG: | ||||
| After type2 and type3 enums specifications are approved, the IPP | ipp@pwg.org | |||
| Designated Expert in consultation with IANA assigns the next | ||||
| available enum number for each enum value. | ||||
| IANA will publish approved type2 and type3 keyword and enum | The IPP Designated Expert(s) are appointed by the IESG Area Director | |||
| attributes value registration specifications in: | responsible for IPP, according to [IANA-CON]. | |||
| ftp.isi.edu/iana/assignments/ipp/attribute-values/xxx/yyy.txt | When a type2 keyword or enum is approved, the IPP Designated | |||
| Expert(s) become the points of contact for any future maintenance | ||||
| that might be required for that registration. | ||||
| where xxx is the attribute name that specifies the initial values and | For type2 keywords, the proposer includes the name of the keyword in | |||
| yyy.txt is a descriptive file name that contains one or more enums or | the registration proposal and the name is part of the technical | |||
| keywords approved at the same time. For example, if several | review. | |||
| additional enums for stapling are approved for use with the | ||||
| "finishings" attribute (and "finishings-default" and "finishings- | ||||
| supported" attributes), IANA will publish the additional values in | ||||
| the file: | ||||
| ftp.isi.edu/iana/assignments/ipp/attribute- | After type2 enum specifications are approved, the IPP Designated | |||
| values/finishings/stapling.txt | Expert(s), in consultation with IANA, assign the next available enum | |||
| number for each enum value. | ||||
| Note: Some attributes are defined to be: 'type3 keywords' | 'name' | This document defines keyword and enum values for all of the above | |||
| which allows for attribute values to be extended by a site | types. | |||
| administrator with administrator defined names. Such names are not | ||||
| registered with IANA. | ||||
| By definition, each of the three types above assert some sort of | For vendor keyword extensions, implementers SHOULD either: | |||
| registry or review process in order for extensions to be considered | ||||
| valid. Each higher numbered level (1, 2, 3) tends to be decreasingly | ||||
| less stringent than the previous level. Therefore, any typeN value | ||||
| MAY be registered using a process for some typeM where M is less than | ||||
| N, however such registration is NOT REQUIRED. For example, a type3 | ||||
| value MAY be registered in a type 1 manner (by being included in a | ||||
| future version of an IPP specification), however, it is NOT REQUIRED. | ||||
| This document defines keyword and enum values for all of the above | a. follow attribute-specific guidance such as defined in | |||
| types, including type3 keywords. | [PWG5101.1]; or | |||
| For vendor keyword extensions, implementers SHOULD use keywords with | b. use keywords with a suitable distinguishing prefix, such as | |||
| a suitable distinguishing prefix, such as "xxx-" where xxx follows | "xxx-" where xxx follows the syntax rules for keywords (see | |||
| the syntax rules for keywords (see section 4.1.3) and is the | Section 5.1.4) and is the reversed (lowercase) fully qualified | |||
| (lowercase) fully qualified company name registered with IANA for use | company name registered with IANA for use in domain names | |||
| in domain names [RFC1035]. For example, if the company XYZ Corp. had | [RFC1035]. | |||
| obtained the domain name "XYZ.com", then a vendor keyword 'abc' would | ||||
| be: 'xyz.com-abc'. | ||||
| Note: RFC 1035 [RFC1035] indicates that while upper and lower case | For example, if the company Example Corp. had obtained the domain | |||
| letters are allowed in domain names, no significance is attached to | name "example.com", then a vendor keyword 'abc' would be: | |||
| the case. That is, two names with the same spelling but different | 'com.example-abc'. | |||
| case are to be treated as if identical. Also, the labels in a domain | ||||
| name must follow the rules for ARPANET host names: They must start | ||||
| with a letter, end with a letter or digit, and have as interior | ||||
| characters only letters, digits, and hyphen. Labels must be 63 | ||||
| characters or less. Labels are separated by the "." character. | ||||
| For vendor enum extensions, implementers MUST use values in the | For vendor enum extensions, implementers MUST use values in the | |||
| reserved integer range which is 2**30 to 2**31-1. | reserved integer range which is 0x4000000 to 0x7fffffff. | |||
| 6.2 Attribute Extensibility | 7.2. Attribute Extensibility | |||
| Attribute names (see section 4.1.3) are type2 keywords. Therefore, | Attribute names (see Section 5.1.4) are type2 keywords. Therefore, | |||
| new attributes may be registered and have the same status as | new attributes can be registered and have the same status as | |||
| attributes in this document by following the type2 extension rules. | attributes in this document by following the type2 extension rules. | |||
| For vendor attribute extensions, implementers SHOULD use keywords | For vendor attribute extensions, implementers SHOULD use keywords | |||
| with a suitable distinguishing prefix as described in Section 6.1. | with a suitable distinguishing prefix as described in Section 7.1. | |||
| IANA will publish approved attribute registration specifications as | ||||
| separate files: | ||||
| ftp.isi.edu/iana/assignments/ipp/attributes/xxx-yyy.txt | ||||
| where "xxx-yyy" is the new attribute name. | ||||
| If a new Printer object attribute is defined and its values can be | If a new Printer attribute is defined and its values can be affected | |||
| affected by a specific document format, its specification needs to | by a specific Document format, its specification needs to contain the | |||
| contain the following sentence: | following sentence: | |||
| "The value of this attribute returned in a Get-Printer- | "The value of this attribute returned in a Get-Printer-Attributes | |||
| Attributes response MAY depend on the "document-format" | response MAY depend on the "document-format" attribute supplied (see | |||
| attribute supplied (see Section 3.2.5.1)." | Section 4.2.5.1)." | |||
| If the specification does not, then its value in the Get-Printer- | If the specification does not, then its value in the Get-Printer- | |||
| Attributes response MUST NOT depend on the "document-format" supplied | Attributes response MUST NOT depend on the "document-format" supplied | |||
| in the request. When a new Job Template attribute is registered, the | in the request. When a new Job Template attribute is registered, the | |||
| value of the Printer attributes MAY vary with "document-format" | value of the Printer attributes MAY vary with "document-format" | |||
| supplied in the request without the specification having to indicate | supplied in the request without the specification having to indicate | |||
| so. | so. | |||
| 6.3 Attribute Syntax Extensibility | 7.3. Attribute Syntax Extensibility | |||
| Attribute syntaxes (see section 4.1) are like type2 enums. | Attribute syntaxes (see Section 5.1) are like type2 enums. | |||
| Therefore, new attribute syntaxes may be registered and have the same | Therefore, new attribute syntaxes can be registered and have the same | |||
| status as attribute syntaxes in this document by following the type2 | status as attribute syntaxes in this document by following the type2 | |||
| extension rules described in Section 6.1. The initial set of value | extension rules described in Section 7.1. The initial set of value | |||
| codes that identify each of the attribute syntaxes have been assigned | codes that identify each of the attribute syntaxes have been assigned | |||
| in the "Encoding and Transport" document [RFC2910], including a | in the "Encoding and Transport" document [RFC2910bis], including a | |||
| designated range for vendor extension. | designated range for vendor extension. | |||
| For attribute syntaxes, the IPP Designated Expert in consultation | For attribute syntaxes, the IPP Designated Expert(s), in consultation | |||
| with IANA assigns the next attribute syntax code in the appropriate | with IANA, assign the next attribute syntax code in the appropriate | |||
| range as specified in [RFC2910]. IANA will publish approved | range as specified in [RFC2910bis]. | |||
| attribute syntax registration specifications as separate files: | ||||
| ftp.isi.edu/iana/assignments/ipp/attribute-syntaxes/xxx-yyy.txt | ||||
| where 'xxx-yyy' is the new attribute syntax name. | ||||
| 6.4 Operation Extensibility | 7.4. Operation Extensibility | |||
| Operations (see section 3) may also be registered following the type2 | Operations (see Section 4) can also be registered following the type2 | |||
| procedures described in Section 6.1, though major new operations will | procedures described in Section 7.1, though major new operations will | |||
| usually be done by a new standards track RFC that augments this | usually be done by a new standards track document that augments this | |||
| document. For vendor operation extensions, implementers MUST use the | document. For vendor operation extensions, implementers MUST use the | |||
| range for the "operation-id" in requests specified in Section 4.4.15 | range for the "operation-id" in requests specified in Section 5.4.15 | |||
| "operations-supported" Printer attribute. | "operations-supported" Printer attribute. | |||
| For operations, the IPP Designated Expert in consultation with IANA | For operations, the IPP Designated Expert(s), in consultation with | |||
| assigns the next operation-id code as specified in Section 4.4.15. | IANA, assign the next "operation-id" code as specified in | |||
| IANA will publish approved operation registration specifications as | Section 5.4.15. | |||
| separate files: | ||||
| ftp.isi.edu/iana/assignments/ipp/operations/Xxx-Yyy.txt | ||||
| where "Xxx-Yyy" is the new operation name. | 7.5. Attribute Group Extensibility | |||
| 6.5 Attribute Group Extensibility | Attribute groups (see Section 4.1.3) passed in requests and responses | |||
| can be registered following the type2 procedures described in | ||||
| Section 7.1. The initial set of attribute group tags have been | ||||
| assigned in the "Encoding and Transport" document [RFC2910bis], | ||||
| including a designated range for vendor extension. | ||||
| Attribute groups (see section 3.1.3) passed in requests and responses | For attribute groups, the IPP Designated Expert(s), in consultation | |||
| may be registered following the type2 procedures described in Section | with IANA, assign the next attribute group tag code in the | |||
| 6.1. The initial set of attribute group tags have been assigned in | appropriate range as specified in [RFC2910bis]. | |||
| the "Encoding and Transport" document [RFC2910], including a | ||||
| designated range for vendor extension. | ||||
| For attribute groups, the IPP Designated Expert in consultation with | 7.6. Status Code Extensibility | |||
| IANA assigns the next attribute group tag code in the appropriate | ||||
| range as specified in [RFC2910]. IANA will publish approved | ||||
| attribute group registration specifications as separate files: | ||||
| ftp.isi.edu/iana/assignments/ipp/attribute-group-tags/xxx-yyy- | Operation status codes (see Section 4.1.6.1) can also be registered | |||
| tag.txt | following the type2 procedures described in Section 7.1. The values | |||
| for status codes are allocated in ranges as specified in Appendix B | ||||
| for each status code class: | ||||
| where 'xxx-yyy-tag' is the new attribute group tag name. | "informational" - Request received, continuing process | |||
| "successful" - The action was successfully received, understood, and | ||||
| accepted | ||||
| 6.6 Status Code Extensibility | "redirection" - Further action is taken in order to complete the | |||
| request | ||||
| Operation status codes (see section 3.1.6.1) may also be registered | "client-error" - The request contains bad syntax or cannot be | |||
| following the type2 procedures described in Section 6.1. The values | fulfilled | |||
| for status codes are allocated in ranges as specified in Section 14 | ||||
| for each status code class: | ||||
| "informational" - Request received, continuing process | "server-error" - The IPP object failed to fulfill an apparently valid | |||
| "successful" - The action was successfully received, understood, and | request | |||
| accepted | ||||
| "redirection" - Further action must be taken in order to complete the | ||||
| request | ||||
| "client-error" - The request contains bad syntax or cannot be | ||||
| fulfilled | ||||
| "server-error" - The IPP object failed to fulfill an apparently | ||||
| valid request | ||||
| For vendor operation status code extensions, implementers MUST use | For vendor operation status code extensions, implementers MUST use | |||
| the top of each range as specified in Section 13. | the top of each range as specified in Appendix B. | |||
| For operation status codes, the IPP Designated Expert in consultation | ||||
| with IANA assigns the next status code in the appropriate class range | ||||
| as specified in Section 13. IANA will publish approved status code | ||||
| registration specifications as separate files: | ||||
| ftp.isi.edu/iana/assignments/ipp/status-codes/xxx-yyy.txt | ||||
| where "xxx-yyy" is the new operation status code keyword. | For operation status codes, the IPP Designated Expert(s), in | |||
| consultation with IANA, assign the next status code in the | ||||
| appropriate class range as specified in Appendix B. | ||||
| 6.7 Out-of-band Attribute Value Extensibility | 7.7. Out-of-band Attribute Value Extensibility | |||
| Out-of-band attribute values (see the beginning of section 4.1) | Out-of-band attribute values (see the beginning of Section 5.1) | |||
| passed in requests and responses may be registered following the | passed in requests and responses can be registered following the | |||
| type2 procedures described in Section 6.1. The initial set of out- | type2 procedures described in Section 7.1. The initial set of out- | |||
| of-band attribute value tags have been assigned in the "Encoding and | of-band attribute value tags have been assigned in the "Encoding and | |||
| Transport" document [RFC2910]. | Transport" document [RFC2910bis]. | |||
| For out-of-band attribute value tags, the IPP Designated Expert in | ||||
| consultation with IANA assigns the next out-of-band attribute value | ||||
| tag code in the appropriate range as specified in [RFC2910]. IANA | ||||
| will publish approved out-of-band attribute value tags registration | ||||
| specifications as separate files: | ||||
| ftp.isi.edu/iana/assignments/ipp/out-of-band-attribute-value- | ||||
| tags/xxx-yyy-tag.txt | ||||
| where 'xxx-yyy-tag' is the new out-of-band attribute value tag name. | For out-of-band attribute value tags, the IPP Designated Expert(s), | |||
| in consultation with IANA, assign the next out-of-band attribute | ||||
| value tag code in the appropriate range as specified in [RFC2910bis]. | ||||
| 6.8 Registration of MIME types/sub-types for document-formats | 7.8. Registration of MIME types/sub-types for Document formats | |||
| The "document-format" attribute's syntax is 'mimeMediaType'. This | The "document-format" attribute's syntax is 'mimeMediaType'. This | |||
| means that valid values are Internet Media Types (see Section 4.1.9). | means that valid values are Internet Media Types (see | |||
| RFC 2045 [RFC2045] defines the syntax for valid Internet media types. | Section 5.1.10). RFC 2045 [RFC2045] defines the syntax for valid | |||
| IANA is the registry for all Internet media types. | Internet media types. IANA is the registry for all Internet media | |||
| types. | ||||
| 6.9 Registration of charsets for use in 'charset' attribute values | 7.9. Registration of charsets for use in 'charset' attribute values | |||
| The "attributes-charset" attribute's syntax is 'charset'. This means | The "attributes-charset" attribute's syntax is 'charset'. This means | |||
| that valid values are charsets names. When a charset in the IANA | that valid values are charsets names. When a charset in the IANA | |||
| registry has more than one name (alias), the name labeled as | registry has more than one name (alias), the name labeled as | |||
| "(preferred MIME name)", if present, MUST be used (see Section | "(preferred MIME name)", if present, MUST be used (see | |||
| 4.1.7). IANA is the registry for charsets following the procedures | Section 5.1.8). IANA is the registry for charsets following the | |||
| of [RFC2278]. | procedures of [RFC2978]. | |||
| 7. Internationalization Considerations | 8. Internationalization Considerations | |||
| Some of the attributes have values that are text strings and names | Some of the attributes have values that are text strings and names | |||
| which are intended for human understanding rather than machine | which are intended for human understanding rather than machine | |||
| understanding (see the 'text' and 'name' attribute syntaxes in | understanding (see the 'text' and 'name' attribute syntaxes in | |||
| Sections 4.1.1 and 4.1.2). | Sections 5.1.2 and 5.1.3). | |||
| In each operation request, the client | In each operation request, the Client | |||
| - identifies the charset and natural language of the request which | o identifies the charset and natural language of the request which | |||
| affects each supplied 'text' and 'name' attribute value, and | affects each supplied 'text' and 'name' attribute value, and | |||
| - requests the charset and natural language for attributes | o requests the charset and natural language for attributes returned | |||
| returned by the IPP object in operation responses (as described | by the IPP object in operation responses (as described in | |||
| in Section 3.1.4.1). | Section 4.1.4.1). | |||
| In addition, the client MAY separately and individually identify the | In addition, the Client MAY separately and individually identify the | |||
| Natural Language Override of a supplied 'text' or 'name' attribute | Natural Language Override of a supplied 'text' or 'name' attribute | |||
| using the 'textWithLanguage' and 'nameWithLanguage' technique | using the 'textWithLanguage' and 'nameWithLanguage' technique | |||
| described section 4.1.1.2 and 4.1.2.2 respectively. | described Section 5.1.2.2 and 4.1.2.2 respectively. | |||
| All IPP objects MUST support the UTF-8 [RFC2279] charset in all | All IPP objects MUST support the UTF-8 [RFC3629] charset in all | |||
| 'text' and 'name' attributes supported. If an IPP object supports | 'text' and 'name' attributes supported. If an IPP object supports | |||
| more than the UTF-8 charset, the object MUST convert between them in | more than the UTF-8 charset, the object MUST convert between them in | |||
| order to return the requested charset to the client according to | order to return the requested charset to the Client according to | |||
| Section 3.1.4.2. If an IPP object supports more than one natural | Section 4.1.4.2. If an IPP object supports more than one natural | |||
| language, the object SHOULD return 'text' and 'name' values in the | language, the object SHOULD return 'text' and 'name' values in the | |||
| natural language requested where those values are generated by the | natural language requested where those values are generated by the | |||
| Printer (see Section 3.1.4.1). | Printer (see Section 4.1.4.1). | |||
| For Printers that support multiple charsets and/or multiple natural | For Printers that support multiple charsets and/or multiple natural | |||
| languages in 'text' and 'name' attributes, different jobs may have | languages in 'text' and 'name' attributes, different Jobs can have | |||
| been submitted in differing charsets and/or natural languages. All | been submitted in differing charsets and/or natural languages. All | |||
| responses MUST be returned in the charset requested by the client. | responses MUST be returned in the charset requested by the Client. | |||
| However, the Get-Jobs operation uses the 'textWithLanguage' and | However, the Get-Jobs operation uses the 'textWithLanguage' and | |||
| 'nameWithLanguage' mechanism to identify the differing natural | 'nameWithLanguage' mechanism to identify the differing natural | |||
| languages with each job attribute returned. | languages with each Job attribute returned. | |||
| The Printer object also has configured charset and natural language | The Printer also has configured charset and natural language | |||
| attributes. The client can query the Printer object to determine | attributes. The Client can query the Printer to determine the list | |||
| the list of charsets and natural languages supported by the Printer | of charsets and natural languages supported by the Printer and what | |||
| object and what the Printer object's configured values are. See the | the Printer's configured values are. See the "charset-configured", | |||
| "charset-configured", "charset-supported", "natural-language- | "charset-supported", "natural-language-configured", and "generated- | |||
| configured", and "generated-natural-language-supported" Printer | natural-language-supported" Printer Description attributes for more | |||
| description attributes for more details. | details. | |||
| The "charset-supported" attributed identifies the supported charsets. | The "charset-supported" attributed identifies the supported charsets. | |||
| If a charset is supported, the IPP object MUST be capable of | If a charset is supported, the IPP object MUST be capable of | |||
| converting to and from that charset into any other supported charset. | converting to and from that charset into any other supported charset. | |||
| In many cases, an IPP object will support only one charset and it | In many cases, an IPP object will support only one charset and it | |||
| MUST be the UTF-8 charset. | MUST be the UTF-8 charset. | |||
| The "charset-configured" attribute identifies the one supported | The "charset-configured" attribute identifies the one supported | |||
| charset which is the native charset given the current configuration | charset which is the native charset given the current configuration | |||
| of the IPP object (administrator defined). | of the IPP object (Adminstrator defined). | |||
| The "generated-natural-language-supported" attribute identifies the | The "generated-natural-language-supported" attribute identifies the | |||
| set of supported natural languages for generated messages; it is not | set of supported natural languages for generated messages; it is not | |||
| related to the set of natural languages that must be accepted for | related to the set of natural languages that MUST be accepted for | |||
| client supplied 'text' and 'name' attributes. For client supplied | Client supplied 'text' and 'name' attributes. For Client supplied | |||
| 'text' and 'name' attributes, an IPP object MUST accept ALL supplied | 'text' and 'name' attributes, an IPP object MUST accept ALL supplied | |||
| natural languages. Just because a Printer object is currently | natural languages. For example, if a Client supplies a Job name that | |||
| configured to support 'en-us' natural language does not mean that the | is in 'fr-ca' but the Printer only generates 'en-us', the Printer | |||
| Printer object should reject a job if the client supplies a job name | object MUST still accept the Job name value. | |||
| that is in 'fr-ca'. | ||||
| The "natural-language-configured" attribute identifies the one | The "natural-language-configured" attribute identifies the one | |||
| supported natural language for generated messages which is the native | supported natural language for generated messages which is the native | |||
| natural language given the current configuration of the IPP object | natural language given the current configuration of the IPP object | |||
| (administrator defined). | (Adminstrator defined). | |||
| Attributes of type 'text' and 'name' are populated from different | Attributes of type 'text' and 'name' are populated from different | |||
| sources. These attributes can be categorized into following groups | sources. These attributes can be categorized into following groups | |||
| (depending on the source of the attribute): | (depending on the source of the attribute): | |||
| 1. Some attributes are supplied by the client (e.g., the client | 1. Some attributes are supplied by the Client (e.g., the Client | |||
| supplied "job-name", "document-name", and "requesting-user- | supplied "job-name", "document-name", and "requesting-user-name" | |||
| name" operation attributes along with the corresponding Job | operation attributes along with the corresponding Job's "job- | |||
| object's "job-name" and "job-originating-user-name" | name" and "job-originating-user-name" attributes). The IPP | |||
| attributes). The IPP object MUST accept these attributes in | object MUST accept these attributes in any natural language no | |||
| any natural language no matter what the set of supported | matter what the set of supported languages for generated messages | |||
| languages for generated messages | ||||
| 2. Some attributes are supplied by the system administrator (e.g., | ||||
| the Printer object's "printer-name" and "printer-location" | ||||
| attributes). These too can be in any natural language. If the | ||||
| natural language for these attributes is different than what a | ||||
| client requests, then they must be reported using the Natural | ||||
| Language Override mechanism. | ||||
| 3. Some attributes are supplied by the device manufacturer (e.g., | ||||
| the Printer object's "printer-make-and-model" attribute). | ||||
| These too can be in any natural language. If the natural | ||||
| language for these attributes is different than what a client | ||||
| requests, then they must be reported using the Natural Language | ||||
| Override mechanism. | ||||
| 4. Some attributes are supplied by the operator (e.g., the Job | ||||
| object's "job-message-from-operator" attribute). These too can | ||||
| be in any natural language. If the natural language for these | ||||
| attributes is different than what a client requests, then they | ||||
| must be reported using the Natural Language Override mechanism. | ||||
| 5. Some attributes are generated by the IPP object (e.g., the Job | ||||
| object's "job-state-message" attribute, the Printer object's | ||||
| "printer-state-message" attribute, and the "status-message" | ||||
| operation attribute). These attributes can only be in one of | ||||
| the "generated-natural-language-supported" natural languages. | ||||
| If a client requests some natural language for these attributes | ||||
| other than one of the supported values, the IPP object SHOULD | ||||
| respond using the value of the "natural-language-configured" | ||||
| attribute (using the Natural Language Override mechanism if | ||||
| needed). | ||||
| The 'text' and 'name' attributes specified in this version of this | 2. Some attributes are supplied by the Adminstrator (e.g., the | |||
| document (additional ones will be registered according to the | Printer's "printer-name" and "printer-location" attributes). | |||
| procedures in Section 6) are: | These can also be in any natural language. If the natural | |||
| language for these attributes is different than what a Client | ||||
| requests, then they MUST be reported using the Natural Language | ||||
| Override mechanism. | ||||
| Attributes Source | 3. Some attributes are supplied by the device manufacturer (e.g., | |||
| the Printer's "printer-make-and-model" attribute). These can | ||||
| also be in any natural language. If the natural language for | ||||
| these attributes is different than what a Client requests, then | ||||
| they MUST be reported using the Natural Language Override | ||||
| mechanism. | ||||
| Operation Attributes: | 4. Some attributes are supplied by the Operator (e.g., the Job's | |||
| job-name (name) client | "job-message-from-operator" attribute). These can also be in any | |||
| document-name (name) client | natural language. If the natural language for these attributes | |||
| requesting-user-name (name) client | is different than what a Client requests, then they MUST be | |||
| status-message (text) Job or Printer object | reported using the Natural Language Override mechanism. | |||
| detailed-status-message (text) Job or Printer object - | ||||
| see rule 1 | ||||
| document-access-error (text) Job or Printer object - | ||||
| see rule 1 | ||||
| Job Template Attributes: | 5. Some attributes are generated by the IPP object (e.g., the Job's | |||
| job-hold-until (keyword | name) client matches | "job-state-message" attribute, the Printer's "printer-state- | |||
| administrator-configured | message" attribute, and the "status-message" operation | |||
| job-hold-until-default (keyword | name) client matches | attribute). These attributes can only be in one of the | |||
| administrator-configured | "generated-natural-language-supported" natural languages. If a | |||
| job-hold-until-supported (keyword | client matches | Client requests some natural language for these attributes other | |||
| name) administrator-configured | than one of the supported values, the IPP object SHOULD respond | |||
| job-sheets (keyword | name) client matches | using the value of the "natural-language-configured" attribute | |||
| administrator-configured | (using the Natural Language Override mechanism if needed). | |||
| job-sheets-default (keyword | name) client matches | ||||
| administrator-configured | ||||
| job-sheets-supported (keyword | name) client matches | ||||
| administrator-configured | ||||
| media (keyword | name) client matches | ||||
| administrator-configured | ||||
| media-default (keyword | name) client matches | ||||
| administrator-configured | ||||
| media-supported (keyword | name) client matches | ||||
| administrator-configured | ||||
| media-ready (keyword | name) client matches | ||||
| administrator-configured | ||||
| Job Description Attributes: | The 'text' and 'name' attributes specified in this version of this | |||
| job-name (name) client or Printer object | document (additional ones will be registered according to the | |||
| job-originating-user-name (name) Printer object | procedures in Section 7) are shown in Table 22. | |||
| job-state-message (text) Job or Printer object | ||||
| output-device-assigned (name(127)) administrator | ||||
| job-message-from-operator (text(127)) operator | ||||
| job-detailed-status-messages (1setOf Job or Printer object - | ||||
| text) see rule 1 | ||||
| job-document-access-errors (1setOf Job or Printer object - | ||||
| text) see rule 1 | ||||
| Printer Description Attributes: | +-----------------------------------+-------------------------------+ | |||
| printer-name (name(127)) administrator | | Attributes | Source | | |||
| printer-location (text(127)) administrator | +-----------------------------------+-------------------------------+ | |||
| printer-info (text(127)) administrator | | Operation Attributes: | | | |||
| printer-make-and-model (text(127)) administrator or | | | | | |||
| manufacturer | | job-name (name) | Client | | |||
| printer-state-message (text) Printer object | | document-name (name) | Client | | |||
| printer-message-from-operator operator | | requesting-user-name (name) | Client | | |||
| (text(127)) | | status-message (text) | Job or Printer | | |||
| | detailed-status-message (text) | Job or Printer - (note 1) | | ||||
| | document-access-error (text) | Job or Printer - (note 1) | | ||||
| | | | | ||||
| | Job Template Attributes: | | | ||||
| | | | | ||||
| | job-hold-until (keyword | name) | Client matches Adminstrator- | | ||||
| | | configured | | ||||
| | job-hold-until-default (keyword | | Client matches Adminstrator- | | ||||
| | name) | configured | | ||||
| | job-hold-until-supported (keyword | Client matches Adminstrator- | | ||||
| | | name) | configured | | ||||
| | job-sheets (keyword | name) | Client matches Adminstrator- | | ||||
| | | configured | | ||||
| | job-sheets-default (keyword | | Client matches Adminstrator- | | ||||
| | name) | configured | | ||||
| | job-sheets-supported (keyword | | Client matches Adminstrator- | | ||||
| | name) | configured | | ||||
| | media (keyword | name) | Client matches Adminstrator- | | ||||
| | | configured | | ||||
| | media-default (keyword | name) | Client matches Adminstrator- | | ||||
| | | configured | | ||||
| | media-supported (keyword | name) | Client matches Adminstrator- | | ||||
| | | configured | | ||||
| | media-ready (keyword | name) | Client matches Adminstrator- | | ||||
| | | configured | | ||||
| | | | | ||||
| | Job Description Attributes: | | | ||||
| | | | | ||||
| | job-name (name) | Client or Printer | | ||||
| | job-originating-user-name (name) | Printer | | ||||
| | job-state-message (text) | Job or Printer | | ||||
| | output-device-assigned | Adminstrator | | ||||
| | (name(127)) | | | ||||
| | job-message-from-operator | Operator | | ||||
| | (text(127)) | | | ||||
| | job-detailed-status-messages | Job or Printer - (note 1) | | ||||
| | (1setOf text) | | | ||||
| | job-document-access-errors | Job or Printer - (note 1) | | ||||
| | (1setOf text) | | | ||||
| | | | | ||||
| | Printer Description Attributes: | | | ||||
| | | | | ||||
| | printer-name (name(127)) | Adminstrator | | ||||
| | printer-location (text(127)) | Adminstrator | | ||||
| | printer-info (text(127)) | Adminstrator | | ||||
| | printer-make-and-model | Adminstrator or manufacturer | | ||||
| | (text(127)) | | | ||||
| | printer-state-message (text) | Printer | | ||||
| | printer-message-from-operator | Operator | | ||||
| | (text(127)) | | | ||||
| +-----------------------------------+-------------------------------+ | ||||
| Rule 1 - Neither the Printer nor the client localizes these message | Table 22: 'name' and 'text' Attributes | |||
| attributes, since they are intended for use by the system | ||||
| administrator or other experienced technical persons. | ||||
| 8. Security Considerations | Note 1: Neither the Printer nor the Client localizes these message | |||
| attributes, since they are intended for use by the Adminstrator or | ||||
| other experienced technical persons. | ||||
| 9. Security Considerations | ||||
| It is difficult to anticipate the security risks that might exist in | It is difficult to anticipate the security risks that might exist in | |||
| any given IPP environment. For example, if IPP is used within a given | any given IPP environment. For example, if IPP is used within a | |||
| corporation over a private network, the risks of exposing document | given small business over a private network, the risks of exposing | |||
| data may be low enough that the corporation will choose not to use | Document data can be low enough that the business will choose not to | |||
| encryption on that data. However, if the connection between the | use encryption on that data. However, if the connection between the | |||
| client and the IPP object is over a public network, the client may | Client and the IPP object is over a public network, the Client can | |||
| wish to protect the content of the information during transmission | protect the content of the information during transmission through | |||
| through the network with encryption. | the network with encryption. | |||
| Furthermore, the value of the information being printed may vary from | Furthermore, the value of the information being printed can vary from | |||
| one IPP environment to the next. Printing payroll checks, for | one IPP environment to the next. Printing payroll checks, for | |||
| example, would have a different value than printing public | example, would have a different value than printing public | |||
| information from a file. There is also the possibly of denial-of- | information from a file. There is also the possibly of denial-of- | |||
| service attacks, but denial-of-service attacks against printing | service attacks, but denial-of-service attacks against printing | |||
| resources are not well understood and there is no published | resources are not well understood and there is no published | |||
| precedents regarding this scenario. | precedents regarding this scenario. | |||
| Once the authenticated identity of the requester has been supplied to | Once the authenticated identity of the requester has been supplied to | |||
| the IPP object, the object uses that identity to enforce any | the IPP object, the object uses that identity to enforce any | |||
| authorization policy that might be in place. For example, one site's | authorization policy that might be in place. For example, one site's | |||
| policy might be that only the job owner is allowed to cancel a job. | policy might be that only the Job owner is allowed to cancel a Job. | |||
| The details and mechanisms to set up a particular access control | The details and mechanisms to set up a particular access control | |||
| policy are not part of IPP/1.1, and must be established via some | policy are not part of this document and are typically established | |||
| other type of administrative or access control framework. However, | via some other type of administrative or access control framework. | |||
| there are operation status codes that allow an IPP server to return | However, there are operation status codes that allow an IPP server to | |||
| information back to a client about any potential access control | return information back to a Client about any potential access | |||
| violations for an IPP object. | control violations for an IPP object. | |||
| During a create operation, the client's identity is recorded in the | During a Job Creation request, the client's identity is recorded in | |||
| Job object in an implementation-defined attribute. This information | the Job object in an implementation-defined attribute. This | |||
| can be used to verify a client's identity for subsequent operations | information can be used to verify a client's identity for subsequent | |||
| on that Job object in order to enforce any access control policy that | operations on that Job object in order to enforce any access control | |||
| might be in effect. See section 8.3 below for more details. | policy that might be in effect. See Section 9.3 below for more | |||
| details. | ||||
| Since the security levels or the specific threats that an IPP system | Since the security levels or the specific threats that an | |||
| administrator may be concerned with cannot be anticipated, IPP MUST | Adminstrator can be concerned with cannot be anticipated, IPP | |||
| be capable of operating with different security mechanisms and | implementations MUST be capable of operating with different security | |||
| security policies as required by the individual installation. | mechanisms and security policies as required by the individual | |||
| Security policies might vary from very strong, to very weak, to none | installation. Security policies might vary from very strong, to very | |||
| at all, and corresponding security mechanisms will be required. | weak, to none at all, and corresponding security mechanisms will be | |||
| required. | ||||
| 8.1 Security Scenarios | 9.1. Security Scenarios | |||
| The following sections describe specific security attacks for IPP | The following sections describe specific security attacks for IPP | |||
| environments. Where examples are provided they should be considered | environments. Where examples are provided they are illustrative of | |||
| illustrative of the environment and not an exhaustive set. Not all of | the environment and not an exhaustive set. | |||
| these environments will necessarily be addressed in initial | ||||
| implementations of IPP. | ||||
| 8.1.1 Client and Server in the Same Security Domain | 9.1.1. Client and Server in the Same Security Domain | |||
| This environment is typical of internal networks where traditional | This environment is typical of internal networks where traditional | |||
| office workers print the output of personal productivity applications | office workers print the output of personal productivity applications | |||
| on shared work-group printers, or where batch applications print | on shared workgroup printers, or where batch applications print their | |||
| their output on large production printers. Although the identity of | output on large production printers. Although the identity of the | |||
| the user may be trusted in this environment, a user might want to | user can be trusted in this environment, a user might want to protect | |||
| protect the content of a document against such attacks as | the content of a document against such attacks as eavesdropping, | |||
| eavesdropping, replaying or tampering. | replaying or tampering. | |||
| 8.1.2 Client and Server in Different Security Domains | 9.1.2. Client and Server in Different Security Domains | |||
| Examples of this environment include printing a document created by | Examples of this environment include printing a document created by | |||
| the client on a publicly available printer, such as at a commercial | the Client on a publicly available printer, such as at a commercial | |||
| print shop; or printing a document remotely on a business associate's | print shop; or printing a document remotely on a business associate's | |||
| printer. This latter operation is functionally equivalent to sending | printer. This latter operation is functionally equivalent to sending | |||
| the document to the business associate as a facsimile. Printing | the document to the business associate as a facsimile. Printing | |||
| sensitive information on a Printer in a different security domain | sensitive information on a Printer in a different security domain | |||
| requires strong security measures. In this environment authentication | requires strong security measures. In this environment | |||
| of the printer is required as well as protection against unauthorized | authentication of the Printer is required as well as protection | |||
| use of print resources. Since the document crosses security domains, | against unauthorized use of print resources. Since the document | |||
| protection against eavesdropping and document tampering are also | crosses security domains, protection against eavesdropping and | |||
| required. It will also be important in this environment to protect | document tampering are also required. It will also be important in | |||
| Printers against "spamming" and malicious document content. | this environment to protect Printers against "spamming" and malicious | |||
| document content. | ||||
| 8.1.3 Print by Reference | 9.1.3. Print by Reference | |||
| When the document is not stored on the client, printing can be done | When the document is not stored on the Client, printing can be done | |||
| by reference. That is, the print request can contain a reference, or | by reference. That is, the print request can contain a reference, or | |||
| pointer, to the document instead of the actual document itself (see | pointer, to the document instead of the actual document itself - see | |||
| sections 3.2.2 and 3.3.2). Standard methods currently do not exist | Sections 4.2.2 and 4.3.2. Standard methods currently do not exist | |||
| for remote entities to "assume" the credentials of a client for | for remote entities to "assume" the credentials of a Client for | |||
| forwarding requests to a 3rd party. It is anticipated that Print-By- | forwarding requests to a 3rd party. It is anticipated that Print-By- | |||
| Reference will be used to access "public" documents and that | Reference will be used to access "public" documents and that | |||
| sophisticated methods for authenticating "proxies" is not specified | sophisticated methods for authenticating "proxies" is not specified | |||
| in this document. | in this document. | |||
| 8.2 URIs in Operation, Job, and Printer attributes | 9.2. URIs in Operation, Job, and Printer attributes | |||
| The "printer-uri-supported" attribute contains the Printer object's | The "printer-uri-supported" attribute contains the Printer's URI(s). | |||
| URI(s). Its companion attribute, "uri-security-supported", | Its companion attribute, "uri-security-supported", identifies the | |||
| identifies the security mechanism used for each URI listed in the | security mechanism used for each URI listed in the "printer-uri- | |||
| "printer-uri-supported" attribute. For each Printer operation | supported" attribute. For each Printer operation request, a Client | |||
| request, a client MUST supply only one URI in the "printer-uri" | MUST supply only one URI in the "printer-uri" operation attribute. | |||
| operation attribute. In other words, even though the Printer | In other words, even though the Printer supports more than one URI, | |||
| supports more than one URI, the client only interacts with the | the Client only interacts with the Printer using one if its URIs. | |||
| Printer object using one if its URIs. This duality is not needed for | This duality is not needed for Job objects, since the Printers is the | |||
| Job objects, since the Printer objects is the factory for Job | factory for Job objects, and the Printer will generate the correct | |||
| objects, and the Printer object will generate the correct URI for new | URI for new Job objects depending on the Printer's security | |||
| Job objects depending on the Printer object's security configuration. | configuration. | |||
| 8.3 URIs for each authentication mechanisms | 9.3. URIs for each authentication mechanisms | |||
| Each URI has an authentication mechanism associated with it. If the | Each URI has an authentication mechanism associated with it. If the | |||
| URI is the i'th element of "printer-uri-supported", then | URI is the "i th" element of "printer-uri-supported", then | |||
| authentication mechanism is the "i th" element of "uri- | authentication mechanism is the "i th" element of "uri- | |||
| authentication-supported". For a list of possible authentication | authentication-supported". For a list of possible authentication | |||
| mechanisms, see section 4.4.2. | mechanisms, see Section 5.4.2. | |||
| The Printer object uses an authentication mechanism to determine the | The Printer uses an authentication mechanism to determine the name of | |||
| name of the user performing an operation. This user is called the | the user performing an operation. This user is called the | |||
| "authenticated user". The credibility of authentication depends on | "authenticated user". The credibility of authentication depends on | |||
| the mechanism that the Printer uses to obtain the user's name. When | the mechanism that the Printer uses to obtain the user's name. When | |||
| the authentication mechanism is 'none', all authenticated users are | the authentication mechanism is 'none', all authenticated users are | |||
| "anonymous". | 'anonymous'. | |||
| During job creation operations, the Printer initializes the value of | During Job Creation requests, the Printer initializes the value of | |||
| the "job-originating-user-name" attribute (see section 4.3.6) to be | the "job-originating-user-name" attribute (see Section 5.3.6) to be | |||
| the authenticated user. The authenticated user is this case is called | the authenticated user. The authenticated user is this case is | |||
| the "job owner". | called the "Job owner". | |||
| If an implementation can be configured to support more than one | If an implementation can be configured to support more than one | |||
| authentication mechanism (see section 4.4.2), then it MUST implement | authentication mechanism (see Section 5.4.2), then it MUST implement | |||
| rules for determining equality of authenticated user names which have | rules for determining equality of authenticated user names which have | |||
| been authenticated via different authentication mechanisms. One | been authenticated via different authentication mechanisms. One | |||
| possible policy is that identical names that are authenticated via | possible policy is that identical names that are authenticated via | |||
| different mechanisms are different. For example, a user can cancel | different mechanisms are different. For example, a user can cancel | |||
| his job only if he uses the same authentication mechanism for both | his Job only if he uses the same authentication mechanism for both | |||
| Cancel-Job and Print-Job. Another policy is that identical names | Cancel-Job and Print-Job. Another policy is that identical names that | |||
| that are authenticated via different mechanism are the same if the | are authenticated via different mechanism are the same if the | |||
| authentication mechanism for the later operation is not less strong | authentication mechanism for the later operation is not less strong | |||
| than the authentication mechanism for the earlier job creation | than the authentication mechanism for the earlier Job Creation | |||
| operation. For example, a user can cancel his job only if he uses | operation. For example, a user can cancel his Job only if he uses | |||
| the same or stronger authentication mechanism for Cancel-Job and | the same or stronger authentication mechanism for Cancel-Job and | |||
| Print-Job. With this second policy a job submitted via 'requesting- | Print-Job. With this second policy a Job submitted via 'requesting- | |||
| user-name' authentication could be canceled via 'digest' | user-name' authentication could be canceled via 'digest' | |||
| authentication. With the first policy, the job could not be canceled | authentication. With the first policy, the Job could not be canceled | |||
| in this way. | in this way. | |||
| A client is able to determine the authentication mechanism used to | A Client is able to determine the authentication mechanism used to | |||
| create a job. It is the i'th value of the Printer's "uri- | create a Job. It is the "i th" value of the Printer's "uri- | |||
| authentication-supported" attribute (see section 4.4.2), where i is | authentication-supported" attribute (see Section 5.4.2), where i is | |||
| the index of the element of the Printer's "printer-uri-supported" | the index of the element of the Printer's "printer-uri-supported" | |||
| attribute (see section 4.4.1) equal to the job's "job-printer-uri" | attribute (see Section 5.4.1) equal to the Job's "job-printer-uri" | |||
| attribute (see section 4.3.3). | attribute (see Section 5.3.3). | |||
| 8.4 Restricted Queries | 9.4. Restricted Queries | |||
| In many IPP operations, a client supplies a list of attributes to be | In many IPP operations, a Client supplies a list of attributes to be | |||
| returned in the response. For security reasons, an IPP object may be | returned in the response. For security reasons, an IPP object can be | |||
| configured not to return all attributes (or all values) that a client | configured not to return all attributes (or all values) that a Client | |||
| requests. The job attributes returned MAY depend on whether the | requests. The Job attributes returned MAY depend on whether the | |||
| requesting user is the same as the user that submitted the job. The | requesting user is the same as the user that submitted the Job. The | |||
| IPP object MAY even return none of the requested attributes. In such | IPP object MAY even return none of the requested attributes. In such | |||
| cases, the status returned is the same as if the object had returned | cases, the status returned is the same as if the object had returned | |||
| all requested attributes. The client cannot tell by such a response | all requested attributes. The Client cannot tell by such a response | |||
| whether the requested attribute was present or absent on the object. | whether the requested attribute was present or absent on the object. | |||
| 8.5 Operations performed by operators and system administrators | 9.5. Operations performed by Operators and Adminstrators | |||
| For the three printer operations Pause-Printer, Resume-Printer, and | For the three Printer operations Pause-Printer, Resume-Printer, and | |||
| Purge-Jobs (see sections 3.2.7, 3.2.8 and 3.2.9), the requesting user | Purge-Jobs (see Sections 4.2.7, 4.2.8, and 4.2.9), the requesting | |||
| is intended to be an operator or administrator of the Printer object | user is intended to be an Operator or Adminstrator of the Printer | |||
| (see section 1). Otherwise, the IPP Printer MUST reject the | (see Section 1). Otherwise, the IPP Printer MUST reject the | |||
| operation and return: 'client-error-forbidden', 'client-error-not- | operation and return 'client-error-forbidden', 'client-error-not- | |||
| authenticated', or 'client-error-not-authorized' as appropriate. For | authenticated', or 'client-error-not-authorized' as appropriate. For | |||
| operations on jobs, the requesting user is intended to be the job | operations on Jobs, the requesting user is intended to be the Job | |||
| owner or may be an operator or administrator of the Printer object. | owner or can be an Operator or Adminstrator of the Printer. The | |||
| The means for authorizing an operator or administrator of the Printer | means for authorizing an Operator or Adminstrator of the Printer are | |||
| object are not specified in this document. | not specified in this document. | |||
| 8.6 Queries on jobs submitted using non-IPP protocols | 9.6. Queries on Jobs submitted using non-IPP protocols | |||
| If the device that an IPP Printer is representing is able to accept | If the device that an IPP Printer is representing is able to accept | |||
| jobs using other job submission protocols in addition to IPP, it is | Jobs using other Job submission protocols in addition to IPP, such an | |||
| RECOMMENDED that such an implementation at least allow such "foreign" | implementation SHOULD at least allow such "foreign" Jobs to be | |||
| jobs to be queried using Get-Jobs returning "job-id" and "job-uri" as | queried using Get-Jobs returning "job-id" and "job-uri" as 'unknown'. | |||
| 'unknown'. Such an implementation NEED NOT support all of the same | Such an implementation MAY support all of the same IPP Job attributes | |||
| IPP job attributes as for IPP jobs. The IPP object returns the | as for IPP Jobs. The IPP object returns the 'unknown' out-of-band | |||
| 'unknown' out-of-band value for any requested attribute of a foreign | value for any requested attribute of a foreign Job that is supported | |||
| job that is supported for IPP jobs, but not for foreign jobs. | for IPP Jobs, but not for foreign Jobs. | |||
| It is further RECOMMENDED, that the IPP Printer generate "job-id" and | IPP Printers SHOULD also generate "job-id" and "job-uri" values for | |||
| "job-uri" values for such "foreign jobs", if possible, so that they | such "foreign jobs", if possible, so that they can be targets of | |||
| may be targets of other IPP operations, such as Get-Job-Attributes | other IPP operations, such as Get-Job-Attributes and Cancel-Job. Such | |||
| and Cancel-Job. Such an implementation also needs to deal with the | an implementation also needs to deal with the problem of | |||
| problem of authentication of such foreign jobs. One approach would | authentication of such foreign Jobs. One approach would be to treat | |||
| be to treat all such foreign jobs as belonging to users other than | all such foreign Jobs as belonging to users other than the user of | |||
| the user of the IPP client. Another approach would be for the | the IPP Client. Another approach would be for the foreign Job to | |||
| foreign job to belong to 'anonymous'. Only if the IPP client has | belong to 'anonymous' - then only authenticated Operators or | |||
| been authenticated as an operator or administrator of the IPP Printer | Adminstrators of the IPP Printer could query the foreign Jobs by an | |||
| object, could the foreign jobs be queried by an IPP request. | IPP request. Alternatively, if the security policy is to allow users | |||
| Alternatively, if the security policy is to allow users to query | to query other users' jobs, then the foreign Jobs would also be | |||
| other users' jobs, then the foreign jobs would also be visible to an | visible to an End User IPP Client using Get-Jobs and Get-Job- | |||
| end-user IPP client using Get-Jobs and Get-Job-Attributes. | Attributes. | |||
| 9. References | 10. Changes Since RFC 2911 | |||
| [ASME-Y14.1M] Metric Drawing Sheet Size and Format, ASME Y14.1M-1995. | The following changes have been made since RFC 2911: | |||
| This standard defines metric sheet sizes and formats | ||||
| for engineering drawings. | ||||
| [ASCII] Coded Character Set - 7-bit American Standard Code for | o Errata ID 364: Fixed range of "redirection" status codes (to | |||
| Information Interchange (ASCII), ANSI X3.4-1986. This | 0x03xx) | |||
| standard is the specification of the US-ASCII charset. | ||||
| [BCP-11] Bradner S. and R. Hovey, "The Organizations Involved in | o Errata ID 694: Fixed range of vendor status codes (0x0n80 to | |||
| the IETF Standards Process", BCP 11, RFC 2028, October | 0x0nff) | |||
| 1996. | ||||
| [HTPP] J. Barnett, K. Carter, R. DeBry, "Initial Draft - | o Errata ID 3072: Reworded multiple-document-handling definition | |||
| Hypertext Printing Protocol - HTPP/1.0", October 1996, | since it also applies to single document Jobs and is the only | |||
| ftp://ftp.pwg.org/pub/pwg/ipp/historic/htpp/overview.ps.gz | interoperable way to request uncollated copies. | |||
| [IANA-CON] Narten, T. and H. Alvestrand, "Guidelines for Writing | o Errata ID 3365: Fixed bad nameWithLanguage maximum length - | |||
| an IANA Considerations Section in RFCs", BCP 26, RFC | reference nameWithoutLanguage section for length | |||
| 2434, October 1998. | ||||
| [IANA-CS] IANA Registry of Coded Character Sets: | o Errata ID 4173: Fixed range of vendor operation codes (0x4000 to | |||
| ftp://ftp.isi.edu/in-notes/iana/assignments/character- | 0x7fff) | |||
| sets | ||||
| [IANA-MT] IANA Registry of Media Types: ftp://ftp.isi.edu/in- | o Updated obsoleted RFC references | |||
| notes/iana/assignments/media-types/ | ||||
| [IPP-IIG] Hastings, T., Manros, C., Kugler, C., Holst, H., and P. | o Changed IPP-IIG reference to RFC 3196 | |||
| Zehler, "Internet Printing Protocol/1.1: draft-ietf- | ||||
| ipp-implementers-guide-v11-01.txt, work in progress, | ||||
| May 30, 2000. | ||||
| [ISO10646-1] ISO/IEC 10646-1:1993, "Information technology -- | o Updated Create-Job, Send-Document, and Send-URI to RECOMMENDED. | |||
| Universal Multiple-Octet Coded Character Set (UCS) - | ||||
| Part 1: Architecture and Basic Multilingual Plane, | ||||
| JTC1/SC2." | ||||
| [ISO8859-1] ISO/IEC 8859-1:1987, "Information technology -- 8-bit | o Incorporated collection attribute content from RFC 3382. | |||
| One-Byte Coded Character Set - Part 1: Latin Alphabet | ||||
| Nr 1", 1987, JTC1/SC2. | ||||
| [ISO10175] ISO/IEC 10175 Document Printing Application (DPA), June | o Obsoleted all attributes and values defined in RFC 3381, as they | |||
| 1996. | do not interact well with the "finishings" attribute and have | |||
| never been widely implemented. | ||||
| [LDPA] T. Hastings, S. Isaacson, M. MacKay, C. Manros, D. | o Deprecated the Purge-Jobs and Restart-Job operations which destroy | |||
| Taylor, P. Zehler, "LDPA - Lightweight Document | accounting information. | |||
| Printing Application", October 1996, | ||||
| ftp://ftp.pwg.org/pub/pwg/ipp/historic/ldpa/ldpa8.pdf.gz | ||||
| [P1387.4] Kirk, M. (editor), POSIX System Administration - Part | o Dropped type3 registration procedures. | |||
| 4: Printing Interfaces, POSIX 1387.4 D8, 1994. | ||||
| [PSIS] Herriot, R. (editor), X/Open A Printing System | o Split READ-ONLY Job Description and Printer Description attributes | |||
| Interoperability Specification (PSIS), August 1995. | into Job Status and Printer Status attributes to match the current | |||
| IANA IPP registry organization. | ||||
| [PWG] Printer Working Group, http://www.pwg.org. | o Referenced all IETF and PWG IPP standards. | |||
| [RFC1035] Mockapetris, P., "Domain Names - Implementation and | o Updated OPTIONAL operations, attributes, and values to RECOMMENDED | |||
| Specification", STD 13, RFC 1035, November 1987. | for consistency with IPP 2.0, IPP Everywhere, and the IPP | |||
| Implementor's Guide v2.0 (IG). | ||||
| [RFC1179] McLaughlin, L., "Line Printer Daemon Protocol", RFC | o The appendix on media names has been removed. Readers are | |||
| 1179, August 1990. | directed to the PWG Media Standardized Names 2.0 (MSN) | |||
| [PWG5101.1]. | ||||
| [RFC1759] Smith, R., Wright, F., Hastings, T., Zilles, S. and J. | 11. References | |||
| Gyllenskog, "Printer MIB", RFC 1759, March 1995. | ||||
| [RFC1766] Alvestrand, H., "Tags for the Identification of | 11.1. Normative References | |||
| Languages", RFC 1766, March 1995. | ||||
| [RFC1951] Deutsch, P., "DEFLATE Compressed Data Format | [ASCII] ANSI, "Information Systems - Coded Character Sets - 7-Bit | |||
| Specification version 1.3 ", RFC 1951, May 1996. | American National Standard Code for Information | |||
| Interchange (7-Bit ASCII)", June 2007. | ||||
| [RFC1952] Deutsch, P., "GZIP file format specification version | [ASME-Y14.1M] | |||
| 4.3", RFC 1952, May 1996. | "ASME Y14.1M-1995: Metric Drawing Sheet Size and Format", | |||
| 1995. | ||||
| [RFC1977] Schryver, V., "PPP BSD Compression Protocol", RFC 1977, | [ISO10175] | |||
| August 1996. | "ISO/IEC 10175 Document Printing Application (DPA)", June | |||
| 1996. | ||||
| [RFC2026] Bradner, S., "The Internet Standards Process -- | [ISO10646-1] | |||
| Revision 3", BCP 9, RFC 2026, October 1996. | "ISO/IEC 10646-1:1993, "Information technology -- | |||
| Universal Multiple-Octet Coded Character Set (UCS) - Part | ||||
| 1: Architecture and Basic Multilingual Plane, JTC1/SC2."", | ||||
| 1993. | ||||
| [RFC2045] Freed, N. and N. Borenstein, ", Multipurpose Internet | [ISO8859-1] | |||
| Mail Extensions (MIME) Part One: Format of Internet | "ISO/IEC 8859-1:1987, "Information technology -- 8-bit | |||
| Message Bodies", RFC 2045, November 1996. | One-Byte Coded Character Set - Part 1: Latin Alphabet Nr | |||
| 1"", 1987. | ||||
| [RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet | [PWG5100.1] | |||
| Mail Extensions (MIME) Part Two: Media Types", RFC | Sweet, M., "IPP Finishings 2.0 (FIN)", December 2014, | |||
| 2046, November 1996. | <http://ftp.pwg.org/pub/pwg/candidates/ | |||
| cs-ippfinishings20-20141219-5100.1.pdf>. | ||||
| [RFC2048] Freed, N., Klensin, J. and J. Postel, "Multipurpose | [PWG5100.11] | |||
| Internet Mail Extension (MIME) Part Four: Registration | Hastings, T. and D. Fullman, "IPP: Job and Printer | |||
| Procedures", RFC 2048, November 1996. | Extensions - Set 2", October 2010, | |||
| <http://ftp.pwg.org/pub/pwg/candidates/ | ||||
| cs-ippjobprinterext10-20101030-5100.11.pdf>. | ||||
| [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [PWG5100.12] | |||
| Requirement Levels", BCP 14, RFC 2119, March 1997. | Sweet, M. and I. McDonald, "IPP/2.0, 2.1, and 2.2", | |||
| October 2015, <http://ftp.pwg.org/pub/pwg/standards/ | ||||
| std-ipp20-20151030-5100.12.pdf>. | ||||
| [RFC2228] Horowitz, M. and S. Lunt, "FTP Security Extensions", | [PWG5100.13] | |||
| RFC 2228, October 1997. | Sweet, M., McDonald, I., and P. Zehler, "IPP: Job and | |||
| Printer Extensions - Set 3", July 2012, | ||||
| <http://ftp.pwg.org/pub/pwg/candidates/ | ||||
| cs-ippjobprinterext3v10-20120727-5100.13.pdf>. | ||||
| [RFC2246] Dierks, T. and C. Allen, "The TLS Protocol Version | [PWG5100.14] | |||
| 1.0", RFC 2246, January 1999. | Sweet, M., McDonald, I., Mitchell, A., and J. Hutchings, | |||
| "IPP Everywhere", January 2013, | ||||
| <http://ftp.pwg.org/pub/pwg/candidates/ | ||||
| cs-ippeve10-20130128-5100.14.pdf>. | ||||
| [RFC2277] Alvestrand, H., "IETF Policy on Character Sets and | [PWG5100.15] | |||
| Languages" BCP 18, RFC 2277, January 1998. | Sweet, M., "IPP FaxOut Service", June 2014, | |||
| <http://ftp.pwg.org/pub/pwg/candidates/ | ||||
| cs-ippfaxout10-20140618-5100.15.pdf>. | ||||
| [RFC2278] Freed, N. and J. Postel: "IANA CharSet Registration | [PWG5100.16] | |||
| Procedures", BCP 19, RFC 2278, January 1998. | Sweet, M., "IPP Transaction-Based Printing Extensions", | |||
| November 2013, <http://ftp.pwg.org/pub/pwg/candidates/ | ||||
| cs-ipptrans10-20131108-5100.16.pdf>. | ||||
| [RFC2279] Yergeau, F., "UTF-8, a transformation format of ISO | [PWG5100.17] | |||
| 10646", RFC 2279, January 1998. | Zehler, P. and M. Sweet, "IPP Scan Service (SCAN)", | |||
| September 2014, <http://ftp.pwg.org/pub/pwg/candidates/ | ||||
| cs-ippscan10-20140918-5100.17.pdf>. | ||||
| [RFC2316] Bellovin, S., "Report of the IAB Security Architecture | [PWG5100.18] | |||
| Workshop", RFC 2316, April 1998. | Sweet, M. and I. McDonald, "IPP Shared Infrastructure | |||
| Extensions (INFRA)", June 2015, | ||||
| <http://ftp.pwg.org/pub/pwg/candidates/ | ||||
| cs-ippinfra10-20150619-5100.18.pdf>. | ||||
| [RFC2396] Berners-Lee, T., Fielding, R. and L. Masinter, "Uniform | [PWG5100.19] | |||
| Resource Identifiers (URI): Generic Syntax", RFC 2396, | Kennedy, S., "IPP Implementor's Guide 2.0", August 2015, | |||
| August 1998. | <http://ftp.pwg.org/pub/pwg/candidates/ | |||
| cs-ippig20-20150821-5100.19.pdf>. | ||||
| [RFC2565] Herriot, R., Butler, S., Moore, P. and R. Turner, | [PWG5100.2] | |||
| "Internet Printing Protocol/1.0: Encoding and | Hastings, T. and R. Bergman, "IPP: "output-bin" attribute | |||
| Transport", RFC 2565, April 1999. | extension", February 2001, | |||
| <http://ftp.pwg.org/pub/pwg/candidates/ | ||||
| cs-ippoutputbin10-20010207-5100.2.pdf>. | ||||
| [RFC2566] deBry, R., Hastings, T., Herriot, R., Isaacson, S. and | [PWG5100.3] | |||
| P. Powell, "Internet Printing Protocol/1.0: Model and | Ocke, K. and T. Hastings, "IPP: Production Printing | |||
| Semantics", RFC 2566, April 1999. | Attributes - Set 1", February 2001, | |||
| <http://ftp.pwg.org/pub/pwg/candidates/ | ||||
| cs-ippprodprint10-20010212-5100.3.pdf>. | ||||
| [RFC2567] Wright, D., "Design Goals for an Internet Printing | [PWG5100.5] | |||
| Protocol", RFC 2567, April 1999. | Carney, D., Hastings, T., and P. Zehler, "IPP: Document | |||
| Object", October 2003, | ||||
| <http://ftp.pwg.org/pub/pwg/candidates/ | ||||
| cs-ippdocobject10-20031031-5100.5.pdf>. | ||||
| [RFC2568] Zilles, S., "Rationale for the Structure and Model and | [PWG5100.6] | |||
| Protocol for the Internet Printing Protocol", RFC 2568, | Zehler, P., Herriot, R., and K. Ocke, "IPP: Page | |||
| April 1999. | Overrides", October 2003, | |||
| <http://ftp.pwg.org/pub/pwg/candidates/ | ||||
| cs-ipppageoverride10-20031031-5100.6.pdf>. | ||||
| [RFC2569] Herriot, R., Hastings, T., Jacobs, N. and J. Martin, | [PWG5100.7] | |||
| "Mapping between LPD and IPP Protocols", RFC 2569, | Hastings, T. and P. Zehler, "IPP: Job Extensions", October | |||
| April 1999. | 2003, <http://ftp.pwg.org/pub/pwg/candidates/ | |||
| cs-ippjobext10-20031031-5100.7.pdf>. | ||||
| [RFC2579] McCloghrie, K., Perkins, D. and J. Schoenwaelder, | [PWG5100.8] | |||
| "Textual Conventions for SMIv2", STD 58, RFC 2579, | Carney, D. and H. Lewis, "IPP: "-actual" attributes", | |||
| April 1999. | March 2003, <http://ftp.pwg.org/pub/pwg/candidates/ | |||
| cs-ippactuals10-20030313-5100.8.pdf>. | ||||
| [RFC2616] Fielding, R., Gettys, J., Mogul, J., Frystyk, H., | [PWG5100.9] | |||
| Masinter, L., Leach, P. and T. Berners-Lee, "Hypertext | McDonald, I. and C. Whittle, "IPP: Printer State | |||
| Transfer Protocol - HTTP/1.1", RFC 2616, June 1999. | Extensions v1.0", July 2009, | |||
| <http://ftp.pwg.org/pub/pwg/candidates/ | ||||
| cs-ippstate10-20090731-5100.9.pdf>. | ||||
| [RFC2617] Franks, J., Hallam-Baker, P., Hostetler, J., Lawrence, | [PWG5101.1] | |||
| S., Leach, P., Luotonen, A. and L. Stewart, "HTTP | Sweet, M., Bergman, R., and T. Hastings, "PWG Media | |||
| Authentication: Basic and Digest Access | Standardized Names 2.0 (MSN2)", March 2013, | |||
| Authentication", RFC 2617, June 1999. | <http://ftp.pwg.org/pub/pwg/candidates/ | |||
| cs-pwgmsn20-20130328-5101.1.pdf>. | ||||
| [RFC2639] Hastings, T. and C. Manros, "Internet Printing | [RFC1035] Mockapetris, P., "Domain names - implementation and | |||
| Protocol/1.0: Encoding and Transport", RFC 2639, July | specification", STD 13, RFC 1035, November 1987. | |||
| 1999. | ||||
| [RFC2910] Herriot, R., Butler, S., Moore, P., Turner, R. and J. | [RFC1951] Deutsch, P., "DEFLATE Compressed Data Format Specification | |||
| Wenn, "Internet Printing Protocol/1.1: Encoding and | version 1.3", RFC 1951, May 1996. | |||
| Transport", RFC 2910, September 2000. | ||||
| [SSL] Netscape, The SSL Protocol, Version 3, (Text version | [RFC1952] Deutsch, P., Gailly, J-L., Adler, M., Deutsch, L., and G. | |||
| 3.02), November 1996. | Randers-Pehrson, "GZIP file format specification version | |||
| 4.3", RFC 1952, May 1996. | ||||
| [SWP] P. Moore, B. Jahromi, S. Butler, "Simple Web Printing | [RFC1977] Schryver, V., "PPP BSD Compression Protocol", RFC 1977, | |||
| SWP/1.0", May 7, 1997, | August 1996. | |||
| ftp://ftp.pwg.org/pub/pwg/ipp/new_PRO/swp9705.pdf | ||||
| 10. Authors' Addresses | [RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | |||
| Extensions (MIME) Part One: Format of Internet Message | ||||
| Bodies", RFC 2045, November 1996. | ||||
| Scott A. Isaacson, Editor | [RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail | |||
| Novell, Inc. | Extensions (MIME) Part Two: Media Types", RFC 2046, | |||
| 122 E 1700 S | November 1996. | |||
| Provo, UT 84606 | ||||
| Phone: 801-861-7366 | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
| Fax: 801-861-2517 | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
| EMail: sisaacson@novell.com | ||||
| Tom Hastings | [RFC2818] Rescorla, E., "HTTP Over TLS", RFC 2818, May 2000. | |||
| Xerox Corporation | ||||
| 737 Hawaii St. ESAE 231 | ||||
| El Segundo, CA 90245 | ||||
| Phone: 310-333-6413 | [RFC2910bis] | |||
| Fax: 310-333-5514 | Sweet, M. and I. McDonald, "Internet Printing | |||
| EMail: hastings@cp10.es.xerox.com | Protocol/1.1: Encoding and Transport", December 2015, | |||
| <http://tools.ietf.org/html/draft-sweet-rfc2910bis>. | ||||
| Robert Herriot | [RFC3196] Hastings, T., Manros, C., Zehler, P., Kugler, C., and H. | |||
| Xerox Corp. | Holst, "Internet Printing Protocol/1.1: Implementor's | |||
| 3400 Hill View Ave, Building 1 | Guide", RFC 3196, November 2001. | |||
| Palo Alto, CA 94304 | ||||
| Phone: 650-813-7696 | [RFC3239] Kugler, C., Lewis, H., and T. Hastings, "Internet Printing | |||
| Fax: 650-813-6860 | Protocol (IPP): Requirements for Job, Printer, and Device | |||
| EMail: robert.herriot@pahv.xerox.com | Administrative Operations", RFC 3239, February 2002. | |||
| Roger deBry | [RFC3380] Hastings, T., Herriot, R., Kugler, C., and H. Lewis, | |||
| Utah Valley State College | "Internet Printing Protocol (IPP): Job and Printer Set | |||
| Orem, UT 84058 | Operations", RFC 3380, September 2002. | |||
| Phone: (801) 222-8000 | [RFC3510] Herriot, R. and I. McDonald, "Internet Printing | |||
| EMail: debryro@uvsc.edu | Protocol/1.1: IPP URL Scheme", RFC 3510, April 2003. | |||
| Patrick Powell | ||||
| Astart Technologies | ||||
| 9475 Chesapeake Dr., Suite D | ||||
| San Diego, CA 95123 | ||||
| Phone: (619) 874-6543 | [RFC3629] Yergeau, F., "UTF-8, a transformation format of ISO | |||
| Fax: (619) 279-8424 | 10646", STD 63, RFC 3629, November 2003. | |||
| EMail: papowell@astart.com | ||||
| IPP Web Page: http://www.pwg.org/ipp/ | [RFC3805] Bergman, R., Lewis, H., and I. McDonald, "Printer MIB v2", | |||
| IPP Mailing List: ipp@pwg.org | RFC 3805, June 2004. | |||
| To subscribe to the ipp mailing list, send the following email: | [RFC3986] Berners-Lee, T., Fielding, R., and L. Masinter, "Uniform | |||
| 1) send it to majordomo@pwg.org | Resource Identifier (URI): Generic Syntax", STD 66, RFC | |||
| 2) leave the subject line blank | 3986, January 2005. | |||
| 3) put the following two lines in the message body: | ||||
| subscribe ipp | ||||
| end | ||||
| Implementers of this specification document are encouraged to join | [RFC3995] Herriot, R. and T. Hastings, "Internet Printing Protocol | |||
| IPP Mailing List in order to participate in any discussions of | (IPP): Event Notifications and Subscriptions", RFC 3995, | |||
| clarification issues and review of registration proposals for | March 2005. | |||
| additional attributes and values. | ||||
| Other Participants: | [RFC3996] Herriot, R., Hastings, T., and H. Lewis, "Internet | |||
| Printing Protocol (IPP): The 'ippget' Delivery Method for | ||||
| Event Notifications", RFC 3996, March 2005. | ||||
| Chuck Adams - Tektronix Shivaun Albright - HP | [RFC3997] Hastings, T., deBry, R., and H. Lewis, "Internet Printing | |||
| Stefan Andersson - Axis Jeff Barnett - IBM | Protocol (IPP): Requirements for IPP Notifications", RFC | |||
| Ron Bergman - Hitachi Koki Imaging Dennis Carney - IBM | 3997, March 2005. | |||
| Systems | ||||
| Keith Carter - IBM Angelo Caruso - Xerox | ||||
| Rajesh Chawla - TR Computing Nancy Chen - Okidata | ||||
| Solutions | ||||
| Josh Cohen - Microsoft Jeff Copeland - QMS | ||||
| Andy Davidson - Tektronix Roger deBry - IBM | ||||
| Maulik Desai - Auco Mabry Dozier - QMS | ||||
| Lee Farrell - Canon Information Satoshi Fujitami - Ricoh | ||||
| Systems | ||||
| Steve Gebert - IBM Sue Gleeson - Digital | ||||
| Charles Gordon - Osicom Brian Grimshaw - Apple | ||||
| Jerry Hadsell - IBM Richard Hart - Digital | ||||
| Tom Hastings - Xerox Henrik Holst - I-data | ||||
| Stephen Holmstead Zhi-Hong Huang - Zenographics | ||||
| Scott Isaacson - Novell Babek Jahromi - Microsoft | ||||
| Swen Johnson - Xerox David Kellerman - Northlake | ||||
| Software | ||||
| Robert Kline - TrueSpectra Charles Kong - Panasonic | ||||
| Carl Kugler - IBM Dave Kuntz - Hewlett-Packard | ||||
| Takami Kurono - Brother Rick Landau - Digital | ||||
| Scott Lawrence - Agranot Systems Greg LeClair - Epson | ||||
| Dwight Lewis - Lexmark Harry Lewis - IBM | ||||
| Tony Liao - Vivid Image Roy Lomicka - Digital | ||||
| Pete Loya - HP Ray Lutz - Cognisys | ||||
| Mike MacKay - Novell, Inc. David Manchala - Xerox | ||||
| Carl-Uno Manros - Xerox Jay Martin - Underscore | ||||
| Stan McConnell - Xerox Larry Masinter - Xerox | ||||
| Sandra Matts - Hewlett Packard Peter Michalek - Shinesoft | ||||
| Ira McDonald - High North Inc. Mike Moldovan - G3 Nova | ||||
| Tetsuya Morita - Ricoh Yuichi Niwa - Ricoh | ||||
| Pat Nogay - IBM Ron Norton - Printronics | ||||
| Hugo Parra, Novell Bob Pentecost - Hewlett-Packard | ||||
| Patrick Powell - Astart Jeff Rackowitz - Intermec | ||||
| Technologies | ||||
| Eric Random - Peerless Rob Rhoads - Intel | ||||
| Xavier Riley - Xerox Gary Roberts - Ricoh | ||||
| David Roach - Unisys Stuart Rowley - Kyocera | ||||
| Yuji Sasaki - Japan Computer Richard Schneider - Epson | ||||
| Industry | ||||
| Kris Schoff - HP Katsuaki Sekiguchi - Canon | ||||
| Bob Setterbo - Adobe Gail Songer - Peerless | ||||
| Hideki Tanaka - Cannon Devon Taylor - Novell | ||||
| Mike Timperman - Lexmark Atsushi Uchino - Epson | ||||
| Shigeru Ueda - Canon Bob Von Andel - Allegro Software | ||||
| William Wagner - NetSilicon/DPI Jim Walker - DAZEL | ||||
| Chris Wellens - Interworking Labs Trevor Wells - Hewlett Packard | ||||
| Craig Whittle - Sharp Labs Rob Whittle - Novell, Inc. | ||||
| Jasper Wong - Xionics Don Wright - Lexmark | ||||
| Michael Wu - Heidelberg Digital Rick Yardumian - Xerox | ||||
| Michael Yeung - Toshiba Lloyd Young - Lexmark | ||||
| Atsushi Yuki - Kyocera Peter Zehler - Xerox | ||||
| William Zhang- Canon Information Frank Zhao - Panasonic | ||||
| Systems | ||||
| Steve Zilles - Adobe Rob Zirnstein - Canon Information | ||||
| Systems | ||||
| 11. Formats for IPP Registration Proposals | [RFC3998] Kugler, C., Lewis, H., and T. Hastings, "Internet Printing | |||
| Protocol (IPP): Job and Printer Administrative | ||||
| Operations", RFC 3998, March 2005. | ||||
| [RFC5234] Crocker, D. and P. Overell, "Augmented BNF for Syntax | ||||
| Specifications: ABNF", STD 68, RFC 5234, January 2008. | ||||
| [RFC5246] Dierks, T. and E. Rescorla, "The Transport Layer Security | ||||
| (TLS) Protocol Version 1.2", RFC 5246, August 2008. | ||||
| [RFC5646] Phillips, A. and M. Davis, "Tags for Identifying | ||||
| Languages", BCP 47, RFC 5646, September 2009. | ||||
| [RFC6838] Freed, N., Klensin, J., and T. Hansen, "Media Type | ||||
| Specifications and Registration Procedures", BCP 13, RFC | ||||
| 6838, January 2013. | ||||
| [RFC7230] Fielding, R. and J. Reschke, "Hypertext Transfer Protocol | ||||
| (HTTP/1.1): Message Syntax and Routing", RFC 7230, June | ||||
| 2014. | ||||
| [RFC7472] McDonald, I. and M. Sweet, "Internet Printing Protocol | ||||
| (IPP) over HTTPS Transport Binding and the 'ipps' URI | ||||
| Scheme", RFC 7472, March 2015. | ||||
| [RFC7612] Flemming, P. and I. McDonald, "Lightweight Directory | ||||
| Access Protocol (LDAP): Schema for Printer Services", RFC | ||||
| 7612, June 2015. | ||||
| [RFC7616] Shekh-Yusef, R., Ahrens, D., and S. Bremer, "HTTP Digest | ||||
| Access Authentication", September 2015, | ||||
| <http://tools.ietf.org/html/rfc7616>. | ||||
| [RFC7617] Reschke, J., "The 'Basic' HTTP Authentication Scheme", | ||||
| September 2015, <http://tools.ietf.org/html/rfc7617>. | ||||
| [RFC793] Postel, J., "Transmission Control Protocol", STD 7, RFC | ||||
| 793, September 1981. | ||||
| 11.2. Informative References | ||||
| [HTPP] Barnett, J., Carter, K., and R. DeBry, "Initial Draft - | ||||
| Hypertext Printing Protocol - HTPP/1.0", 10 1996, | ||||
| <ftp://ftp.pwg.org/pub/pwg/ipp/historic/htpp/ | ||||
| overview.ps.gz>. | ||||
| [IANA-CON] | ||||
| Narten, T. and H. Alvestrand, "Guidelines for Writing an | ||||
| IANA Considerations Section in RFCs", BCP 26, RFC 5226, | ||||
| May 2008. | ||||
| [IANA-CS] "IANA Registry of Coded Character Sets", | ||||
| <ftp://ftp.isi.edu/in-notes/iana/assignments/character- | ||||
| sets>. | ||||
| [IANA-MT] "IANA Registry of Media Types", <ftp://ftp.isi.edu/in- | ||||
| notes/iana/assignments/media-types/>. | ||||
| [ISO32000] | ||||
| "Document management -- Portable document format -- Part | ||||
| 1: PDF 1.7", 7 2008, | ||||
| <http://www.adobe.com/devnet/acrobat/pdfs/ | ||||
| PDF32000_2008.pdf>. | ||||
| [LDPA] Hastings, T., Isaacson, S., MacKay, M., Manros, C., | ||||
| Taylor, D., and P. Zehler, "LDPA - Lightweight Document | ||||
| Printing Application", October 1996, | ||||
| <ftp://ftp.pwg.org/pub/pwg/ipp/historic/ldpa/ | ||||
| ldpa8.pdf.gz>. | ||||
| [P1387.4] Kirk, M., "POSIX System Administration - Part 4: Printing | ||||
| Interfaces, POSIX 1387.4 D8", 1998. | ||||
| [PSIS] Herriot, R., "X/Open: A Printing System Interoperability | ||||
| Specification (PSIS)", August 1995. | ||||
| [RFC1179] McLaughlin, L., "Line printer daemon protocol", RFC 1179, | ||||
| August 1990. | ||||
| [RFC2228] Horowitz, M., "FTP Security Extensions", RFC 2228, October | ||||
| 1997. | ||||
| [RFC2316] Bellovin, S., "Report of the IAB Security Architecture | ||||
| Workshop", RFC 2316, April 1998. | ||||
| [RFC2565] Herriot, R., Butler, S., Moore, P., and R. Turner, | ||||
| "Internet Printing Protocol/1.0: Encoding and Transport", | ||||
| RFC 2565, April 1999. | ||||
| [RFC2566] deBry, R., Hastings, T., Herriot, R., Isaacson, S., and P. | ||||
| Powell, "Internet Printing Protocol/1.0: Model and | ||||
| Semantics", RFC 2566, April 1999. | ||||
| [RFC2567] Wright, F., "Design Goals for an Internet Printing | ||||
| Protocol", RFC 2567, April 1999. | ||||
| [RFC2568] Zilles, S., "Rationale for the Structure of the Model and | ||||
| Protocol for the Internet Printing Protocol", RFC 2568, | ||||
| April 1999. | ||||
| [RFC2569] Herriot, R., Jacobs, N., Hastings, T., and J. Martin, | ||||
| "Mapping between LPD and IPP Protocols", RFC 2569, April | ||||
| 1999. | ||||
| [RFC2579] McCloghrie, K., Ed., Perkins, D., Ed., and J. | ||||
| Schoenwaelder, Ed., "Textual Conventions for SMIv2", STD | ||||
| 58, RFC 2579, April 1999. | ||||
| [RFC2978] Freed, N. and J. Postel, "IANA Charset Registration | ||||
| Procedures", BCP 19, RFC 2978, October 2000. | ||||
| [SWP] Moore, P., Jahromi, B., and S. Butler, "Simple Web | ||||
| Printing SWP/1.0", May 1997, | ||||
| <ftp://ftp.pwg.org/pub/pwg/ipp/new_PRO/swp9705.pdf>. | ||||
| 11.3. URIs | ||||
| [1] http://www.pwg.org/ | ||||
| [2] http://www.pwg.org/ipp/ | ||||
| [3] http://www.pwg.org/ | ||||
| Appendix A. Formats for IPP Registration Proposals | ||||
| In order to propose an IPP extension for registration, the proposer | In order to propose an IPP extension for registration, the proposer | |||
| must submit an application to IANA by email to "iana@iana.org" or by | must submit an application to IANA by email to "iana@iana.org" or by | |||
| filling out the appropriate form on the IANA web pages | filling out the appropriate form on the IANA web pages | |||
| (http://www.iana.org). This section specifies the required | (http://www.iana.org). This section specifies the required | |||
| information and the formats for proposing registrations of extensions | information and the formats for proposing registrations of extensions | |||
| to IPP as provided in Section 6 for: | to IPP as provided in Section 7 for: | |||
| 1. type2 'keyword' attribute values | 1. type2 'keyword' attribute values | |||
| 2. type3 'keyword' attribute values | ||||
| 3. type2 'enum' attribute values | ||||
| 4. type3 'enum' attribute values | ||||
| 5. attributes | ||||
| 6. attribute syntaxes | ||||
| 7. operations | ||||
| 8. status codes | ||||
| 9. out-of-band attribute values | ||||
| 11.1 Type2 keyword attribute values registration, | 2. type2 'enum' attribute values | |||
| Type of registration: type2 keyword attribute value | 3. attributes | |||
| Name of attribute to which this keyword specification is to be added: | ||||
| Proposed keyword name of this keyword value: | ||||
| Specification of this keyword value (follow the style of IPP Model | ||||
| Section 4.1.2.3): | ||||
| Name of proposer: | ||||
| Address of proposer: | ||||
| Email address of proposer: | ||||
| Note: For type2 keywords, the Designated Expert will be the point of | 4. attribute syntaxes | |||
| contact for the approved registration specification, if any | ||||
| maintenance of the registration specification is needed. | ||||
| 11.2 Type3 keyword attribute values registration | 5. operations | |||
| 6. status codes | ||||
| 7. out-of-band attribute values | ||||
| A.1. Type2 keyword attribute values registration | ||||
| Type of registration: type2 keyword attribute value | ||||
| Type of registration: type3 keyword attribute value | ||||
| Name of attribute to which this keyword specification is to be added: | Name of attribute to which this keyword specification is to be added: | |||
| Proposed keyword name of this keyword value: | Proposed keyword name of this keyword value: | |||
| Specification of this keyword value (follow the style of IPP Model | Specification of this keyword value (follow the style of IPP Model | |||
| Section 4.1.2.3): | Section 5.1.3.3): | |||
| Name of proposer: | Name of proposer: | |||
| Address of proposer: | Address of proposer: | |||
| Email address of proposer: | Email address of proposer: | |||
| Note: For type3 keywords, the proposer will be the point of contact | Note: For type2 keywords, the Designated Expert will be the point of | |||
| for the approved registration specification, if any maintenance of | contact for the approved registration specification, if any | |||
| the registration specification is needed. | maintenance of the registration specification is needed. | |||
| 11.3 Type2 enum attribute values registration | A.2. Type2 enum attribute values registration | |||
| Type of registration: type2 enum attribute value | ||||
| Type of registration: type2 enum attribute value | ||||
| Name of attribute to which this enum specification is to be added: | Name of attribute to which this enum specification is to be added: | |||
| Keyword symbolic name of this enum value: | Keyword symbolic name of this enum value: | |||
| Numeric value (to be assigned by the IPP Designated Expert in | Numeric value (to be assigned by the IPP Designated Expert in | |||
| consultation with IANA): | consultation with IANA): | |||
| Specification of this enum value (follow the style of IPP Model | Specification of this enum value (follow the style of IPP Model | |||
| Section 4.1.4): | Section 5.1.5): | |||
| Name of proposer: | Name of proposer: | |||
| Address of proposer: | Address of proposer: | |||
| Email address of proposer: | Email address of proposer: | |||
| Note: For type2 enums, the Designated Expert will be the point of | Note: For type2 enums, the Designated Expert will be the point of | |||
| contact for the approved registration specification, if any | contact for the approved registration specification, if any | |||
| maintenance of the registration specification is needed. | maintenance of the registration specification is needed. | |||
| 11.4 Type3 enum attribute values registration | A.3. Attribute registration | |||
| Type of registration: type3 enum attribute value | Type of registration: attribute | |||
| Name of attribute to which this enum specification is to be added: | ||||
| Keyword symbolic name of this enum value: | ||||
| Numeric value (to be assigned by the IPP Designated Expert in | ||||
| consultation with IANA): | ||||
| Specification of this enum value (follow the style of IPP Model | ||||
| Section 4.1.4): | ||||
| Name of proposer: | ||||
| Address of proposer: | ||||
| Email address of proposer: | ||||
| Note: For type3 enums, the proposer will be the point of contact for | Proposed keyword name of this attribute: | |||
| the approved registration specification, if any maintenance of the | ||||
| registration specification is needed. | ||||
| 11.5 Attribute registration | Types of attribute (Operation, Job Template, Job Description, Job | |||
| Status, Printer Description, Printer Status): | ||||
| Operations to be used with if the attribute is an operation | ||||
| attribute: | ||||
| Type of registration: attribute | ||||
| Proposed keyword name of this attribute: | ||||
| Types of attribute (Operation, Job Template, Job Description, Printer | ||||
| Description): | ||||
| Operations to be used with if the attribute is an operation attribute: | ||||
| Object (Job, Printer, etc. if bound to an object): | Object (Job, Printer, etc. if bound to an object): | |||
| Attribute syntax(es) (include 1setOf and range as in Section 4.2): | ||||
| If attribute syntax is 'keyword' or 'enum', is it type2 or type3: | Attribute syntax(es) (include 1setOf and range as in Section 5.2): | |||
| If attribute syntax is 'keyword' or 'enum', is it type1 or type2: | ||||
| If this is a Printer attribute, MAY the value returned depend on | If this is a Printer attribute, MAY the value returned depend on | |||
| "document-format" (See Section 6.2): | "document-format" (See Section 7.2): | |||
| If this is a Job Template attribute, how does its specification depend | ||||
| on the value of the "multiple-document-handling" attribute: | If this is a Job Template attribute, how does its specification | |||
| Specification of this attribute (follow the style of IPP Model Section | depend on the value of the "multiple-document-handling" attribute: | |||
| 4.2): | ||||
| Specification of this attribute (follow the style of IPP Model | ||||
| Section 5.2): | ||||
| Name of proposer: | Name of proposer: | |||
| Address of proposer: | Address of proposer: | |||
| Email address of proposer: | Email address of proposer: | |||
| Note: For attributes, the IPP Designated Expert will be the point of | Note: For attributes, the IPP Designated Expert will be the point of | |||
| contact for the approved registration specification, if any | contact for the approved registration specification, if any | |||
| maintenance of the registration specification is needed. | maintenance of the registration specification is needed. | |||
| 11.6 Attribute Syntax registration | A.4. Attribute Syntax registration | |||
| Type of registration: attribute syntax | ||||
| Type of registration: attribute syntax | ||||
| Proposed name of this attribute syntax: | Proposed name of this attribute syntax: | |||
| Type of attribute syntax (integer, octetString, character-string, see | ||||
| [RFC2910]): | Type of attribute syntax (integer, octetString, character-string, see | |||
| Numeric tag according to [RFC2910] (to be assigned by the IPP | [RFC2910bis]): | |||
| Numeric tag according to [RFC2910bis] (to be assigned by the IPP | ||||
| Designated Expert in consultation with IANA): | Designated Expert in consultation with IANA): | |||
| Specification of this attribute (follow the style of IPP Model Section | ||||
| 4.1): | Specification of this attribute (follow the style of IPP Model | |||
| Section 5.1): | ||||
| Name of proposer: | Name of proposer: | |||
| Address of proposer: | Address of proposer: | |||
| Email address of proposer: | Email address of proposer: | |||
| Note: For attribute syntaxes, the IPP Designated Expert will be the | Note: For attribute syntaxes, the IPP Designated Expert will be the | |||
| point of contact for the approved registration specification, if any | point of contact for the approved registration specification, if any | |||
| maintenance of the registration specification is needed. | maintenance of the registration specification is needed. | |||
| 11.7 Operation registration | A.5. Operation registration | |||
| Type of registration: operation | ||||
| Type of registration: operation | ||||
| Proposed name of this operation: | Proposed name of this operation: | |||
| Numeric operation-id value according to section 4.4.15 (to be assigned | ||||
| by the IPP Designated Expert in consultation with IANA): | Numeric operation-id value according to Section 5.4.15 (to be | |||
| assigned by the IPP Designated Expert in consultation with IANA): | ||||
| Object Target (Job, Printer, etc. that operation is upon): | Object Target (Job, Printer, etc. that operation is upon): | |||
| Specification of this operation (follow the style of IPP Model Section | ||||
| 3): | Specification of this operation (follow the style of IPP Model | |||
| Section 4): | ||||
| Name of proposer: | Name of proposer: | |||
| Address of proposer: | Address of proposer: | |||
| Email address of proposer: | Email address of proposer: | |||
| Note: For operations, the IPP Designated Expert will be the point of | Note: For operations, the IPP Designated Expert will be the point of | |||
| contact for the approved registration specification, if any | contact for the approved registration specification, if any | |||
| maintenance of the registration specification is needed. | maintenance of the registration specification is needed. | |||
| 11.8 Attribute Group registration | A.6. Attribute Group registration | |||
| Type of registration: attribute group | ||||
| Type of registration: attribute group | ||||
| Proposed name of this attribute group: | Proposed name of this attribute group: | |||
| Numeric tag according to [RFC2910] (to be assigned by the IPP | ||||
| Numeric tag according to [RFC2910bis] (to be assigned by the IPP | ||||
| Designated Expert in consultation with IANA): | Designated Expert in consultation with IANA): | |||
| Operation requests and group number for each operation in which the | Operation requests and group number for each operation in which the | |||
| attribute group occurs: | attribute group occurs: | |||
| Operation responses and group number for each operation in which the | Operation responses and group number for each operation in which the | |||
| attribute group occurs: | attribute group occurs: | |||
| Specification of this attribute group (follow the style of IPP Model | Specification of this attribute group (follow the style of IPP Model | |||
| Section 3): | Section 4): | |||
| Name of proposer: | Name of proposer: | |||
| Address of proposer: | Address of proposer: | |||
| Email address of proposer: | Email address of proposer: | |||
| Note: For attribute groups, the IPP Designated Expert will be the | Note: For attribute groups, the IPP Designated Expert will be the | |||
| point of contact for the approved registration specification, if any | point of contact for the approved registration specification, if any | |||
| maintenance of the registration specification is needed. | maintenance of the registration specification is needed. | |||
| 11.9 Status code registration | A.7. Status code registration | |||
| Type of registration: status code | ||||
| Type of registration: status code | ||||
| Keyword symbolic name of this status code value: | Keyword symbolic name of this status code value: | |||
| Numeric value (to be assigned by the IPP Designated Expert in | Numeric value (to be assigned by the IPP Designated Expert in | |||
| consultation with IANA): | consultation with IANA): | |||
| Operations that this status code may be used with: | ||||
| Operations that this status code can be used with: | ||||
| Specification of this status code (follow the style of IPP Model | Specification of this status code (follow the style of IPP Model | |||
| Section 13 APPENDIX B: Status Codes and Suggested Status Code | Appendix B APPENDIX B: Status Codes and Suggested Status Code | |||
| Messages): | Messages): | |||
| Name of proposer: | Name of proposer: | |||
| Address of proposer: | Address of proposer: | |||
| Email address of proposer: | Email address of proposer: | |||
| Note: For status codes, the Designated Expert will be the point of | Note: For status codes, the Designated Expert will be the point of | |||
| contact for the approved registration specification, if any | contact for the approved registration specification, if any | |||
| maintenance of the registration specification is needed. | maintenance of the registration specification is needed. | |||
| 11.10 Out-of-band Attribute Value registration | A.8. Out-of-band Attribute Value registration | |||
| Type of registration: out-of-band attribute value | ||||
| Proposed name of this out-of-band attribute value: | ||||
| Numeric tag according to [RFC2910] (to be assigned by the IPP Designated | ||||
| Expert in consultation with IANA): | ||||
| Operations that this out-of-band attribute value may be used with: | ||||
| Attributes that this out-of-band attribute value may be used with: | ||||
| Specification of this out-of-band attribute value (follow the style of | ||||
| the beginning of IPP Model Section 4.1): | ||||
| Name of proposer: | ||||
| Address of proposer: | ||||
| Email address of proposer: | ||||
| Note: For out-of-band attribute values, the IPP Designated Expert | ||||
| will be the point of contact for the approved registration | ||||
| specification, if any maintenance of the registration specification | ||||
| is needed. | ||||
| 12. APPENDIX A: Terminology | ||||
| This specification document uses the terminology defined in this | ||||
| section. | ||||
| 12.1 Conformance Terminology | ||||
| The key words "MUST", "MUST NOT", "REQUIRED", "SHOULD", "SHOULD NOT", | ||||
| "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be | ||||
| interpreted as described in RFC 2119 [RFC2119]. | ||||
| 12.1.1 NEED NOT | ||||
| This term is not included in RFC 2119. The verb "NEED NOT" indicates | ||||
| an action that the subject of the sentence does not have to implement | ||||
| in order to claim conformance to the standard. The verb "NEED NOT" | ||||
| is used instead of "MAY NOT" since "MAY NOT" sounds like a | ||||
| prohibition. | ||||
| 12.2 Model Terminology | ||||
| 12.2.1 Keyword | ||||
| Keywords are used within this document as identifiers of semantic | ||||
| entities within the abstract model (see section 4.1.2.3). Attribute | ||||
| names, some attribute values, attribute syntaxes, and attribute group | ||||
| names are represented as keywords. | ||||
| 12.2.2 Attributes | ||||
| An attribute is an item of information that is associated with an | ||||
| instance of an IPP object. An attribute consists of an attribute | ||||
| name and one or more attribute values. Each attribute has a specific | ||||
| attribute syntax. All object attributes are defined in section 4 and | ||||
| all operation attributes are defined in section 3. | ||||
| Job Template Attributes are described in section 4.2. The client | ||||
| optionally supplies Job Template attributes in a create request | ||||
| (operation requests that create Job objects). The Printer object has | ||||
| associated attributes which define supported and default values for | ||||
| the Printer. | ||||
| 12.2.2.1 Attribute Name | ||||
| Each attribute is uniquely identified in this document by its | ||||
| attribute name. An attribute name is a keyword. The keyword | ||||
| attribute name is given in the section header describing that | ||||
| attribute. In running text in this document, attribute names are | ||||
| indicated inside double quotation marks (") where the quotation marks | ||||
| are not part of the keyword itself. | ||||
| 12.2.2.2 Attribute Group Name | ||||
| Related attributes are grouped into named groups. The name of the | ||||
| group is a keyword. The group name may be used in place of naming | ||||
| all the attributes in the group explicitly. Attribute groups are | ||||
| defined in section 3. | ||||
| 12.2.2.3 Attribute Value | ||||
| Each attribute has one or more values. Attribute values are | ||||
| represented in the syntax type specified for that attribute. In | ||||
| running text in this document, attribute values are indicated inside | ||||
| single quotation marks ('), whether their attribute syntax is | ||||
| keyword, integer, text, etc. where the quotation marks are not part | ||||
| of the value itself. | ||||
| 12.2.2.4 Attribute Syntax | ||||
| Each attribute is defined using an explicit syntax type. In this | ||||
| document, each syntax type is defined as a keyword with specific | ||||
| meaning. The "Encoding and Transport" document [RFC2910] indicates | ||||
| the actual "on-the-wire" encoding rules for each syntax type. | ||||
| Attribute syntax types are defined in section 4.1. | ||||
| 12.2.3 Supports | ||||
| By definition, a Printer object supports an attribute only if that | ||||
| Printer object responds with the corresponding attribute populated | ||||
| with some value(s) in a response to a query for that attribute. A | ||||
| Printer object supports an attribute value if the value is one of the | ||||
| Printer object's "supported values" attributes. The device behind a | ||||
| Printer object may exhibit a behavior that corresponds to some IPP | ||||
| attribute, but if the Printer object, when queried for that | ||||
| attribute, doesn't respond with the attribute, then as far as IPP is | ||||
| concerned, that implementation does not support that feature. If the | ||||
| Printer object's "xxx-supported" attribute is not populated with a | ||||
| particular value (even if that value is a legal value for that | ||||
| attribute), then that Printer object does not support that particular | ||||
| value. | ||||
| A conforming implementation MUST support all REQUIRED attributes. | ||||
| However, even for REQUIRED attributes, conformance to IPP does not | ||||
| mandate that all implementations support all possible values | ||||
| representing all possible job processing behaviors and features. For | ||||
| example, if a given instance of a Printer supports only certain | ||||
| document formats, then that Printer responds with the "document- | ||||
| format-supported" attribute populated with a set of values, possibly | ||||
| only one, taken from the entire set of possible values defined for | ||||
| that attribute. This limited set of values represents the Printer's | ||||
| set of supported document formats. Supporting an attribute and some | ||||
| set of values for that attribute enables IPP end users to be aware of | ||||
| and make use of those features associated with that attribute and | ||||
| those values. If an implementation chooses to not support an | ||||
| attribute or some specific value, then IPP end users would have no | ||||
| ability to make use of that feature within the context of IPP itself. | ||||
| However, due to existing practice and legacy systems which are not | ||||
| IPP aware, there might be some other mechanism outside the scope of | ||||
| IPP to control or request the "unsupported" feature (such as embedded | ||||
| instructions within the document data itself). | ||||
| For example, consider the "finishings-supported" attribute. | Type of registration: out-of-band attribute value | |||
| 1) If a Printer object is not physically capable of stapling, the | Proposed name of this out-of-band attribute value: | |||
| "finishings-supported" attribute MUST NOT be populated with the | ||||
| value of 'staple'. | ||||
| 2) A Printer object is physically capable of stapling, however an | ||||
| implementation chooses not to support stapling in the IPP | ||||
| "finishings" attribute. In this case, 'staple' MUST NOT be a | ||||
| value in the "finishings-supported" Printer object attribute. | ||||
| Without support for the value 'staple', an IPP end user would | ||||
| have no means within the protocol itself to request that a Job | ||||
| be stapled. However, an existing document data formatter might | ||||
| be able to request that the document be stapled directly with | ||||
| an embedded instruction within the document data. In this | ||||
| case, the IPP implementation does not "support" stapling, | ||||
| however the end user is still able to have some control over | ||||
| the stapling of the completed job. | ||||
| 3) A Printer object is physically capable of stapling, and an | ||||
| implementation chooses to support stapling in the IPP | ||||
| "finishings" attribute. In this case, 'staple' MUST be a value | ||||
| in the "finishings-supported" Printer object attribute. Doing | ||||
| so, would enable end users to be aware of and make use of the | ||||
| stapling feature using IPP attributes. | ||||
| Even though support for Job Template attributes by a Printer object | Numeric tag according to [RFC2910bis] (to be assigned by the IPP | |||
| is OPTIONAL, it is RECOMMENDED that if the device behind a Printer | Designated Expert in consultation with IANA): | |||
| object is capable of realizing any feature or function that | ||||
| corresponds to an IPP attribute and some associated value, then that | ||||
| implementation SHOULD support that IPP attribute and value. | ||||
| The set of values in any of the supported value attributes is set | Operations that this out-of-band attribute value can be used with: | |||
| (populated) by some administrative process or automatic sensing | ||||
| mechanism that is outside the scope of this IPP/1.1 document. For | ||||
| administrative policy and control reasons, an administrator may | ||||
| choose to make only a subset of possible values visible to the end | ||||
| user. In this case, the real output device behind the IPP Printer | ||||
| abstraction may be capable of a certain feature, however an | ||||
| administrator is specifying that access to that feature not be | ||||
| exposed to the end user through the IPP protocol. Also, since a | ||||
| Printer object may represent a logical print device (not just a | ||||
| physical device) the actual process for supporting a value is | ||||
| undefined and left up to the implementation. However, if a Printer | ||||
| object supports a value, some manual human action may be needed to | ||||
| realize the semantic action associated with the value, but no end | ||||
| user action is required. | ||||
| For example, if one of the values in the "finishings-supported" | Attributes that this out-of-band attribute value can be used with: | |||
| attribute is 'staple', the actual process might be an automatic | ||||
| staple action by a physical device controlled by some command sent to | ||||
| the device. Or, the actual process of stapling might be a manual | ||||
| action by an operator at an operator attended Printer object. | ||||
| For another example of how supported attributes function, consider a | Specification of this out-of-band attribute value (follow the style | |||
| system administrator who desires to control all print jobs so that no | of the beginning of IPP Model Section 5.1): | |||
| job sheets are printed in order to conserve paper. To force no job | ||||
| sheets, the system administrator sets the only supported value for | ||||
| the "job-sheets-supported" attribute to 'none'. In this case, if a | ||||
| client requests anything except 'none', the create request is | ||||
| rejected or the "job-sheets" value is ignored (depending on the value | ||||
| of "ipp-attribute-fidelity"). To force the use of job start/end | ||||
| sheets on all jobs, the administrator does not include the value | ||||
| 'none' in the "job-sheets- supported" attribute. In this case, if a | ||||
| client requests 'none', the create request is rejected or the "job- | ||||
| sheets" value is ignored (again depending on the value of "ipp- | ||||
| attribute-fidelity"). | ||||
| 12.2.4 print-stream page | Name of proposer: | |||
| A "print-stream page" is a page according to the definition of pages | Address of proposer: | |||
| in the language used to express the document data. | ||||
| 12.2.5 impression | Email address of proposer: | |||
| An "impression" is the image (possibly many print-stream pages in | Note: For out-of-band attribute values, the IPP Designated Expert | |||
| different configurations) imposed onto a single media page. | will be the point of contact for the approved registration | |||
| specification, if any maintenance of the registration specification | ||||
| is needed. | ||||
| 13. APPENDIX B: Status Codes and Suggested Status Code Messages | Appendix B. Status Codes and Suggested Status Code Messages | |||
| This section defines status code enum keywords and values that are | This section defines status code enum keywords and values that are | |||
| used to provide semantic information on the results of an operation | used to provide semantic information on the results of an operation | |||
| request. Each operation response MUST include a status code. The | request. Each operation response MUST include a status code. The | |||
| response MAY also contain a status message that provides a short | response MAY also contain a status message that provides a short | |||
| textual description of the status. The status code is intended for | textual description of the status. The status code is intended for | |||
| use by automata, and the status message is intended for the human end | use by automata, and the status message is intended for the human End | |||
| user. Since the status message is an OPTIONAL component of the | User. | |||
| operation response, an IPP application (i.e., a browser, GUI, print | ||||
| driver or gateway) is NOT REQUIRED to examine or display the status | ||||
| message, since it MAY not be returned to the application. | ||||
| The prefix of the status keyword defines the class of response as | The prefix of the status keyword defines the class of response as | |||
| follows: | follows: | |||
| "informational" - Request received, continuing process | "informational" - Request received, continuing process | |||
| "successful" - The action was successfully received, understood, | ||||
| and accepted | ||||
| "redirection" - Further action must be taken in order to complete | ||||
| the request | ||||
| "client-error" - The request contains bad syntax or cannot be | ||||
| fulfilled | ||||
| "server-error" - The IPP object failed to fulfill an apparently | ||||
| valid request | ||||
| As with type2 enums, IPP status codes are extensible. IPP clients | "successful" - The action was successfully received, understood, and | |||
| are NOT REQUIRED to understand the meaning of all registered status | accepted | |||
| codes, though such understanding is obviously desirable. However, | ||||
| IPP clients MUST understand the class of any status code, as | "redirection" - Further action is taken in order to complete the | |||
| indicated by the prefix, and treat any unrecognized response as being | request | |||
| equivalent to the first status code of that class, with the exception | ||||
| that an unrecognized response MUST NOT be cached. For example, if an | "client-error" - The request contains bad syntax or cannot be | |||
| unrecognized status code of "client-error-xxx-yyy" is received by the | fulfilled | |||
| client, it can safely assume that there was something wrong with its | ||||
| request and treat the response as if it had received a "client- | "server-error" - The IPP object failed to fulfill an apparently valid | |||
| error-bad-request" status code. In such cases, IPP applications | request | |||
| SHOULD present the OPTIONAL message (if present) to the end user | ||||
| since the message is likely to contain human readable information | As with type2 enums, IPP status codes are extensible. Regardless of | |||
| which will help to explain the unusual status. The name of the enum | whether all status codes are recognized, IPP Clients MUST understand | |||
| is the suggested status message for US English. | the class of any status code, as indicated by the prefix, and treat | |||
| any unrecognized response as being equivalent to the first status | ||||
| code of that class, with the exception that an unrecognized response | ||||
| MUST NOT be cached. For example, if an unrecognized status code of | ||||
| "client-error-xxx-yyy" is received by the Client, it can safely | ||||
| assume that there was something wrong with its request and treat the | ||||
| response as if it had received a "client-error-bad-request" status | ||||
| code. The name of the enum is the suggested status message for US | ||||
| English. | ||||
| See [PWG5100.19] for guidelines on presenting status messages to End | ||||
| Users. | ||||
| The status code values range from 0x0000 to 0x7FFF. The value ranges | The status code values range from 0x0000 to 0x7FFF. The value ranges | |||
| for each status code class are as follows: | for each status code class are as follows: | |||
| "successful" - 0x0000 to 0x00FF | "successful" - 0x0000 to 0x00FF | |||
| "informational" - 0x0100 to 0x01FF | ||||
| "redirection" - 0x0200 to 0x02FF | ||||
| "client-error" - 0x0400 to 0x04FF | ||||
| "server-error" - 0x0500 to 0x05FF | ||||
| The top half (128 values) of each range (0x0n40 to 0x0nFF, for n = 0 | "informational" - 0x0100 to 0x01FF | |||
| "redirection" - 0x0300 to 0x03FF | ||||
| "client-error" - 0x0400 to 0x04FF | ||||
| "server-error" - 0x0500 to 0x05FF | ||||
| The top half (128 values) of each range (0x0n80 to 0x0nFF, for n = 0 | ||||
| to 5) is reserved for vendor use within each status code class. | to 5) is reserved for vendor use within each status code class. | |||
| Values 0x0600 to 0x7FFF are reserved for future assignment by IETF | Values 0x0600 to 0x7FFF are reserved for future assignment by | |||
| standards track documents and MUST NOT be used. | standards track documents and MUST NOT be used. | |||
| 13.1 Status Codes | B.1. Status Codes | |||
| Each status code is described below. Section 13.1.5.9 contains a | Each status code is described below. Appendix B.1.5.9 contains a | |||
| table that indicates which status codes apply to which operations. | table that indicates which status codes apply to which operations. | |||
| The Implementer's Guide [IPP-IIG] describe the suggested steps for | The Implementor's Guides [RFC3196] [PWG5100.19] describe the | |||
| processing IPP attributes for all operations, including returning | suggested steps for processing IPP attributes for all operations, | |||
| status codes. | including returning status codes. | |||
| 13.1.1 Informational | B.1.1. Informational | |||
| This class of status code indicates a provisional response and is to | This class of status code indicates a provisional response and is to | |||
| be used for informational purposes only. | be used for informational purposes only. | |||
| There are no status codes defined in IPP/1.1 for this class of status | There are no status codes defined in this document for this class of | |||
| code. | status code. | |||
| 13.1.2 Successful Status Codes | B.1.2. Successful Status Codes | |||
| This class of status code indicates that the client's request was | This class of status code indicates that the client's request was | |||
| successfully received, understood, and accepted. | successfully received, understood, and accepted. | |||
| 13.1.2.1 successful-ok (0x0000) | B.1.2.1. successful-ok (0x0000) | |||
| The request has succeeded and no request attributes were substituted | The request has succeeded and no request attributes were substituted | |||
| or ignored. In the case of a response to a create request, the | or ignored. In the case of a response to a Job Creation request, the | |||
| 'successful-ok' status code indicates that the request was | 'successful-ok' status code indicates that the request was | |||
| successfully received and validated, and that the Job object has been | successfully received and validated, and that the Job object has been | |||
| created; it does not indicate that the job has been processed. The | created; it does not indicate that the Job has been processed. The | |||
| transition of the Job object into the 'completed' state is the only | transition of the Job object into the 'completed' state is the only | |||
| indicator that the job has been printed. | indicator that the Job has been printed. | |||
| 13.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001) | B.1.2.2. successful-ok-ignored-or-substituted-attributes (0x0001) | |||
| The request has succeeded, but some supplied (1) attributes were | The request has succeeded, but some supplied (1) attributes were | |||
| ignored or (2) unsupported values were substituted with supported | ignored or (2) unsupported values were substituted with supported | |||
| values or were ignored in order to perform the operation without | values or were ignored in order to perform the operation without | |||
| rejecting it. Unsupported attributes, attribute syntaxes, or values | rejecting it. Unsupported attributes, attribute syntaxes, or values | |||
| MUST be returned in the Unsupported Attributes group of the response | MUST be returned in the Unsupported Attributes group of the response | |||
| for all operations. There is an exception to this rule for the query | for all operations. There is an exception to this rule for the query | |||
| operations: Get-Printer-Attributes, Get-Jobs, and Get-Job-Attributes | operations: Get-Printer-Attributes, Get-Jobs, and Get-Job-Attributes | |||
| for the "requested-attributes" operation attribute only. When the | for the "requested-attributes" operation attribute only. When the | |||
| supplied values of the "requested-attributes" operation attribute are | supplied values of the "requested-attributes" operation attribute are | |||
| requesting attributes that are not supported, the IPP object MAY, but | requesting attributes that are not supported, the IPP object SHOULD | |||
| is NOT REQUIRED to, return the "requested-attributes" attribute in | return the "requested-attributes" attribute in the Unsupported | |||
| the Unsupported Attribute response group (with the unsupported values | Attribute response group (with the unsupported values only). See | |||
| only). See sections 3.1.7 and 3.2.1.2. | Sections 4.1.7 and 4.2.1.2. | |||
| 13.1.2.3 successful-ok-conflicting-attributes (0x0002) | B.1.2.3. successful-ok-conflicting-attributes (0x0002) | |||
| The request has succeeded, but some supplied attribute values | The request has succeeded, but some supplied attribute values | |||
| conflicted with the values of other supplied attributes. These | conflicted with the values of other supplied attributes. These | |||
| conflicting values were either (1) substituted with (supported) | conflicting values were either (1) substituted with (supported) | |||
| values or (2) the attributes were removed in order to process the job | values or (2) the attributes were removed in order to process the Job | |||
| without rejecting it. Attributes or values which conflict with other | without rejecting it. Attributes or values which conflict with other | |||
| attributes and have been substituted or ignored MUST be returned in | attributes and have been substituted or ignored MUST be returned in | |||
| the Unsupported Attributes group of the response for all operations | the Unsupported Attributes group of the response for all operations | |||
| as supplied by the client. See sections 3.1.7 and 3.2.1.2. | as supplied by the Client. See Sections 4.1.7 and 4.2.1.2. | |||
| 13.1.3 Redirection Status Codes | B.1.3. Redirection Status Codes | |||
| This class of status code indicates that further action needs to be | This class of status code indicates that further action needs to be | |||
| taken to fulfill the request. | taken to fulfill the request. | |||
| There are no status codes defined in IPP/1.1 for this class of status | There are no status codes defined in this document for this class of | |||
| code. | status code. | |||
| 13.1.4 Client Error Status Codes | B.1.4. Client Error Status Codes | |||
| This class of status code is intended for cases in which the client | This class of status code is intended for cases in which the Client | |||
| seems to have erred. The IPP object SHOULD return a message | seems to have erred. The IPP object SHOULD return a message | |||
| containing an explanation of the error situation and whether it is a | containing an explanation of the error situation and whether it is a | |||
| temporary or permanent condition. | temporary or permanent condition. | |||
| 13.1.4.1 client-error-bad-request (0x0400) | B.1.4.1. client-error-bad-request (0x0400) | |||
| The request could not be understood by the IPP object due to | The request could not be understood by the IPP object due to | |||
| malformed syntax (such as the value of a fixed length attribute whose | malformed syntax (such as the value of a fixed length attribute whose | |||
| length does not match the prescribed length for that attribute - see | length does not match the prescribed length for that attribute - see | |||
| the Implementer's Guide [IPP-IIG] ). The IPP application SHOULD NOT | the Implementor's Guides [RFC3196] [PWG5100.19]). The IPP | |||
| repeat the request without modifications. | application SHOULD NOT repeat the request without modifications. | |||
| 13.1.4.2 client-error-forbidden (0x0401) | B.1.4.2. client-error-forbidden (0x0401) | |||
| The IPP object understood the request, but is refusing to fulfill it. | The IPP object understood the request, but is refusing to fulfill it. | |||
| Additional authentication information or authorization credentials | Additional authentication information or authorization credentials | |||
| will not help and the request SHOULD NOT be repeated. This status | will not help and the request SHOULD NOT be repeated. This status | |||
| code is commonly used when the IPP object does not wish to reveal | code is commonly used when the IPP object does not wish to reveal | |||
| exactly why the request has been refused or when no other response is | exactly why the request has been refused or when no other response is | |||
| applicable. | applicable. | |||
| 13.1.4.3 client-error-not-authenticated (0x0402) | B.1.4.3. client-error-not-authenticated (0x0402) | |||
| The request requires user authentication. The IPP client may repeat | The request requires user authentication. The IPP Client can repeat | |||
| the request with suitable authentication information. If the request | the request with suitable authentication information. If the request | |||
| already included authentication information, then this status code | already included authentication information, then this status code | |||
| indicates that authorization has been refused for those credentials. | indicates that authorization has been refused for those credentials. | |||
| If this response contains the same challenge as the prior response, | If this response contains the same challenge as the prior response, | |||
| and the user agent has already attempted authentication at least | and the user agent has already attempted authentication at least | |||
| once, then the response message may contain relevant diagnostic | once, then the response message can contain relevant diagnostic | |||
| information. This status codes reveals more information than | information. This status codes reveals more information than | |||
| "client-error-forbidden". | "client-error-forbidden". | |||
| 13.1.4.4 client-error-not-authorized (0x0403) | B.1.4.4. client-error-not-authorized (0x0403) | |||
| The requester is not authorized to perform the request. Additional | The requester is not authorized to perform the request. Additional | |||
| authentication information or authorization credentials will not help | authentication information or authorization credentials will not help | |||
| and the request SHOULD NOT be repeated. This status code is used | and the request SHOULD NOT be repeated. This status code is used | |||
| when the IPP object wishes to reveal that the authentication | when the IPP object wishes to reveal that the authentication | |||
| information is understandable, however, the requester is explicitly | information is understandable, however, the requester is explicitly | |||
| not authorized to perform the request. This status codes reveals | not authorized to perform the request. This status codes reveals | |||
| more information than "client-error-forbidden" and "client-error- | more information than "client-error-forbidden" and "client-error-not- | |||
| not-authenticated". | authenticated". | |||
| 13.1.4.5 client-error-not-possible (0x0404) | B.1.4.5. client-error-not-possible (0x0404) | |||
| This status code is used when the request is for something that can | This status code is used when the request is for something that | |||
| not happen. For example, there might be a request to cancel a job | cannot happen. For example, there might be a request to cancel a Job | |||
| that has already been canceled or aborted by the system. The IPP | that has already been canceled or aborted by the system. The IPP | |||
| client SHOULD NOT repeat the request. | Client SHOULD NOT repeat the request. | |||
| 13.1.4.6 client-error-timeout (0x0405) | B.1.4.6. client-error-timeout (0x0405) | |||
| The client did not produce a request within the time that the IPP | The Client did not produce a request within the time that the IPP | |||
| object was prepared to wait. For example, a client issued a Create- | object was prepared to wait. For example, a Client issued a Create- | |||
| Job operation and then, after a long period of time, issued a Send- | Job operation and then, after a long period of time, issued a Send- | |||
| Document operation and this error status code was returned in | Document operation and this error status code was returned in | |||
| response to the Send-Document request (see section 3.3.1). The IPP | response to the Send-Document request (see Section 4.3.1). The IPP | |||
| object might have been forced to clean up resources that had been | object might have been forced to clean up resources that had been | |||
| held for the waiting additional Documents. The IPP object was forced | held for the waiting additional Documents. The IPP object was forced | |||
| to close the Job since the client took too long. The client SHOULD | to close the Job since the Client took too long. The Client SHOULD | |||
| NOT repeat the request without modifications. | NOT repeat the request without modifications. | |||
| 13.1.4.7 client-error-not-found (0x0406) | B.1.4.7. client-error-not-found (0x0406) | |||
| The IPP object has not found anything matching the request URI. No | The IPP object has not found anything matching the request URI. No | |||
| indication is given of whether the condition is temporary or | indication is given of whether the condition is temporary or | |||
| permanent. For example, a client with an old reference to a Job (a | permanent. For example, a Client with an old reference to a Job (a | |||
| URI) tries to cancel the Job, however in the mean time the Job might | URI) tries to cancel the Job, however in the mean time the Job might | |||
| have been completed and all record of it at the Printer has been | have been completed and all record of it at the Printer has been | |||
| deleted. This status code, 'client-error-not-found' is returned | deleted. This status code, 'client-error-not-found' is returned | |||
| indicating that the referenced Job can not be found. This error | indicating that the referenced Job cannot be found. This error | |||
| status code is also used when a client supplies a URI as a reference | status code is also used when a Client supplies a URI as a reference | |||
| to the document data in either a Print-URI or Send-URI operation, but | to the Document data in either a Print-URI or Send-URI operation, but | |||
| the document can not be found. | the document cannot be found. | |||
| In practice, an IPP application should avoid a not found situation by | In practice, an IPP application should avoid a not found situation by | |||
| first querying and presenting a list of valid Printer URIs and Job | first querying and presenting a list of valid Printer URIs and Job | |||
| URIs to the end-user. | URIs to the End User. | |||
| 13.1.4.8 client-error-gone (0x0407) | B.1.4.8. client-error-gone (0x0407) | |||
| The requested object is no longer available and no forwarding address | The requested object is no longer available and no forwarding address | |||
| is known. This condition should be considered permanent. Clients | is known. This condition should be considered permanent. Clients | |||
| with link editing capabilities should delete references to the | with link editing capabilities should delete references to the | |||
| request URI after user approval. If the IPP object does not know or | request URI after user approval. If the IPP object does not know or | |||
| has no facility to determine, whether or not the condition is | has no facility to determine, whether or not the condition is | |||
| permanent, the status code "client-error-not-found" should be used | permanent, the status code "client-error-not-found" should be used | |||
| instead. | instead. | |||
| This response is primarily intended to assist the task of maintenance | This response is primarily intended to assist the task of maintenance | |||
| by notifying the recipient that the resource is intentionally | by notifying the recipient that the resource is intentionally | |||
| unavailable and that the IPP object administrator desires that remote | unavailable and that the IPP object Adminstrator desires that remote | |||
| links to that resource be removed. It is not necessary to mark all | links to that resource be removed. It is not necessary to mark all | |||
| permanently unavailable resources as "gone" or to keep the mark for | permanently unavailable resources as "gone" or to keep the mark for | |||
| any length of time -- that is left to the discretion of the IPP | any length of time -- that is left to the discretion of the IPP | |||
| object administrator and/or Printer implementation. | object Adminstrator and/or Printer implementation. | |||
| 13.1.4.9 client-error-request-entity-too-large (0x0408) | B.1.4.9. client-error-request-entity-too-large (0x0408) | |||
| The IPP object is refusing to process a request because the request | The IPP object is refusing to process a request because the request | |||
| entity is larger than the IPP object is willing or able to process. | entity is larger than the IPP object is willing or able to process. | |||
| An IPP Printer returns this status code when it limits the size of | An IPP Printer returns this status code when it limits the size of | |||
| print jobs and it receives a print job that exceeds that limit or | print Jobs and it receives a print Job that exceeds that limit or | |||
| when the attributes are so many that their encoding causes the | when the attributes are so many that their encoding causes the | |||
| request entity to exceed IPP object capacity. | request entity to exceed IPP object capacity. | |||
| 13.1.4.10 client-error-request-value-too-long (0x0409) | B.1.4.10. client-error-request-value-too-long (0x0409) | |||
| The IPP object is refusing to service the request because one or more | The IPP object is refusing to service the request because one or more | |||
| of the client-supplied attributes has a variable length value that is | of the Client-supplied attributes has a variable length value that is | |||
| longer than the maximum length specified for that attribute. The IPP | longer than the maximum length specified for that attribute. The IPP | |||
| object might not have sufficient resources (memory, buffers, etc.) to | object might not have sufficient resources (memory, buffers, etc.) to | |||
| process (even temporarily), interpret, and/or ignore a value larger | process (even temporarily), interpret, and/or ignore a value larger | |||
| than the maximum length. Another use of this error code is when the | than the maximum length. Another use of this error code is when the | |||
| IPP object supports the processing of a large value that is less than | IPP object supports the processing of a large value that is less than | |||
| the maximum length, but during the processing of the request as a | the maximum length, but during the processing of the request as a | |||
| whole, the object may pass the value onto some other system component | whole, the object can pass the value onto some other system component | |||
| which is not able to accept the large value. For more details, see | which is not able to accept the large value. For more details, see | |||
| the Implementer's Guide [IPP-IIG] . | the Implementor's Guides [RFC3196] [PWG5100.19]. | |||
| Note: For attribute values that are URIs, this rare condition is | Note: For attribute values that are URIs, this rare condition is only | |||
| only likely to occur when a client has improperly submitted a request | likely to occur when a Client has improperly submitted a request with | |||
| with long query information (e.g. an IPP application allows an end- | long query information (e.g. an IPP application allows an End User to | |||
| user to enter an invalid URI), when the client has descended into a | enter an invalid URI), when the Client has descended into a URI | |||
| URI "black hole" of redirection (e.g., a redirected URI prefix that | "black hole" of redirection (e.g., a redirected URI prefix that | |||
| points to a suffix of itself), or when the IPP object is under attack | points to a suffix of itself), or when the IPP object is under attack | |||
| by a client attempting to exploit security holes present in some IPP | by a Client attempting to exploit security holes present in some IPP | |||
| objects using fixed-length buffers for reading or manipulating the | objects using fixed-length buffers for reading or manipulating the | |||
| Request-URI. | Request-URI. | |||
| 13.1.4.11 client-error-document-format-not-supported (0x040A) | B.1.4.11. client-error-document-format-not-supported (0x040A) | |||
| The IPP object is refusing to service the request because the | The IPP object is refusing to service the request because the | |||
| document data is in a format, as specified in the "document-format" | Document data is in a format, as specified in the "document-format" | |||
| operation attribute, that is not supported by the Printer object. | operation attribute, that is not supported by the Printer. This | |||
| This error is returned independent of the client-supplied "ipp- | error is returned independent of the Client-supplied "ipp-attribute- | |||
| attribute-fidelity". The Printer object MUST return this status | fidelity". The Printer MUST return this status code, even if there | |||
| code, even if there are other Job Template attributes that are not | are other Job Template attributes that are not supported as well, | |||
| supported as well, since this error is a bigger problem than with Job | since this error is a bigger problem than with Job Template | |||
| Template attributes. See sections 3.1.6.1, 3.1.7, and 3.2.1.1. | attributes. See Sections 4.1.6.1, 4.1.7, and 4.2.1.1. | |||
| 13.1.4.12 client-error-attributes-or-values-not-supported (0x040B) | B.1.4.12. client-error-attributes-or-values-not-supported (0x040B) | |||
| In a create request, if the Printer object does not support one or | In a Job Creation request, if the Printer does not support one or | |||
| more attributes, attribute syntaxes, or attribute values supplied in | more attributes, attribute syntaxes, or attribute values supplied in | |||
| the request and the client supplied the "ipp-attribute-fidelity" | the request and the Client supplied the "ipp-attribute-fidelity" | |||
| operation attribute with the 'true' value, the Printer object MUST | operation attribute with the 'true' value, the Printer MUST return | |||
| return this status code. The Printer object MUST also return in the | this status code. The Printer MUST also return in the Unsupported | |||
| Unsupported Attributes Group all the attributes and/or values | Attributes group all the attributes and/or values supplied by the | |||
| supplied by the client that are not supported. See section 3.1.7. | Client that are not supported. See Section 4.1.7. For example, if | |||
| For example, if the request indicates 'iso-a4' media, but that media | the request indicates 'iso-a4' media, but that media type is not | |||
| type is not supported by the Printer object. Or, if the client | supported by the Printer. Or, if the Client supplies a Job Template | |||
| supplies a Job Template attribute and the attribute itself is not | attribute and the attribute itself is not even supported by the | |||
| even supported by the Printer. If the "ipp-attribute-fidelity" | Printer. If the "ipp-attribute-fidelity" attribute is 'false', the | |||
| attribute is 'false', the Printer MUST ignore or substitute values | Printer MUST ignore or substitute values for unsupported Job Template | |||
| for unsupported Job Template attributes and values rather than reject | attributes and values rather than reject the request and return this | |||
| the request and return this status code. | status code. | |||
| For any operation where a client requests attributes (such as a Get- | For any operation where a Client requests attributes (such as a Get- | |||
| Jobs, Get-Printer-Attributes, or Get-Job-Attributes operation), if | Jobs, Get-Printer-Attributes, or Get-Job-Attributes operation), if | |||
| the IPP object does not support one or more of the requested | the IPP object does not support one or more of the requested | |||
| attributes, the IPP object simply ignores the unsupported requested | attributes, the IPP object simply ignores the unsupported requested | |||
| attributes and processes the request as if they had not been | attributes and processes the request as if they had not been | |||
| supplied, rather than returning this status code. In this case, the | supplied, rather than returning this status code. In this case, the | |||
| IPP object MUST return the 'successful-ok-ignored-or-substituted- | IPP object MUST return the 'successful-ok-ignored-or-substituted- | |||
| attributes' status code and MAY return the unsupported attributes as | attributes' status code and SHOULD return the unsupported attributes | |||
| values of the "requested-attributes" in the Unsupported Attributes | as values of the "requested-attributes" in the Unsupported Attributes | |||
| Group (see section 13.1.2.2). | group (see Appendix B.1.2.2). | |||
| 13.1.4.13 client-error-uri-scheme-not-supported (0x040C) | B.1.4.13. client-error-uri-scheme-not-supported (0x040C) | |||
| The scheme of the client-supplied URI in a Print-URI or a Send-URI | The scheme of the Client-supplied URI in a Print-URI or a Send-URI | |||
| operation is not supported. See sections 3.1.6.1 and 3.1.7. | operation is not supported. See Sections 4.1.6.1 and 4.1.7. | |||
| 13.1.4.14 client-error-charset-not-supported (0x040D) | B.1.4.14. client-error-charset-not-supported (0x040D) | |||
| For any operation, if the IPP Printer does not support the charset | For any operation, if the IPP Printer does not support the charset | |||
| supplied by the client in the "attributes-charset" operation | supplied by the Client in the "attributes-charset" operation | |||
| attribute, the Printer MUST reject the operation and return this | attribute, the Printer MUST reject the operation and return this | |||
| status and any 'text' or 'name' attributes using the 'utf-8' charset | status and any 'text' or 'name' attributes using the 'utf-8' charset | |||
| (see Section 3.1.4.1). See sections 3.1.6.1 and 3.1.7. | (see Section 4.1.4.1). See Sections 4.1.6.1 and 4.1.7. | |||
| 13.1.4.15 client-error-conflicting-attributes (0x040E) | B.1.4.15. client-error-conflicting-attributes (0x040E) | |||
| The request is rejected because some attribute values conflicted with | The request is rejected because some attribute values conflicted with | |||
| the values of other attributes which this document does not permit to | the values of other attributes which this document does not permit to | |||
| be substituted or ignored. The Printer object MUST also return in | be substituted or ignored. The Printer MUST also return in the | |||
| the Unsupported Attributes Group the conflicting attributes supplied | Unsupported Attributes group the conflicting attributes supplied by | |||
| by the client. See sections 3.1.7 and 3.2.1.2. | the Client. See Sections 4.1.7 and 4.2.1.2. | |||
| 13.1.4.16 client-error-compression-not-supported (0x040F) | B.1.4.16. client-error-compression-not-supported (0x040F) | |||
| The IPP object is refusing to service the request because the | The IPP object is refusing to service the request because the | |||
| document data, as specified in the "compression" operation attribute, | Document data, as specified in the "compression" operation attribute, | |||
| is compressed in a way that is not supported by the Printer object. | is compressed in a way that is not supported by the Printer. This | |||
| This error is returned independent of the client-supplied "ipp- | error is returned independent of the Client-supplied "ipp-attribute- | |||
| attribute-fidelity". The Printer object MUST return this status | fidelity". The Printer MUST return this status code, even if there | |||
| code, even if there are other Job Template attributes that are not | are other Job Template attributes that are not supported as well, | |||
| supported as well, since this error is a bigger problem than with Job | since this error is a bigger problem than with Job Template | |||
| Template attributes. See sections 3.1.6.1, 3.1.7, and 3.2.1.1. | attributes. See Sections 4.1.6.1, 4.1.7, and 4.2.1.1. | |||
| 13.1.4.17 client-error-compression-error (0x0410) | B.1.4.17. client-error-compression-error (0x0410) | |||
| The IPP object is refusing to service the request because the | The IPP object is refusing to service the request because the | |||
| document data cannot be decompressed when using the algorithm | Document data cannot be decompressed when using the algorithm | |||
| specified by the "compression" operation attribute. This error is | specified by the "compression" operation attribute. This error is | |||
| returned independent of the client-supplied "ipp-attribute-fidelity". | returned independent of the Client-supplied "ipp-attribute-fidelity". | |||
| The Printer object MUST return this status code, even if there are | The Printer MUST return this status code, even if there are Job | |||
| Job Template attributes that are not supported as well, since this | Template attributes that are not supported as well, since this error | |||
| error is a bigger problem than with Job Template attributes. See | is a bigger problem than with Job Template attributes. See Sections | |||
| sections 3.1.7 and 3.2.1.1. | 4.1.7 and 4.2.1.1. | |||
| 13.1.4.18 client-error-document-format-error (0x0411) | B.1.4.18. client-error-document-format-error (0x0411) | |||
| The IPP object is refusing to service the request because Printer | The IPP object is refusing to service the request because Printer | |||
| encountered an error in the document data while interpreting it. | encountered an error in the Document data while interpreting it. | |||
| This error is returned independent of the client-supplied "ipp- | This error is returned independent of the Client-supplied "ipp- | |||
| attribute-fidelity". The Printer object MUST return this status | attribute-fidelity". The Printer MUST return this status code, even | |||
| code, even if there are Job Template attributes that are not | if there are Job Template attributes that are not supported as well, | |||
| supported as well, since this error is a bigger problem than with Job | since this error is a bigger problem than with Job Template | |||
| Template attributes. See sections 3.1.7 and 3.2.1.1. | attributes. See Sections 4.1.7 and 4.2.1.1. | |||
| 13.1.4.19 client-error-document-access-error (0x0412) | B.1.4.19. client-error-document-access-error (0x0412) | |||
| The IPP object is refusing to service the Print-URI or Send-URI | The IPP object is refusing to service the Print-URI or Send-URI | |||
| request because Printer encountered an access error while attempting | request because Printer encountered an access error while attempting | |||
| to validate the accessibility or access the document data specified | to validate the accessibility or access the Document data specified | |||
| in the "document-uri" operation attribute. The Printer MAY also | in the "document-uri" operation attribute. The Printer MAY also | |||
| return a specific document access error code using the "document- | return a specific document access error code using the "document- | |||
| access-error" operation attribute (see section 3.1.6.4). This error | access-error" operation attribute (see Section 4.1.6.4). This error | |||
| is returned independent of the client-supplied "ipp-attribute- | is returned independent of the Client-supplied "ipp-attribute- | |||
| fidelity". The Printer object MUST return this status code, even if | fidelity". The Printer MUST return this status code, even if there | |||
| there are Job Template attributes that are not supported as well, | are Job Template attributes that are not supported as well, since | |||
| since this error is a bigger problem than with Job Template | this error is a bigger problem than with Job Template attributes. | |||
| attributes. See sections 3.1.6.1 and 3.1.7. | See Sections 4.1.6.1 and 4.1.7. | |||
| 13.1.5 Server Error Status Codes | B.1.5. Server Error Status Codes | |||
| This class of status codes indicates cases in which the IPP object is | This class of status codes indicates cases in which the IPP object is | |||
| aware that it has erred or is incapable of performing the request. | aware that it has erred or is incapable of performing the request. | |||
| The IPP object SHOULD include a message containing an explanation of | The IPP object SHOULD include a message containing an explanation of | |||
| the error situation, and whether it is a temporary or permanent | the error situation, and whether it is a temporary or permanent | |||
| condition. | condition. | |||
| 13.1.5.1 server-error-internal-error (0x0500) | B.1.5.1. server-error-internal-error (0x0500) | |||
| The IPP object encountered an unexpected condition that prevented it | The IPP object encountered an unexpected condition that prevented it | |||
| from fulfilling the request. This error status code differs from | from fulfilling the request. This error status code differs from | |||
| "server-error-temporary-error" in that it implies a more permanent | "server-error-temporary-error" in that it implies a more permanent | |||
| type of internal error. It also differs from "server-error-device- | type of internal error. It also differs from "server-error-device- | |||
| error" in that it implies an unexpected condition (unlike a paper-jam | error" in that it implies an unexpected condition (unlike a paper-jam | |||
| or out-of-toner problem which is undesirable but expected). This | or out-of-toner problem which is undesirable but expected). This | |||
| error status code indicates that probably some knowledgeable human | error status code indicates that probably some knowledgeable human | |||
| intervention is required. | intervention is required. | |||
| 13.1.5.2 server-error-operation-not-supported (0x0501) | B.1.5.2. server-error-operation-not-supported (0x0501) | |||
| The IPP object does not support the functionality required to fulfill | The IPP object does not support the functionality required to fulfill | |||
| the request. This is the appropriate response when the IPP object | the request. This is the appropriate response when the IPP object | |||
| does not recognize an operation or is not capable of supporting it. | does not recognize an operation or is not capable of supporting it. | |||
| See sections 3.1.6.1 and 3.1.7. | See Sections 4.1.6.1 and 4.1.7. | |||
| 13.1.5.3 server-error-service-unavailable (0x0502) | B.1.5.3. server-error-service-unavailable (0x0502) | |||
| The IPP object is currently unable to handle the request due to a | The IPP object is currently unable to handle the request due to a | |||
| temporary overloading or maintenance of the IPP object. The | temporary overloading or maintenance of the IPP object. The | |||
| implication is that this is a temporary condition which will be | implication is that this is a temporary condition which will be | |||
| alleviated after some delay. If known, the length of the delay may be | alleviated after some delay. If known, the length of the delay can | |||
| indicated in the message. If no delay is given, the IPP application | be indicated in the message. If no delay is given, the IPP | |||
| should handle the response as it would for a "server-error- | application should handle the response as it would for a "server- | |||
| temporary-error" response. If the condition is more permanent, the | error-temporary-error" response. If the condition is more permanent, | |||
| error status codes "client-error-gone" or "client-error-not-found" | the error status codes "client-error-gone" or "client-error-not- | |||
| could be used. | found" could be used. | |||
| 13.1.5.4 server-error-version-not-supported (0x0503) | B.1.5.4. server-error-version-not-supported (0x0503) | |||
| The IPP object does not support, or refuses to support, the IPP | The IPP object does not support, or refuses to support, the IPP | |||
| protocol version that was supplied as the value of the "version- | protocol version that was supplied as the value of the "version- | |||
| number" operation parameter in the request. The IPP object is | number" operation parameter in the request. The IPP object is | |||
| indicating that it is unable or unwilling to complete the request | indicating that it is unable or unwilling to complete the request | |||
| using the same major and minor version number as supplied in the | using the same major and minor version number as supplied in the | |||
| request other than with this error message. The error response SHOULD | request other than with this error message. The error response | |||
| contain a "status-message" attribute (see section 3.1.6.2) describing | SHOULD contain a "status-message" attribute (see Section 4.1.6.2) | |||
| why that version is not supported and what other versions are | describing why that version is not supported and what other versions | |||
| supported by that IPP object. See sections 3.1.6.1, 3.1.7, and | are supported by that IPP object. See Sections 4.1.6.1, 4.1.7, and | |||
| 3.1.8. | 4.1.8. | |||
| The error response MUST identify in the "version-number" operation | The error response MUST identify in the "version-number" operation | |||
| parameter the closest version number that the IPP object does | parameter the closest version number that the IPP object does | |||
| support. For example, if a client supplies version '1.0' and an | support. For example, if a Client supplies version '1.0' and an | |||
| IPP/1.1 object supports version '1.0', then it responds with version | IPP/1.1 object supports version '1.0', then it responds with version | |||
| '1.0' in all responses to such a request. If the IPP/1.1 object does | '1.0' in all responses to such a request. If the IPP/1.1 object does | |||
| not support version '1.0', then it should accept the request and | not support version '1.0', then it should accept the request and | |||
| respond with version '1.1' or may reject the request and respond with | respond with version '1.1' or can reject the request and respond with | |||
| this error code and version | this error code and version '1.1'. If a Client supplies a version | |||
| '1.1'. If a client supplies a version '1.2', the IPP/1.1 object | '1.2', the IPP/1.1 object should accept the request and return | |||
| should accept the request and return version '1.1' or may reject the | version '1.1' or can reject the request and respond with this error | |||
| request and respond with this error code and version '1.1'. See | code and version '1.1'. See Sections 4.1.8 and 5.3.14. | |||
| sections 3.1.8 and 4.4.14. | ||||
| 13.1.5.5 server-error-device-error (0x0504) | B.1.5.5. server-error-device-error (0x0504) | |||
| A printer error, such as a paper jam, occurs while the IPP object | A printer error, such as a paper jam, occurs while the IPP object | |||
| processes a Print or Send operation. The response contains the true | processes a Print or Send operation. The response contains the true | |||
| Job Status (the values of the "job-state" and "job-state-reasons" | Job Status (the values of the "job-state" and "job-state-reasons" | |||
| attributes). Additional information can be returned in the OPTIONAL | attributes). Additional information can be returned in the OPTIONAL | |||
| "job-state-message" attribute value or in the OPTIONAL status message | "job-state-message" attribute value or in the OPTIONAL status message | |||
| that describes the error in more detail. This error status code is | that describes the error in more detail. This error status code is | |||
| only returned in situations where the Printer is unable to accept the | only returned in situations where the Printer is unable to accept the | |||
| create request because of such a device error. For example, if the | Job Creation request because of such a device error. For example, if | |||
| Printer is unable to spool, and can only accept one job at a time, | the Printer is unable to spool, and can only accept one Job at a | |||
| the reason it might reject a create request is that the printer | time, the reason it might reject a Job Creation request is that the | |||
| currently has a paper jam. In many cases however, where the Printer | printer currently has a paper jam. In many cases however, where the | |||
| object can accept the request even though the Printer has some error | Printer can accept the request even though the Printer has some error | |||
| condition, the 'successful-ok' status code will be returned. In such | condition, the 'successful-ok' status code will be returned. In such | |||
| a case, the client would look at the returned Job Object Attributes | a case, the Client would look at the returned Job Object Attributes | |||
| or later query the Printer to determine its state and state reasons. | or later query the Printer to determine its state and state reasons. | |||
| 13.1.5.6 server-error-temporary-error (0x0505) | B.1.5.6. server-error-temporary-error (0x0505) | |||
| A temporary error such as a buffer full write error, a memory | A temporary error such as a buffer full write error, a memory | |||
| overflow (i.e. the document data exceeds the memory of the Printer), | overflow (i.e. the Document data exceeds the memory of the Printer), | |||
| or a disk full condition, occurs while the IPP Printer processes an | or a disk full condition, occurs while the IPP Printer processes an | |||
| operation. The client MAY try the unmodified request again at some | operation. The Client MAY try the unmodified request again at some | |||
| later point in time with an expectation that the temporary internal | later point in time with an expectation that the temporary internal | |||
| error condition may have been cleared. Alternatively, as an | error condition has been cleared. Alternatively, as an | |||
| implementation option, a Printer object MAY delay the response until | implementation option, a Printer MAY delay the response until the | |||
| the temporary condition is cleared so that no error is returned. | temporary condition is cleared so that no error is returned. | |||
| 13.1.5.7 server-error-not-accepting-jobs (0x0506) | B.1.5.7. server-error-not-accepting-Jobs (0x0506) | |||
| A temporary error indicating that the Printer is not currently | A temporary error indicating that the Printer is not currently | |||
| accepting jobs, because the administrator has set the value of the | accepting jobs, because the Adminstrator has set the value of the | |||
| Printer's "printer-is-accepting-jobs" attribute to 'false' (by means | Printer's "printer-is-accepting-jobs" attribute to 'false' (by means | |||
| outside the scope of this IPP/1.1 document). | outside the scope of this IPP/1.1 document). | |||
| 13.1.5.8 server-error-busy (0x0507) | B.1.5.8. server-error-busy (0x0507) | |||
| A temporary error indicating that the Printer is too busy processing | A temporary error indicating that the Printer is too busy processing | |||
| jobs and/or other requests. The client SHOULD try the unmodified | Jobs and/or other requests. The Client SHOULD try the unmodified | |||
| request again at some later point in time with an expectation that | request again at some later point in time with an expectation that | |||
| the temporary busy condition will have been cleared. | the temporary busy condition will have been cleared. | |||
| 13.1.5.9 server-error-job-canceled (0x0508) | B.1.5.9. server-error-job-canceled (0x0508) | |||
| An error indicating that the job has been canceled by an operator or | An error indicating that the Job has been canceled by an Operator or | |||
| the system while the client was transmitting the data to the IPP | the system while the Client was transmitting the data to the IPP | |||
| Printer. If a job-id and job-uri had been created, then they are | Printer. If a job-id and job-uri had been created, then they are | |||
| returned in the Print-Job, Send-Document, or Send-URI response as | returned in the Print-Job, Send-Document, or Send-URI response as | |||
| usual; otherwise, no job-id and job-uri are returned in the response. | usual; otherwise, no job-id and job-uri are returned in the response. | |||
| 13.1.5.10 server-error-multiple-document-jobs-not-supported (0x0509) | B.1.5.10. server-error-multiple-document-jobs-not-supported (0x0509) | |||
| The IPP object does not support multiple documents per job and a | The IPP object does not support multiple Documents per Job and a | |||
| client attempted to supply document data with a second Send-Document | Client attempted to supply Document data with a second Send-Document | |||
| or Send-URI operation. | or Send-URI operation. | |||
| 13.2 Status Codes for IPP Operations | B.2. Status Codes for IPP Operations | |||
| PJ = Print-Job, PU = Print-URI, CJ = Create-Job, SD = Send-Document | PJ = Print-Job, PU = Print-URI, CJ = Create-Job, SD = Send-Document | |||
| SU = Send-URI, V = Validate-Job, GA = Get-Job-Attributes and | SU = Send-URI, V = Validate-Job, GA = Get-Job-Attributes and | |||
| Get-Printer-Attributes, GJ = Get-Jobs, C = Cancel-Job | Get-Printer-Attributes, GJ = Get-Jobs, C = Cancel-Job | |||
| IPP Operations | IPP Operations | |||
| IPP Status Keyword PJ PU CJ SD SU V GA GJ C | IPP Status Keyword PJ PU CJ SD SU V GA GJ C | |||
| ------------------ -- -- -- -- -- - -- -- - | ------------------ -- -- -- -- -- - -- -- - | |||
| successful-ok x x x x x x x x x | successful-ok x x x x x x x x x | |||
| successful-ok-ignored-or-substituted- x x x x x x x x x | successful-ok-ignored-or-substituted- x x x x x x x x x | |||
| attributes | attributes | |||
| skipping to change at page 188, line 38 ¶ | skipping to change at page 199, line 44 ¶ | |||
| client-error-compression-not-supported x x x x x | client-error-compression-not-supported x x x x x | |||
| client-error-compression-error x x x x | client-error-compression-error x x x x | |||
| client-error-document-format-error x x x x | client-error-document-format-error x x x x | |||
| client-error-document-access-error x x | client-error-document-access-error x x | |||
| server-error-internal-error x x x x x x x x x | server-error-internal-error x x x x x x x x x | |||
| server-error-operation-not-supported x x x x | server-error-operation-not-supported x x x x | |||
| server-error-service-unavailable x x x x x x x x x | server-error-service-unavailable x x x x x x x x x | |||
| server-error-version-not-supported x x x x x x x x x | server-error-version-not-supported x x x x x x x x x | |||
| server-error-device-error x x x x x | server-error-device-error x x x x x | |||
| server-error-temporary-error x x x x x | server-error-temporary-error x x x x x | |||
| server-error-not-accepting-jobs x x x x | server-error-not-accepting-Jobs x x x x | |||
| server-error-busy x x x x x x x x x | server-error-busy x x x x x x x x x | |||
| server-error-job-canceled x x x | server-error-job-canceled x x x | |||
| server-error-multiple-document-jobs- x x | server-error-multiple-document-jobs- x x | |||
| not-supported | not-supported | |||
| HJ = Hold-Job, RJ = Release-Job, RS = Restart-Job | HJ = Hold-Job, RJ = Release-Job, RS = Restart-Job | |||
| PP = Pause-Printer, RP = Resume-Printer, PJ = Purge-Jobs | PP = Pause-Printer, RP = Resume-Printer, PJ = Purge-Jobs | |||
| IPP Operations (cont.) | IPP Operations (cont.) | |||
| IPP Status Keyword HJ RJ RS PP RP PJ | IPP Status Keyword HJ RJ RS PP RP PJ | |||
| ------------------ -- -- -- -- -- -- | ------------------ -- -- -- -- -- -- | |||
| successful-ok x x x x x x | successful-ok x x x x x x | |||
| successful-ok-ignored-or-substituted- x x x x x x | successful-ok-ignored-or-substituted- x x x x x x | |||
| attributes | attributes | |||
| successful-ok-conflicting-attributes x x x x x x | successful-ok-conflicting-attributes x x x x x x | |||
| client-error-bad-request x x x x x x | client-error-bad-request x x x x x x | |||
| client-error-forbidden x x x x x x | client-error-forbidden x x x x x x | |||
| client-error-not-authenticated x x x x x x | client-error-not-authenticated x x x x x x | |||
| client-error-not-authorized x x x x x x | client-error-not-authorized x x x x x x | |||
| skipping to change at page 190, line 5 ¶ | skipping to change at page 200, line 44 ¶ | |||
| server-error-service-unavailable x x x x x x | server-error-service-unavailable x x x x x x | |||
| server-error-version-not-supported x x x x x x | server-error-version-not-supported x x x x x x | |||
| server-error-device-error | server-error-device-error | |||
| server-error-temporary-error x x x x x x | server-error-temporary-error x x x x x x | |||
| server-error-not-accepting-jobs | server-error-not-accepting-jobs | |||
| server-error-busy x x x x x x | server-error-busy x x x x x x | |||
| server-error-job-canceled | server-error-job-canceled | |||
| server-error-multiple-document-jobs- | server-error-multiple-document-jobs- | |||
| not-supported | not-supported | |||
| 14. APPENDIX C: "media" keyword values | Appendix C. Processing IPP Attributes | |||
| Standard keyword values are taken from several sources. | ||||
| Standard values are defined (taken from DPA[ISO10175] and the Printer | ||||
| MIB[RFC1759]): | ||||
| 'default': The default medium for the output device | ||||
| 'iso-a4-white': Specifies the ISO A4 white medium: 210 mm x 297 mm | ||||
| 'iso-a4-colored': Specifies the ISO A4 colored medium: 210 mm x 297 | ||||
| mm | ||||
| 'iso-a4-transparent' Specifies the ISO A4 transparent medium: 210 mm | ||||
| x 297 mm | ||||
| 'iso-a3-white': Specifies the ISO A3 white medium: 297 mm x 420 mm | ||||
| 'iso-a3-colored': Specifies the ISO A3 colored medium: 297 mm x 420 | ||||
| mm | ||||
| 'iso-a5-white': Specifies the ISO A5 white medium: 148 mm x 210 mm | ||||
| 'iso-a5-colored': Specifies the ISO A5 colored medium: 148 mm x 210 | ||||
| mm | ||||
| 'iso-b4-white': Specifies the ISO B4 white medium: 250 mm x 353 mm | ||||
| 'iso-b4-colored': Specifies the ISO B4 colored medium: 250 mm x 353 | ||||
| mm | ||||
| 'iso-b5-white': Specifies the ISO B5 white medium: 176 mm x 250 mm | ||||
| 'iso-b5-colored': Specifies the ISO B5 colored medium: 176 mm x 250 | ||||
| mm | ||||
| 'jis-b4-white': Specifies the JIS B4 white medium: 257 mm x 364 mm | ||||
| 'jis-b4-colored': Specifies the JIS B4 colored medium: 257 mm x 364 | ||||
| mm | ||||
| 'jis-b5-white': Specifies the JIS B5 white medium: 182 mm x 257 mm | ||||
| 'jis-b5-colored': Specifies the JIS B5 colored medium: 182 mm x 257 | ||||
| mm | ||||
| The following standard values are defined for North American media: | ||||
| 'na-letter-white': Specifies the North American letter white medium | ||||
| 'na-letter-colored': Specifies the North American letter colored | ||||
| medium | ||||
| 'na-letter-transparent': Specifies the North American letter | ||||
| transparent medium | ||||
| 'na-legal-white': Specifies the North American legal white medium | ||||
| 'na-legal-colored': Specifies the North American legal colored | ||||
| medium | ||||
| The following standard values are defined for envelopes: | ||||
| 'iso-b4-envelope': Specifies the ISO B4 envelope medium | ||||
| 'iso-b5-envelope': Specifies the ISO B5 envelope medium | ||||
| 'iso-c3-envelope': Specifies the ISO C3 envelope medium | ||||
| 'iso-c4-envelope': Specifies the ISO C4 envelope medium | ||||
| 'iso-c5-envelope': Specifies the ISO C5 envelope medium | ||||
| 'iso-c6-envelope': Specifies the ISO C6 envelope medium | ||||
| 'iso-designated-long-envelope': Specifies the ISO Designated Long | ||||
| envelope medium | ||||
| 'na-10x13-envelope': Specifies the North American 10x13 envelope | ||||
| medium | ||||
| 'na-9x12-envelope': Specifies the North American 9x12 envelope | ||||
| medium | ||||
| 'monarch-envelope': Specifies the Monarch envelope | ||||
| 'na-number-10-envelope': Specifies the North American number 10 | ||||
| business envelope medium | ||||
| 'na-7x9-envelope': Specifies the North American 7x9 inch envelope | ||||
| 'na-9x11-envelope': Specifies the North American 9x11 inch | ||||
| envelope | ||||
| 'na-10x14-envelope': Specifies the North American 10x14 inch | ||||
| envelope | ||||
| 'na-number-9-envelope': Specifies the North American number 9 | ||||
| business envelope | ||||
| 'na-6x9-envelope': Specifies the North American 6x9 inch envelope | ||||
| 'na-10x15-envelope': Specifies the North American 10x15 inch | ||||
| envelope | ||||
| The following standard values are defined for the less commonly used | ||||
| media: | ||||
| 'executive-white': Specifies the white executive medium | ||||
| 'folio-white': Specifies the folio white medium | ||||
| 'invoice-white': Specifies the white invoice medium | ||||
| 'ledger-white': Specifies the white ledger medium | ||||
| 'quarto-white': Specified the white quarto medium | ||||
| 'iso-a0-white': Specifies the ISO A0 white medium: 841 mm x 1189 mm | ||||
| 'iso-a0-transparent': Specifies the ISO A0 transparent medium: 841 mm | ||||
| x 1189 mm | ||||
| 'iso-a0-translucent': Specifies the ISO A0 translucent medium: 841 mm | ||||
| x 1189 mm | ||||
| 'iso-a1-white': Specifies the ISO A1 white medium: 594 mm x 841 mm | ||||
| 'iso-a1-transparent': Specifies the ISO A1 transparent medium: 594 mm | ||||
| x 841 mm | ||||
| 'iso-a1-translucent': Specifies the ISO A1 translucent medium: 594 mm | ||||
| x 841 mm | ||||
| 'iso-a2-white': Specifies the ISO A2 white medium: 420 mm x 594 mm | ||||
| 'iso-a2-transparent': Specifies the ISO A2 transparent medium: 420 mm | ||||
| x 594 mm | ||||
| 'iso-a2-translucent': Specifies the ISO A2 translucent medium: 420 mm | ||||
| x 594 mm | ||||
| 'iso-a3-transparent': Specifies the ISO A3 transparent medium: 297 mm | ||||
| x 420 mm | ||||
| 'iso-a3-translucent': Specifies the ISO A3 translucent medium: 297 mm | ||||
| x 420 mm | ||||
| 'iso-a4-translucent': Specifies the ISO A4 translucent medium: 210 mm | ||||
| x 297 mm | ||||
| 'iso-a5-transparent': Specifies the ISO A5 transparent medium: 148 mm | ||||
| x 210 mm | ||||
| 'iso-a5-translucent': Specifies the ISO A5 translucent medium: 148 mm | ||||
| x 210 mm | ||||
| 'iso-a6-white': Specifies the ISO A6 white medium: 105 mm x 148 mm | ||||
| 'iso-a7-white': Specifies the ISO A7 white medium: 74 mm x 105 mm | ||||
| 'iso-a8-white': Specifies the ISO A8 white medium: 52 mm x 74 mm | ||||
| 'iso-a9-white': Specifies the ISO A9 white medium: 37 mm x 52 mm | ||||
| 'iso-a10-white': Specifies the ISO A10 white medium: 26 mm x 37 mm | ||||
| 'iso-b0-white': Specifies the ISO B0 white medium: 1000 mm x 1414 mm | ||||
| 'iso-b1-white': Specifies the ISO B1 white medium: 707 mm x 1000 mm | ||||
| 'iso-b2-white': Specifies the ISO B2 white medium: 500 mm x 707 mm | ||||
| 'iso-b3-white': Specifies the ISO B3 white medium: 353 mm x 500 mm | ||||
| 'iso-b6-white': Specifies the ISO B6 white medium: 125 mm x 176 mm | ||||
| 'iso-b7-white': Specifies the ISO B7 white medium: 88 mm x 125 mm | ||||
| 'iso-b8-white': Specifies the ISO B8 white medium: 62 mm x 88 mm | ||||
| 'iso-b9-white': Specifies the ISO B9 white medium: 44 mm x 62 mm | ||||
| 'iso-b10-white': Specifies the ISO B10 white medium: 31 mm x 44 mm | ||||
| 'jis-b0-white': Specifies the JIS B0 white medium: 1030 mm x 1456 mm | ||||
| 'jis-b0-transparent': Specifies the JIS B0 transparent medium: 1030 | ||||
| mm x 1456 mm | ||||
| 'jis-b0-translucent': Specifies the JIS B0 translucent medium: 1030 | ||||
| mm x 1456 mm | ||||
| 'jis-b1-white': Specifies the JIS B1 white medium: 728 mm x 1030 mm | ||||
| 'jis-b1-transparent': Specifies the JIS B1 transparent medium: 728 mm | ||||
| x 1030 mm | ||||
| 'jis-b1-translucent': Specifies the JIS B1 translucent medium: 728 mm | ||||
| x 1030 mm | ||||
| 'jis-b2-white': Specifies the JIS B2 white medium: 515 mm x 728 mm | ||||
| 'jis-b2-transparent': Specifies the JIS B2 transparent medium: 515 mm | ||||
| x 728 mm | ||||
| 'jis-b2-translucent': Specifies the JIS B2 translucent medium: 515 mm | ||||
| x 728 mm | ||||
| 'jis-b3-white': Specifies the JIS B3 white medium: 364 mm x 515 mm | ||||
| 'jis-b3-transparent': Specifies the JIS B3 transparent medium: 364 mm | ||||
| x 515 mm | ||||
| 'jis-b3-translucent': Specifies the JIS B3 translucent medium: 364 mm | ||||
| x 515 mm | ||||
| 'jis-b4-transparent': Specifies the JIS B4 transparent medium: 257 mm | ||||
| x 364 mm | ||||
| 'jis-b4-translucent': Specifies the JIS B4 translucent medium: 257 mm | ||||
| x 364 mm | ||||
| 'jis-b5-transparent': Specifies the JIS B5 transparent medium: 182 mm | ||||
| x 257 mm | ||||
| 'jis-b5-translucent': Specifies the JIS B5 translucent medium: 182 mm | ||||
| x 257 mm | ||||
| 'jis-b6-white': Specifies the JIS B6 white medium: 128 mm x 182 mm | ||||
| 'jis-b7-white': Specifies the JIS B7 white medium: 91 mm x 128 mm | ||||
| 'jis-b8-white': Specifies the JIS B8 white medium: 64 mm x 91 mm | ||||
| 'jis-b9-white': Specifies the JIS B9 white medium: 45 mm x 64 mm | ||||
| 'jis-b10-white': Specifies the JIS B10 white medium: 32 mm x 45 mm | ||||
| The following standard values are defined for American Standard (i.e. | ||||
| ANSI) engineering media: | ||||
| 'a-white': Specifies the engineering ANSI A size white medium: 8.5 | ||||
| inches x 11 inches | ||||
| 'a-transparent': Specifies the engineering ANSI A size transparent | ||||
| medium: 8.5 inches x 11 inches | ||||
| 'a-translucent': Specifies the engineering ANSI A size translucent | ||||
| medium: 8.5 inches x 11 inches | ||||
| 'b-white': Specifies the engineering ANSI B size white medium: 11 | ||||
| inches x 17 inches | ||||
| 'b-transparent': Specifies the engineering ANSI B size transparent | ||||
| medium: 11 inches x 17 inches) | ||||
| 'b-translucent': Specifies the engineering ANSI B size translucent | ||||
| medium: 11 inches x 17 inches | ||||
| 'c-white': Specifies the engineering ANSI C size white medium: 17 | ||||
| inches x 22 inches | ||||
| 'c-transparent': Specifies the engineering ANSI C size transparent | ||||
| medium: 17 inches x 22 inches | ||||
| 'c-translucent': Specifies the engineering ANSI C size translucent | ||||
| medium: 17 inches x 22 inches | ||||
| 'd-white': Specifies the engineering ANSI D size white medium: 22 | ||||
| inches x 34 inches | ||||
| 'd-transparent': Specifies the engineering ANSI D size transparent | ||||
| medium: 22 inches x 34 inches | ||||
| 'd-translucent': Specifies the engineering ANSI D size translucent | ||||
| medium: 22 inches x 34 inches | ||||
| 'e-white': Specifies the engineering ANSI E size white medium: 34 | ||||
| inches x 44 inches | ||||
| 'e-transparent': Specifies the engineering ANSI E size transparent | ||||
| medium: 34 inches x 44 inches | ||||
| 'e-translucent': Specifies the engineering ANSI E size translucent | ||||
| medium: 34 inches x 44 inches | ||||
| The following standard values are defined for American Standard (i.e. | ||||
| ANSI) engineering media for devices that provide the "synchro-cut" | ||||
| feature (see section 14.1): | ||||
| 'axsynchro-white': Specifies the roll paper having the width of the | ||||
| longer edge (11 inches) of the engineering ANSI A size white medium | ||||
| and cuts synchronizing with data. | ||||
| 'axsynchro-transparent': Specifies the roll paper having the width of | ||||
| the longer edge (11 inches) of the engineering ANSI A size | ||||
| transparent medium and cuts synchronizing with data. | ||||
| 'axsynchro-translucent': Specifies the roll paper having the width of | ||||
| the longer edge (11 inches) of the engineering ANSI A size | ||||
| translucent medium and cuts synchronizing with data. | ||||
| 'bxsynchro-white': Specifies the roll paper having the width of the | ||||
| longer edge (17 inches) of the engineering ANSI B size white medium | ||||
| and cuts synchronizing with data. | ||||
| 'bxsynchro-transparent': Specifies the roll paper having the width of | ||||
| the longer edge (17 inches) of the engineering ANSI B size | ||||
| transparent medium and cuts synchronizing with data. | ||||
| 'bxsynchro-translucent': Specifies the roll paper having the width of | ||||
| the longer edge (17 inches) of the engineering ANSI B size | ||||
| translucent medium and cuts synchronizing with data. | ||||
| 'cxsynchro-white': Specifies the roll paper having the width of the | ||||
| longer edge (22 inches) of the engineering ANSI C size white medium | ||||
| and cuts synchronizing with data. | ||||
| 'cxsynchro-transparent': Specifies the roll paper having the width of | ||||
| the longer edge (22 inches) of the engineering ANSI C size | ||||
| transparent medium and cuts synchronizing with data. | ||||
| 'cxsynchro-translucent': Specifies the roll paper having the width of | ||||
| the longer edge (22 inches) of the engineering ANSI C size | ||||
| translucent medium and cuts synchronizing with data. | ||||
| 'dxsynchro-white': Specifies the roll paper having the width of the | ||||
| longer edge (34 inches) of the engineering ANSI D size white medium | ||||
| and cuts synchronizing with data. | ||||
| 'dxsynchro-transparent': Specifies the roll paper having the width of | ||||
| the longer edge (34 inches) of the engineering ANSI D size | ||||
| transparent medium and cuts synchronizing with data. | ||||
| 'dxsynchro-translucent': Specifies the roll paper having the width of | ||||
| the longer edge (34 inches) of the engineering ANSI D size | ||||
| translucent medium and cuts synchronizing with data. | ||||
| 'exsynchro-white': Specifies the roll paper having the width of the | ||||
| longer edge (44 inches) of the engineering ANSI E size white medium | ||||
| and cuts synchronizing with data. | ||||
| 'exsynchro-transparent': Specifies the roll paper having the width of | ||||
| the longer edge (44 inches) of the engineering ANSI E size | ||||
| transparent medium and cuts synchronizing with data. | ||||
| 'exsynchro-translucent': Specifies the roll paper having the width of | ||||
| the longer edge (44 inches) of the engineering ANSI E size | ||||
| translucent medium and cuts synchronizing with data. | ||||
| The following standard values are defined for American Architectural | ||||
| engineering media: | ||||
| 'arch-a-white': Specifies the Architectural A size white medium: 9 | ||||
| inches x 12 inches | ||||
| 'arch-a-transparent': Specifies the Architectural A size transparent | ||||
| medium: 9 inches x 12 inches | ||||
| 'arch-a-translucent': Specifies the Architectural A size translucent | ||||
| medium: 9 inches x 12 inches | ||||
| 'arch-b-white': Specifies the Architectural B size white medium: 12 | ||||
| inches x 18 inches | ||||
| 'arch-b-transparent': Specifies the Architectural B size transparent | ||||
| medium: 12 inches x 18 inches | ||||
| 'arch-b-translucent': Specifies the Architectural B size translucent | ||||
| medium: 12 inches x 18 inches | ||||
| 'arch-c-white': Specifies the Architectural C size white medium: 18 | ||||
| inches x 24 inches | ||||
| 'arch-c-transparent': Specifies the Architectural C size transparent | ||||
| medium: 18 inches x 24 inches | ||||
| 'arch-c-translucent': Specifies the Architectural C size translucent | ||||
| medium: 18 inches x 24 inches | ||||
| 'arch-d-white': Specifies the Architectural D size white medium: 24 | ||||
| inches x 36 inches | ||||
| 'arch-d-transparent': Specifies the Architectural D size transparent | ||||
| medium: 24 inches x 36 inches | ||||
| 'arch-d-translucent': Specifies the Architectural D size translucent | ||||
| medium: 24 inches x 36 inches | ||||
| 'arch-e-white': Specifies the Architectural E size white medium: 36 | ||||
| inches x 48 inches | ||||
| 'arch-e-transparent': Specifies the Architectural E size transparent | ||||
| medium: 36 inches x 48 inches | ||||
| 'arch-e-translucent': Specifies the Architectural E size translucent | ||||
| medium: 36 inches x 48 inches | ||||
| The following standard values are defined for American Architectural | ||||
| engineering media for devices that provide the "synchro-cut" feature | ||||
| (see section 14.1): | ||||
| 'arch-axsynchro-white': Specifies the roll paper having the width of | ||||
| the longer edge (12 inches) of the Architectural A size white | ||||
| medium and cuts synchronizing with data. | ||||
| 'arch-axsynchro-transparent': Specifies the roll paper having the | ||||
| width of the longer edge (12 inches) of the Architectural A size | ||||
| transparent medium and cuts synchronizing with data. | ||||
| 'arch-axsynchro-translucent': Specifies the roll paper having the | ||||
| width of the longer edge (12 inches) of the Architectural A size | ||||
| translucent medium and cuts synchronizing with data. | ||||
| 'arch-bxsynchro-white': Specifies the roll paper having the width of | ||||
| the longer edge (18 inches) of the Architectural B size white | ||||
| medium and cuts synchronizing with data. | ||||
| 'arch-bxsynchro-transparent': Specifies the roll paper having the | ||||
| width of the longer edge (18 inches) of the Architectural B size | ||||
| transparent medium and cuts synchronizing with data. | ||||
| 'arch-bxsynchro-translucent': Specifies the roll paper having the | ||||
| width of the longer edge (18 inches) of the Architectural B size | ||||
| translucent medium and cuts synchronizing with data. | ||||
| 'arch-cxsynchro-white': Specifies the roll paper having the width of | ||||
| the longer edge (24 inches) of the Architectural C size white | ||||
| medium and cuts synchronizing with data. | ||||
| 'arch-cxsynchro-transparent': Specifies the roll paper having the | ||||
| width of the longer edge (24 inches) of the Architectural C size | ||||
| transparent medium and cuts synchronizing with data. | ||||
| 'arch-cxsynchro-translucent': Specifies the roll paper having the | ||||
| width of the longer edge (24 inches) of the Architectural C size | ||||
| translucent medium and cuts synchronizing with data. | ||||
| 'arch-dxsynchro-white': Specifies the roll paper having the width of | ||||
| the longer edge (36 inches) of the Architectural D size white | ||||
| medium and cuts synchronizing with data. | ||||
| 'arch-dxsynchro-transparent': Specifies the roll paper having the | ||||
| width of the longer edge (36 inches) of the Architectural D size | ||||
| transparent medium and cuts synchronizing with data. | ||||
| 'arch-dxsynchro-translucent': Specifies the roll paper having the | ||||
| width of the longer edge (36 inches) of the Architectural D size | ||||
| translucent medium and cuts synchronizing with data. | ||||
| 'arch-exsynchro-white': Specifies the roll paper having the width of | ||||
| the longer edge (48 inches) of the Architectural E size white | ||||
| medium and cuts synchronizing with data. | ||||
| 'arch-exsynchro-transparent': Specifies the roll paper having the | ||||
| width of the longer edge (48 inches) of the Architectural E size | ||||
| transparent medium and cuts synchronizing with data. | ||||
| 'arch-exsynchro-translucent': Specifies the roll paper having the | ||||
| width of the longer edge (48 inches) of the Architectural E size | ||||
| translucent medium and cuts synchronizing with data. | ||||
| The following standard values are defined for Japanese and European | ||||
| Standard (i.e. ISO) engineering media, which are of a long fixed size | ||||
| [ASME-Y14.1M]: | ||||
| 'iso-a1x3-white': Specifies the ISO A1X3 white medium having the | ||||
| width of the longer edge (841 mm) of the ISO A1 medium | ||||
| 'iso-a1x3-transparent': Specifies the ISO A1X3 transparent medium | ||||
| having the width of the longer edge (841 mm) of the ISO A1 | ||||
| medium | ||||
| 'iso-a1x3-translucent': Specifies the ISO A1X3 translucent medium | ||||
| having the width of the longer edge (841 mm) of the ISO A1 | ||||
| medium | ||||
| 'iso-a1x4-white': Specifies the ISO A1X4 white medium having the | ||||
| width of the longer edge (841 mm) of the ISO A1 medium | ||||
| 'iso-a1x4-transparent': Specifies the ISO A1X4 transparent medium | ||||
| having the width of the longer edge (841 mm) of the ISO A1 | ||||
| medium | ||||
| 'iso-a1x4- translucent': Specifies the ISO A1X4 translucent medium | ||||
| having the width of the longer edge (841 mm) of the ISO A1 | ||||
| medium | ||||
| 'iso-a2x3-white': Specifies the ISO A2X3 white medium having the | ||||
| width of the longer edge (594 mm) of the ISO A2 medium | ||||
| 'iso-a2x3-transparent': Specifies the ISO A2X3 transparent medium | ||||
| having the width of the longer edge (594 mm) of the ISO A2 | ||||
| medium | ||||
| 'iso-a2x3-translucent': Specifies the ISO A2X3 translucent medium | ||||
| having the width of the longer edge (594 mm) of the ISO A2 | ||||
| medium | ||||
| 'iso-a2x4-white': Specifies the ISO A2X4 white medium having the | ||||
| width of the longer edge (594 mm) of the ISO A2 medium | ||||
| 'iso-a2x4-transparent': Specifies the ISO A2X4 transparent medium | ||||
| having the width of the longer edge (594 mm) of the ISO A2 | ||||
| medium | ||||
| 'iso-a2x4-translucent': Specifies the ISO A2X4 translucent medium | ||||
| having the width of the longer edge (594 mm) of the ISO A2 | ||||
| medium | ||||
| 'iso-a2x5-white': Specifies the ISO A2X5 white medium having the | ||||
| width of the longer edge (594 mm) of the ISO A2 medium | ||||
| 'iso-a2x5-transparent': Specifies the ISO A2X5 transparent medium | ||||
| having the width of the longer edge (594 mm) of the ISO A2 | ||||
| medium | ||||
| 'iso-a2x5-translucent': Specifies the ISO A2X5 translucent medium | ||||
| having the width of the longer edge (594 mm) of the ISO A2 | ||||
| medium | ||||
| 'iso-a3x3-white': Specifies the ISO A3X3 white medium having the | ||||
| width of the longer edge (420 mm) of the ISO A3 medium | ||||
| 'iso-a3x3-transparent': Specifies the ISO A3X3 transparent medium | ||||
| having the width of the longer edge (420 mm) of the ISO A3 | ||||
| medium | ||||
| 'iso-a3x3-translucent': Specifies the ISO A3X3 translucent medium | ||||
| having the width of the longer edge (420 mm) of the ISO A3 | ||||
| medium | ||||
| 'iso-a3x4-white': Specifies the ISO A3X4 white medium having the | ||||
| width of the longer edge (420 mm) of the ISO A3 medium | ||||
| 'iso-a3x4-transparent': Specifies the ISO A3X4 transparent medium | ||||
| having the width of the longer edge (420 mm) of the ISO A3 | ||||
| medium | ||||
| 'iso-a3x4-translucent': Specifies the ISO A3X4 translucent medium | ||||
| having the width of the longer edge (420 mm) of the ISO A3 | ||||
| medium | ||||
| 'iso-a3x5-white': Specifies the ISO A3X5 white medium having the | ||||
| width of the longer edge (420 mm) of the ISO A3 medium | ||||
| 'iso-a3x5-transparent': Specifies the ISO A3X5 transparent medium | ||||
| having the width of the longer edge (420 mm) of the ISO A3 | ||||
| medium | ||||
| 'iso-a3x5-translucent': Specifies the ISO A3X5 translucent medium | ||||
| having the width of the longer edge (420 mm) of the ISO A3 | ||||
| medium | ||||
| 'iso-a3x6-white': Specifies the ISO A3X6 white medium having the | ||||
| width of the longer edge (420 mm) of the ISO A3 medium | ||||
| 'iso-a3x6-transparent': Specifies the ISO A3X6 transparent medium | ||||
| having the width of the longer edge (420 mm) of the ISO A3 | ||||
| medium | ||||
| 'iso-a3x6-translucent': Specifies the ISO A3X6 translucent medium | ||||
| having the width of the longer edge (420 mm) of the ISO A3 | ||||
| medium | ||||
| 'iso-a3x7-white': Specifies the ISO A3X7 white medium having the | ||||
| width of the longer edge (420 mm) of the ISO A3 medium | ||||
| 'iso-a3x7-transparent': Specifies the ISO A3X7 transparent medium | ||||
| having the width of the longer edge (420 mm) of the ISO A3 | ||||
| medium | ||||
| 'iso-a3x7-translucent'': Specifies the ISO A3X7 translucent' medium | ||||
| having the width of the longer edge (420 mm) of the ISO A3 | ||||
| medium | ||||
| 'iso-a4x3-white': Specifies the ISO A4X3 white medium having the | ||||
| width of the longer edge (297 mm) of the ISO A4 medium | ||||
| 'iso-a4x3-transparent': Specifies the ISO A4X3 transparent medium | ||||
| having the width of the longer edge (297 mm) of the ISO A4 | ||||
| medium | ||||
| 'iso-a4x3-translucent'': Specifies the ISO A4X3 translucent' medium | ||||
| having the width of the longer edge (297 mm) of the ISO A4 | ||||
| medium | ||||
| 'iso-a4x4-white': Specifies the ISO A4X4 white medium having the | ||||
| width of the longer edge (297 mm) of the ISO A4 medium | ||||
| 'iso-a4x4-transparent': Specifies the ISO A4X4 transparent medium | ||||
| having the width of the longer edge (297 mm) of the ISO A4 | ||||
| medium | ||||
| 'iso-a4x4-translucent': Specifies the ISO A4X4 translucent medium | ||||
| having the width of the longer edge (297 mm) of the ISO A4 | ||||
| medium | ||||
| 'iso-a4x5-white': Specifies the ISO A4X5 white medium having the | ||||
| width of the longer edge (297 mm) of the ISO A4 medium | ||||
| 'iso-a4x5-transparent': Specifies the ISO A4X5 transparent medium | ||||
| having the width of the longer edge (297 mm) of the ISO A4 | ||||
| medium | ||||
| 'iso-a4x5-translucent': Specifies the ISO A4X5 translucent medium | ||||
| having the width of the longer edge (297 mm) of the ISO A4 | ||||
| medium | ||||
| 'iso-a4x6-white': Specifies the ISO A4X6 white medium having the | ||||
| width of the longer edge (297 mm) of the ISO A4 medium | ||||
| 'iso-a4x6-transparent': Specifies the ISO A4X6 transparent medium | ||||
| having the width of the longer edge (297 mm) of the ISO A4 | ||||
| medium | ||||
| 'iso-a4x6-translucent': Specifies the ISO A4X6 translucent medium | ||||
| having the width of the longer edge (297 mm) of the ISO A4 | ||||
| medium | ||||
| 'iso-a4x7-white': Specifies the ISO A4X7 white medium having the | ||||
| width of the longer edge (297 mm) of the ISO A4 medium | ||||
| 'iso-a4x7-transparent': Specifies the ISO A4X7 transparent medium | ||||
| having the width of the longer edge (297 mm) of the ISO A4 | ||||
| medium | ||||
| 'iso-a4x7-translucent': Specifies the ISO A4X7 translucent medium | ||||
| having the width of the longer edge (297 mm) of the ISO A4 | ||||
| medium | ||||
| 'iso-a4x8-white': Specifies the ISO A4X8 white medium having the | ||||
| width of the longer edge (297 mm) of the ISO A4 medium | ||||
| 'iso-a4x8-transparent': Specifies the ISO A4X8 transparent medium | ||||
| having the width of the longer edge (297 mm) of the ISO A4 | ||||
| medium | ||||
| 'iso-a4x8-translucent': Specifies the ISO A4X8 translucent medium | ||||
| having the width of the longer edge (297 mm) of the ISO A4 | ||||
| medium | ||||
| 'iso-a4x9-white': Specifies the ISO A4X9 white medium having the | ||||
| width of the longer edge (297 mm) of the ISO A4 medium | ||||
| 'iso-a4x9-transparent': Specifies the ISO A4X9 transparent medium | ||||
| having the width of the longer edge (297 mm) of the ISO A4 | ||||
| medium | ||||
| 'iso-a4x9-translucent': Specifies the ISO A4X9 translucent medium | ||||
| having the width of the longer edge (297 mm) of the ISO A4 | ||||
| medium | ||||
| The following standard values are defined for Japanese and European | ||||
| Standard (i.e. ISO) engineering media, which are either a long fixed | ||||
| size [ASME-Y14.1M] or roll feed, for devices that provide the | ||||
| "synchro-cut" feature (see section 14.1): | ||||
| 'iso-a0xsynchro-white': Specifies the paper having the width of the | ||||
| longer edge (1189 mm) of the ISO A0 white medium and cuts | ||||
| synchronizing with data. | ||||
| 'iso-a0xsynchro-transparent': Specifies the paper having the width of | ||||
| the longer edge (1189 mm) of the ISO A0 transparent medium and | ||||
| cuts synchronizing with data. | ||||
| 'iso-a0xsynchro-translucent': Specifies the paper having the width of | ||||
| the longer edge (1189 mm) of the ISO A0 translucent medium and | ||||
| cuts synchronizing with data. | ||||
| 'iso-a1xsynchro-white': Specifies the paper having the width of the | ||||
| longer edge (841 mm) of the ISO A1 white medium and cuts | ||||
| synchronizing with data. | ||||
| 'iso-a1xsynchro-transparent': Specifies the paper having the width of | ||||
| the longer edge (841 mm) of the ISO A1 transparent medium and | ||||
| cuts synchronizing with data. | ||||
| 'iso-a1xsynchro-translucent': Specifies the paper having the width of | ||||
| the longer edge (841 mm) of the ISO A1 translucent medium and | ||||
| cuts synchronizing with data. | ||||
| 'iso-a2xsynchro-white': Specifies the paper having the width of the | ||||
| longer edge (594 mm) of the ISO A2 white medium and cuts | ||||
| synchronizing with data. | ||||
| 'iso-a2xsynchro-transparent': Specifies the paper having the width of | ||||
| the longer edge (594 mm) of the ISO A2 transparent medium and | ||||
| cuts synchronizing with data. | ||||
| 'iso-a2xsynchro-translucent': Specifies the paper having the width of | ||||
| the longer edge (594 mm) of the ISO A2 translucent medium and | ||||
| cuts synchronizing with data. | ||||
| 'iso-a3xsynchro-white': Specifies the paper having the width of the | ||||
| longer edge (420 mm) of the ISO A3 white medium and cuts | ||||
| synchronizing with data. | ||||
| 'iso-a3xsynchro-transparent': Specifies the paper having the width of | ||||
| the longer edge (420 mm) of the ISO A3 transparent medium and | ||||
| cuts synchronizing with data. | ||||
| 'iso-a3xsynchro-translucent': Specifies the paper having the width of | ||||
| the longer edge (420 mm) of the ISO A3 translucent medium and | ||||
| cuts synchronizing with data. | ||||
| 'iso-a4xsynchro-white': Specifies the paper having the width of the | ||||
| longer edge (297 mm) of the ISO A4 white medium and cuts | ||||
| synchronizing with data. | ||||
| 'iso-a4xsynchro-transparent': Specifies the paper having the width of | ||||
| the longer edge (297 mm) of the ISO A4 transparent medium and | ||||
| cuts synchronizing with data. | ||||
| 'iso-a4xsynchro-translucent': Specifies the paper having the width of | ||||
| the longer edge (297 mm) of the ISO A4 transparent medium and | ||||
| cuts synchronizing with data. | ||||
| The following standard values are defined for American Standard (i.e. | ||||
| ANSI) engineering media, American Architectural engineering media, | ||||
| and Japanese and European Standard (i.e. ISO) engineering media, | ||||
| which are either a long fixed size [ASME-Y14.1M] or roll feed, for | ||||
| devices that provide the "synchro-cut" feature and/or the "auto- | ||||
| select" feature (see section 14.1): | ||||
| 'auto-white': Specifies that the printer selects the white medium | ||||
| with the appropriate fixed size (e.g. a1, a2, etc.) or data- | ||||
| synchro size, and the selection is implementation-defined. | ||||
| 'auto-transparent': Specifies that the printer selects the | ||||
| transparent medium with the appropriate fixed size (e.g. a1, a2, | ||||
| etc.) or data-synchro size, and the selection is implementation- | ||||
| defined. | ||||
| 'auto-translucent': Specifies that the printer selects the | ||||
| translucent medium with the appropriate fixed size (e.g. a1, a2, | ||||
| etc.) or data-synchro size, and the selection is implementation- | ||||
| defined. | ||||
| 'auto-fixed-size-white': Specifies that the printer selects the white | ||||
| medium with the appropriate fixed size (e.g. a1, a2, etc.) or | ||||
| the appropriate long fixed size listed above. | ||||
| 'auto-fixed-size-transparent': Specifies that the printer selects the | ||||
| transparent medium with the appropriate fixed size (e.g. a1, a2, | ||||
| etc.) or the appropriate long fixed size listed above. | ||||
| 'auto-fixed-size-translucent': Specifies that the printer selects the | ||||
| translucent medium with the appropriate fixed size (e.g. a1, a2, | ||||
| etc.) or the appropriate long fixed size listed above. | ||||
| 'auto-synchro-white': Specifies that the printer selects the white | ||||
| paper with the appropriate width and cuts it synchronizing with | ||||
| data. | ||||
| 'auto-synchro-transparent': Specifies that the printer selects the | ||||
| transparent paper with the appropriate width and cuts it | ||||
| synchronizing with data. | ||||
| 'auto-synchro-translucent': Specifies that the printer selects the | ||||
| translucent paper with the appropriate width and cuts it | ||||
| synchronizing with data. | ||||
| The following standard values are defined for input-trays (from ISO | ||||
| DPA and the Printer MIB): | ||||
| 'top': The top input tray in the printer. | ||||
| 'middle': The middle input tray in the printer. | ||||
| 'bottom': The bottom input tray in the printer. | ||||
| 'envelope': The envelope input tray in the printer. | ||||
| 'manual': The manual feed input tray in the printer. | ||||
| 'large-capacity': The large capacity input tray in the printer. | ||||
| 'main': The main input tray | ||||
| 'side': The side input tray | ||||
| The following standard values are defined for media sizes (from ISO | ||||
| DPA): | ||||
| 'iso-a0': Specifies the ISO A0 size: 841 mm by 1189 mm as defined in | ||||
| ISO 216 | ||||
| 'iso-a1': Specifies the ISO A1 size: 594 mm by 841 mm as defined in | ||||
| ISO 216 | ||||
| 'iso-a2': Specifies the ISO A2 size: 420 mm by 594 mm as defined in | ||||
| ISO 216 | ||||
| 'iso-a3': Specifies the ISO A3 size: 297 mm by 420 mm as defined in | ||||
| ISO 216 | ||||
| 'iso-a4': Specifies the ISO A4 size: 210 mm by 297 mm as defined in | ||||
| ISO 216 | ||||
| 'iso-a5': Specifies the ISO A5 size: 148 mm by 210 mm as defined in | ||||
| ISO 216 | ||||
| 'iso-a6': Specifies the ISO A6 size: 105 mm by 148 mm as defined in | ||||
| ISO 216 | ||||
| 'iso-a7': Specifies the ISO A7 size: 74 mm by 105 mm as defined in | ||||
| ISO 216 | ||||
| 'iso-a8': Specifies the ISO A8 size: 52 mm by 74 mm as defined in ISO | ||||
| 216 | ||||
| 'iso-a9': Specifies the ISO A9 size: 37 mm by 52 mm as defined in ISO | ||||
| 216 | ||||
| 'iso-a10': Specifies the ISO A10 size: 26 mm by 37 mm as defined in | ||||
| ISO 216 | ||||
| 'iso-b0': Specifies the ISO B0 size: 1000 mm by 1414 mm as defined in | ||||
| ISO 216 | ||||
| 'iso-b1': Specifies the ISO B1 size: 707 mm by 1000 mm as defined in | ||||
| ISO 216 | ||||
| 'iso-b2': Specifies the ISO B2 size: 500 mm by 707 mm as defined in | ||||
| ISO 216 | ||||
| 'iso-b3': Specifies the ISO B3 size: 353 mm by 500 mm as defined in | ||||
| ISO 216 | ||||
| 'iso-b4': Specifies the ISO B4 size: 250 mm by 353 mm as defined in | ||||
| ISO 216 | ||||
| 'iso-b5': Specifies the ISO B5 size: 176 mm by 250 mm as defined in | ||||
| ISO 216 | ||||
| 'iso-b6': Specifies the ISO B6 size: 125 mm by 176 mm as defined in | ||||
| ISO 216 | ||||
| 'iso-b7': Specifies the ISO B7 size: 88 mm by 125 mm as defined in | ||||
| ISO 216 | ||||
| 'iso-b8': Specifies the ISO B8 size: 62 mm by 88 mm as defined in ISO | ||||
| 216 | ||||
| 'iso-b9': Specifies the ISO B9 size: 44 mm by 62 mm as defined in ISO | ||||
| 216 | ||||
| 'iso-b10': Specifies the ISO B10 size: 31 mm by 44 mm as defined in | ||||
| ISO 216 | ||||
| 'na-letter': Specifies the North American letter size: 8.5 inches by | ||||
| 11 inches | ||||
| 'na-legal': Specifies the North American legal size: 8.5 inches by 14 | ||||
| inches | ||||
| 'na-8x10': Specifies the North American 8 inches by 10 inches | ||||
| 'na-5x7': Specifies the North American 5 inches by 7 inches | ||||
| 'executive': Specifies the executive size (7.25 X 10.5 in) | ||||
| 'folio': Specifies the folio size (8.5 X 13 in) | ||||
| 'invoice': Specifies the invoice size (5.5 X 8.5 in) | ||||
| 'ledger': Specifies the ledger size (11 X 17 in) | ||||
| 'quarto': Specifies the quarto size (8.5 X 10.83 in) | ||||
| 'iso-c3': Specifies the ISO C3 size: 324 mm by 458 mm as defined in | ||||
| ISO 269 | ||||
| 'iso-c4': Specifies the ISO C4 size: 229 mm by 324 mm as defined in | ||||
| ISO 269 | ||||
| 'iso-c5': Specifies the ISO C5 size: 162 mm by 229 mm as defined in | ||||
| ISO 269 | ||||
| 'iso-c6': Specifies the ISO C6 size: 114 mm by 162 mm as defined in | ||||
| ISO 269 | ||||
| 'iso-designated-long': Specifies the ISO Designated Long size: 110 mm | ||||
| by 220 mm as defined in ISO 269 | ||||
| 'na-10x13-envelope': Specifies the North American 10x13 size: 10 | ||||
| inches by 13 inches | ||||
| 'na-9x12-envelope': Specifies the North American 9x12 size: 9 inches | ||||
| by 12 inches | ||||
| 'na-number-10-envelope': Specifies the North American number 10 | ||||
| business envelope size: 4.125 inches by 9.5 inches | ||||
| 'na-7x9-envelope': Specifies the North American 7x9 inch envelope | ||||
| size | ||||
| 'na-9x11-envelope': Specifies the North American 9x11 inch envelope | ||||
| size | ||||
| 'na-10x14-envelope': Specifies the North American 10x14 inch envelope | ||||
| size | ||||
| 'na-number-9-envelope': Specifies the North American number 9 | ||||
| business envelope size | ||||
| 'na-6x9-envelope': Specifies the North American 6x9 envelope size | ||||
| 'na-10x15-envelope': Specifies the North American 10x15 envelope size | ||||
| 'monarch-envelope': Specifies the Monarch envelope size (3.87 x 7.5 | ||||
| in) | ||||
| 'jis-b0': Specifies the JIS B0 size: 1030mm x 1456mm | ||||
| 'jis-b1': Specifies the JIS B1 size: 728mm x 1030mm | ||||
| 'jis-b2': Specifies the JIS B2 size: 515mm x 728mm | ||||
| 'jis-b3': Specifies the JIS B3 size: 364mm x 515mm | ||||
| 'jis-b4': Specifies the JIS B4 size: 257mm x 364mm | ||||
| 'jis-b5': Specifies the JIS B5 size: 182mm x 257mm | ||||
| 'jis-b6': Specifies the JIS B6 size: 128mm x 182mm | ||||
| 'jis-b7': Specifies the JIS B7 size: 91mm x 128mm | ||||
| 'jis-b8': Specifies the JIS B8 size: 64mm x 91mm | ||||
| 'jis-b9': Specifies the JIS B9 size: 45mm x 64mm | ||||
| 'jis-b10': Specifies the JIS B10 size: 32mm x 45mm | ||||
| The following standard values are defined for American Standard (i.e. | ||||
| ANSI) engineering media sizes: | ||||
| 'a': Specifies the engineering ANSI A size medium: 8.5 inches x 11 | ||||
| inches | ||||
| 'b': Specifies the engineering ANSI B size medium: 11 inches x 17 | ||||
| inches | ||||
| 'c': Specifies the engineering ANSI C size medium: 17 inches x 22 | ||||
| inches | ||||
| 'd': Specifies the engineering ANSI D size medium: 22 inches x 34 | ||||
| inches | ||||
| 'e': Specifies the engineering ANSI E size medium: 34 inches x 44 | ||||
| inches | ||||
| The following standard values are defined for American Architectural | ||||
| engineering media sizes: | ||||
| 'arch-a': Specifies the Architectural A size medium: 9 inches x 12 | ||||
| inches | ||||
| 'arch-b': Specifies the Architectural B size medium: 12 inches x 18 | ||||
| inches | ||||
| 'arch-c': Specifies the Architectural C size medium: 18 inches x 24 | ||||
| inches | ||||
| 'arch-d': Specifies the Architectural D size medium: 24 inches x 36 | ||||
| inches | ||||
| 'arch-e': Specifies the Architectural E size medium: 36 inches x 48 | ||||
| inches | ||||
| 14.1. Examples | ||||
| Below are examples to supplement the engineering media value | ||||
| definitions. | ||||
| Example 1: "Synchro-Cut", a device cutting the roll paper in | ||||
| synchronization with the data | ||||
| data height: A1 height | ||||
| data width (shaded): A1 width < data width < (A1 width) x 2 | ||||
| specified value: 'iso-a1xsynchro-white' | ||||
| | | | ||||
| |<--- data width --->| | ||||
| | | | ||||
| | | | | | ||||
| |<- A1 width ->|<- A1 width ->| | ||||
| | | | | | ||||
| cross ^ | | | | | ||||
| feed | +--------------------------------------------/ | ||||
| direction | |//////////////|/////| | ^ / | ||||
| | |//////////////|/////| | | / | ||||
| | |//////////////|/////| | | / | ||||
| | |//////////////|/////| | | \ | ||||
| <-----------+- |//////////////|/////| | A1 \ roll | ||||
| feed | |//////////////|/////| | height \ paper | ||||
| direction |//////////////|/////| | | \ | ||||
| |//////////////|/////| | | / | ||||
| |//////////////|/////| | v / | ||||
| +------------------------------------------/ | ||||
| | | ||||
| | | ||||
| |<------ CUT HERE (to synchronize | ||||
| | with data width) | ||||
| | | ||||
| Example 2: "Auto-Cut", a device cutting the roll paper at multiples | ||||
| of fixed-size media width | ||||
| data height: A1 height | ||||
| data width (shaded): A1 width < data width < (A1 width) x 2 | ||||
| specified value: 'auto-fixed-size-white' | ||||
| | | | ||||
| |<--- data width --->| | ||||
| | | | ||||
| | | | | | ||||
| |<- A1 width ->|<- A1 width ->| | ||||
| | | | | | ||||
| cross ^ | | | | | ||||
| feed | +--------------------------------------------/ | ||||
| direction | |//////////////|/////| | ^ / | ||||
| | |//////////////|/////| | | / | ||||
| | |//////////////|/////| | | / | ||||
| | |//////////////|/////| | | \ | ||||
| <-----------+- |//////////////|/////| | A1 \ roll | ||||
| feed | |//////////////|/////| | height \ paper | ||||
| direction |//////////////|/////| | | \ | ||||
| |//////////////|/////| | | / | ||||
| |//////////////|/////| | v / | ||||
| +------------------------------------------/ | ||||
| | | ||||
| | | ||||
| |<--- CUT HERE | ||||
| | (to synchronize | ||||
| | with data width) | ||||
| Example 3: the 'iso-a4x4-white' fixed size paper | ||||
| paper height: A4 height | ||||
| paper width: (A4 width) x 4 | ||||
| specified value: 'iso-a4x4-white' | ||||
| | | | | | | ||||
| |<- A4 width ->|<- A4 width ->|<- A4 width ->|<- A4 width ->| | ||||
| | | | | | | ||||
| | | | | | | ||||
| +-----------------------------------------------------------+ | ||||
| | ^ | | | | | ||||
| | | | | | | | ||||
| | | | | | | | ||||
| | A4 | | | | | ||||
| | height | | | | | ||||
| | | | | | | | ||||
| | | | | | | | ||||
| | | | | | | | ||||
| | v | | | | | ||||
| +-----------------------------------------------------------+ | ||||
| Example 4: "Synchro-Cut", a device cutting the fixed size paper in | ||||
| synchronization with the data | ||||
| data height: A4 height | ||||
| data width (shaded): (A4 width) x 2 < data width < (A4 width) x 3 | ||||
| specified value: 'iso-a4xsynchro-white' | ||||
| | | | ||||
| |<---------- data width ----------->| | ||||
| | | | ||||
| | | | | | | ||||
| |<- A4 width ->|<- A4 width ->|<- A4 width ->| | ||||
| | | | | | | ||||
| cross ^ | | | | | | ||||
| feed | +--------------------------------------------+ | ||||
| direction | |//////////////|//////////////|/////| ^ | | ||||
| | |//////////////|//////////////|/////| | | | ||||
| | |//////////////|//////////////|/////| | | | ||||
| | |//////////////|//////////////|/////| | | | ||||
| <-----------+- |//////////////|//////////////|/////| A4 | | ||||
| feed | |//////////////|//////////////|/////| height | | ||||
| direction |//////////////|//////////////|/////| | | | ||||
| |//////////////|//////////////|/////| | | | ||||
| |//////////////|//////////////|/////| v | | ||||
| +--------------------------------------------+ | ||||
| | | ||||
| CUT HERE ---->| | ||||
| (to synchronize | | ||||
| with data width) | | ||||
| 15. APPENDIX D: Processing IPP Attributes | ||||
| When submitting a print job to a Printer object, the IPP model allows | When submitting a print Job to a Printer, the IPP model allows a | |||
| a client to supply operation and Job Template attributes along with | Client to supply operation and Job Template attributes along with the | |||
| the document data. These Job Template attributes in the create | Document data. These Job Template attributes in the Job Creation | |||
| request affect the rendering, production and finishing of the | request affect the rendering, production and finishing of the | |||
| documents in the job. Similar types of instructions may also be | documents in the Job. Similar types of instructions can also be | |||
| contained in the document to be printed, that is, embedded within the | contained in the Document data itself. In addition, the Printer has | |||
| print data itself. In addition, the Printer has a set of attributes | a set of attributes that describe what rendering and finishing | |||
| that describe what rendering and finishing options which are | processes which are supported by that Printer. This model, which | |||
| supported by that Printer. This model, which allows for flexibility | allows for flexibility and power, also introduces the potential that | |||
| and power, also introduces the potential that at job submission time, | at Job submission time, these Client-supplied attributes can conflict | |||
| these client-supplied attributes may conflict with either: | with either: | |||
| - what the implementation is capable of realizing (i.e., what the | o what the implementation is capable of realizing (i.e., what the | |||
| Printer supports), as well as | Printer supports), as well as | |||
| - the instructions embedded within the print data itself. | ||||
| o the instructions embedded within the Document data itself. | ||||
| The following sections describe how these two types of conflicts are | The following sections describe how these two types of conflicts are | |||
| handled in the IPP model. | handled in the IPP model. | |||
| 15.1 Fidelity | C.1. Fidelity | |||
| If there is a conflict between what the client requests and what a | If there is a conflict between what the Client requests and what a | |||
| Printer object supports, the client may request one of two possible | Printer supports, the Client can request one of two possible conflict | |||
| conflict handling mechanisms: | handling mechanisms: | |||
| 1) either reject the job since the job can not be processed | 1) either reject the Job since the Job cannot be processed exactly as | |||
| exactly as specified, or | specified, or | |||
| 2) allow the Printer to make any changes necessary to proceed with | ||||
| processing the Job the best it can. | ||||
| In the first case the client is indicating to the Printer object: | 2) allow the Printer to make any changes necessary to proceed with | |||
| "Print the job exactly as specified with no exceptions, and if that | processing the Job the best it can. | |||
| can't be done, don't even bother printing the job at all." In the | ||||
| second case, the client is indicating to the Printer object: "It is | In the first case the Client is indicating to the Printer: "Print the | |||
| more important to make sure the job is printed rather than be | Job exactly as specified with no exceptions, and if that can't be | |||
| processed exactly as specified; just make sure the job is printed | done, don't even bother printing the Job at all." In the second | |||
| even if some client-supplied attributes need to be changed or | case, the Client is indicating to the Printer: "It is more important | |||
| ignored." | to make sure the Job is printed rather than be processed exactly as | |||
| specified; just make sure the Job is printed even if some Client- | ||||
| supplied attributes need to be changed or ignored." | ||||
| The IPP model accounts for this situation by introducing an "ipp- | The IPP model accounts for this situation by introducing an "ipp- | |||
| attribute-fidelity" attribute. | attribute-fidelity" attribute. | |||
| In a create request, "ipp-attribute-fidelity" is a boolean operation | In a Job Creation request, "ipp-attribute-fidelity" is a boolean | |||
| attribute that is OPTIONALLY supplied by the client. The value | operation attribute that MAY be supplied by the Client. The value | |||
| 'true' indicates that total fidelity to client supplied Job Template | 'true' indicates that total fidelity to Client supplied Job Template | |||
| attributes and values is required. The client is requesting that the | attributes and values is required. The Client is requesting that the | |||
| Job be printed exactly as specified, and if that is not possible then | Job be printed exactly as specified, and if that is not possible then | |||
| the job MUST be rejected rather than processed incorrectly. The | the Job MUST be rejected rather than processed incorrectly. The | |||
| value 'false' indicates that a reasonable attempt to print the Job is | value 'false' indicates that a reasonable attempt to print the Job is | |||
| acceptable. If a Printer does not support some of the client | acceptable. If a Printer does not support some of the Client | |||
| supplied Job Template attributes or values, the Printer MUST ignore | supplied Job Template attributes or values, the Printer MUST ignore | |||
| them or substitute any supported value for unsupported values, | them or substitute any supported value for unsupported values, | |||
| respectively. The Printer may choose to substitute the default value | respectively. The Printer can choose to substitute the default value | |||
| associated with that attribute, or use some other supported value | associated with that attribute, or use some other supported value | |||
| that is similar to the unsupported requested value. For example, if | that is similar to the unsupported requested value. For example, if | |||
| a client supplies a "media" value of 'na-letter', the Printer may | a Client supplies a "media" value of 'na_letter_8.5x11in', the | |||
| choose to substitute 'iso-a4' rather than a default value of | Printer can choose to substitute 'iso_a4_210x297mm' rather than a | |||
| 'envelope'. If the client does not supply the "ipp-attribute- | default value of 'na_personal_3.625x6.5in'. If the Client does not | |||
| fidelity" attribute, the Printer assumes a value of 'false'. | supply the "ipp-attribute-fidelity" attribute, the Printer assumes a | |||
| value of 'false'. | ||||
| Each Printer implementation MUST support both types of "fidelity" | Each Printer implementation MUST support both types of "fidelity" | |||
| printing (that is whether the client supplies a value of 'true' or | printing (that is whether the Client supplies a value of 'true' or | |||
| 'false'): | 'false'): | |||
| - If the client supplies 'false' or does not supply the attribute, | o If the Client supplies 'false' or does not supply the attribute, | |||
| the Printer object MUST always accept the request by ignoring | the Printer MUST always accept the request by ignoring unsupported | |||
| unsupported Job Template attributes and by substituting | Job Template attributes and by substituting unsupported values of | |||
| unsupported values of supported Job Template attributes with | supported Job Template attributes with supported values. | |||
| supported values. | ||||
| - If the client supplies 'true', the Printer object MUST reject | ||||
| the request if the client supplies unsupported Job Template | ||||
| attributes. | ||||
| Since a client can always query a Printer to find out exactly what is | o If the Client supplies 'true', the Printer MUST reject the request | |||
| if the Client supplies unsupported Job Template attributes. | ||||
| Since a Client can always query a Printer to find out exactly what is | ||||
| and is not supported, "ipp-attribute-fidelity" set to 'false' is | and is not supported, "ipp-attribute-fidelity" set to 'false' is | |||
| useful when: | useful when: | |||
| 1) The End-User uses a command line interface to request | 1) The End User uses a command line interface to request attributes | |||
| attributes that might not be supported. | that might not be supported. | |||
| 2) In a GUI context, if the End User expects the job might be | ||||
| moved to another printer and prefers a sub-optimal result to | ||||
| nothing at all. | ||||
| 3) The End User just wants something reasonable in lieu of nothing | ||||
| at all. | ||||
| 15.2 Page Description Language (PDL) Override | 2) In a GUI context, if the End User expects the Job might be moved | |||
| to another printer and prefers a sub-optimal result to nothing at | ||||
| all. | ||||
| 3) The End User just wants something reasonable in lieu of nothing at | ||||
| all. | ||||
| C.2. Page Description Language (PDL) Override | ||||
| If there is a conflict between the value of an IPP Job Template | If there is a conflict between the value of an IPP Job Template | |||
| attribute and a corresponding instruction in the document data, the | attribute and a corresponding instruction in the Document data, the | |||
| value of the IPP attribute SHOULD take precedence over the document | value of the IPP attribute SHOULD take precedence over the document | |||
| instruction. Consider the case where a previously formatted file of | instruction. Consider the case where a previously formatted file of | |||
| document data is sent to an IPP Printer. In this case, if the client | Document data is sent to an IPP Printer. In this case, if the Client | |||
| supplies any attributes at job submission time, the client desires | supplies any attributes at Job submission time, the Client desires | |||
| that those attributes override the embedded instructions. Consider | that those attributes override the embedded instructions. Consider | |||
| the case were a previously formatted document has embedded in it | the case were a previously formatted document has embedded in it | |||
| commands to load 'iso-a4' media. However, the document is passed to | commands to load 'iso-a4' media. However, the document is passed to | |||
| an end user that only has access to a printer with 'na-letter' media | an End User that only has access to a printer with 'na-letter' media | |||
| loaded. That end user most likely wants to submit that document to | loaded. That End User most likely wants to submit that document to | |||
| an IPP Printer with the "media" Job Template attribute set to 'na- | an IPP Printer with the "media" Job Template attribute set to 'na- | |||
| letter'. The job submission attribute should take precedence over | letter'. The Job submission attribute should take precedence over | |||
| the embedded PDL instruction. However, until companies that supply | the embedded PDL instruction. However, until companies that supply | |||
| document data interpreters allow a way for external IPP attributes to | Document data interpreters allow a way for external IPP attributes to | |||
| take precedence over embedded job production instructions, a Printer | take precedence over embedded Job production instructions, a Printer | |||
| might not be able to support the semantics that IPP attributes | might not be able to support the semantics that IPP attributes | |||
| override the embedded instructions. | override the embedded instructions. | |||
| The IPP model accounts for this situation by introducing a "pdl- | The IPP model accounts for this situation by introducing a "pdl- | |||
| override-supported" attribute that describes the Printer objects | override-supported" attribute that describes the Printers | |||
| capabilities to override instructions embedded in the PDL data | capabilities to override instructions embedded in the PDL data | |||
| stream. The value of the "pdl-override-supported" attribute is | stream. The value of the "pdl-override-supported" attribute is | |||
| configured by means outside the scope of this IPP/1.1 document. | configured by means outside the scope of this IPP/1.1 document. | |||
| This REQUIRED Printer attribute takes on the following values: | This REQUIRED Printer attribute takes on the following values: | |||
| - 'attempted': This value indicates that the Printer object | o 'attempted': This value indicates that the Printer attempts to | |||
| attempts to make the IPP attribute values take precedence over | make the IPP attribute values take precedence over embedded | |||
| embedded instructions in the document data, however there is no | instructions in the Document data, however there is no guarantee. | |||
| guarantee. | ||||
| - 'not-attempted': This value indicates that the Printer object | ||||
| makes no attempt to make the IPP attribute values take | ||||
| precedence over embedded instructions in the document data. | ||||
| At job processing time, an implementation that supports the value of | o 'not-attempted': This value indicates that the Printer makes no | |||
| attempt to make the IPP attribute values take precedence over | ||||
| embedded instructions in the Document data. | ||||
| At Job processing time, an implementation that supports the value of | ||||
| 'attempted' might do one of several different actions: | 'attempted' might do one of several different actions: | |||
| 1) Generate an output device specific command sequence to realize | 1) Generate an Output Device specific command sequence to realize the | |||
| the feature represented by the IPP attribute value. | feature represented by the IPP attribute value. | |||
| 2) Parse the document data itself and replace the conflicting | ||||
| embedded instruction with a new embedded instruction that | 2) Parse the Document data itself and replace the conflicting | |||
| matches the intent of the IPP attribute value. | embedded instruction with a new embedded instruction that matches the | |||
| 3) Indicate to the Printer that external supplied attributes take | intent of the IPP attribute value. | |||
| precedence over embedded instructions and then pass the | ||||
| external IPP attribute values to the document data interpreter. | 3) Indicate to the Printer that external supplied attributes take | |||
| 4) Anything else that allows for the semantics that IPP attributes | precedence over embedded instructions and then pass the external IPP | |||
| override embedded document data instructions. | attribute values to the Document data interpreter. | |||
| 4) Anything else that allows for the semantics that IPP attributes | ||||
| override embedded Document data instructions. | ||||
| Since 'attempted' does not offer any type of guarantee, even though a | Since 'attempted' does not offer any type of guarantee, even though a | |||
| given Printer object might not do a very "good" job of attempting to | given Printer might not do a very "good" Job of attempting to ensure | |||
| ensure that IPP attributes take a higher precedence over instructions | that IPP attributes take a higher precedence over instructions | |||
| embedded in the document data, it would still be a conforming | embedded in the Document data, it would still be a conforming | |||
| implementation. | implementation. | |||
| At job processing time, an implementation that supports the value of | At Job processing time, an implementation that supports the value of | |||
| 'not-attempted' might do one of the following actions: | 'not-attempted' might do one of the following actions: | |||
| 1) Simply pre-pend the document data with the PDL instruction that | 1) Simply pre-pend the Document data with the PDL instruction that | |||
| corresponds to the client-supplied PDL attribute, such that if | corresponds to the Client-supplied PDL attribute, such that if the | |||
| the document data also has the same PDL instruction, it will | Document data also has the same PDL instruction, it will override | |||
| override what the Printer object pre-pended. In other words, | what the Printer pre-pended. In other words, this implementation is | |||
| this implementation is using the same implementation semantics | using the same implementation semantics for the Client-supplied IPP | |||
| for the client-supplied IPP attributes as for the Printer | attributes as for the Printer defaults. | |||
| object defaults. | ||||
| 2) Parse the document data and replace the conflicting embedded | 2) Parse the Document data and replace the conflicting embedded | |||
| instruction with a new embedded instruction that approximates, | instruction with a new embedded instruction that approximates, but | |||
| but does not match, the semantic intent of the IPP attribute | does not match, the semantic intent of the IPP attribute value. | |||
| value. | ||||
| Note: The "ipp-attribute-fidelity" attribute applies to the | Note: The "ipp-attribute-fidelity" attribute applies to the Printer's | |||
| Printer's ability to either accept or reject other unsupported Job | ability to either accept or reject other unsupported Job Template | |||
| Template attributes. In other words, if "ipp-attribute-fidelity" is | attributes. In other words, if "ipp-attribute-fidelity" is set to | |||
| set to 'true', a Job is accepted if and only if the client supplied | 'true', a Job is accepted if and only if the Client supplied Job | |||
| Job Template attributes and values are supported by the Printer. | Template attributes and values are supported by the Printer. Whether | |||
| Whether these attributes actually affect the processing of the Job | these attributes actually affect the processing of the Job when the | |||
| when the document data contains embedded instructions depends on the | Document data contains embedded instructions depends on the ability | |||
| ability of the Printer to override the instructions embedded in the | of the Printer to override the instructions embedded in the Document | |||
| document data with the semantics of the IPP attributes. If the | data with the semantics of the IPP attributes. If the Document data | |||
| document data attributes can be overridden ("pdl-override-supported" | attributes can be overridden ("pdl-override-supported" set to | |||
| set to 'attempted'), the Printer makes an attempt to use the IPP | 'attempted'), the Printer makes an attempt to use the IPP attributes | |||
| attributes when processing the Job. If the document data attributes | when processing the Job. If the Document data attributes cannot be | |||
| can not be overridden ("pdl-override-supported" set to 'not- | overridden ("pdl-override-supported" set to 'not-attempted'), the | |||
| attempted'), the Printer makes no attempt to override the embedded | Printer makes no attempt to override the embedded Document data | |||
| document data instructions with the IPP attributes when processing | instructions with the IPP attributes when processing the Job, and | |||
| the Job, and hence, the IPP attributes may fail to affect the Job | hence, the IPP attributes can fail to affect the Job processing and | |||
| processing and output when the corresponding instruction is embedded | output when the corresponding instruction is embedded in the Document | |||
| in the document data. | data. | |||
| 15.3 Using Job Template Attributes During Document Processing. | C.3. Using Job Template Attributes During Document Processing. | |||
| The Printer object uses some of the Job object's Job Template | The Printer uses some of the Job's Job Template attributes during the | |||
| attributes during the processing of the document data associated with | processing of the Document data associated with that Job. These | |||
| that job. These include, but are not limited to, "orientation- | include, but are not limited to, "orientation-requested", "number- | |||
| requested", "number-up", "sides", "media", and "copies". The | up", "sides", "media", and "copies". The processing of each document | |||
| processing of each document in a Job Object MUST follow the steps | in a Job Object MUST follow the steps below. These steps are | |||
| below. These steps are intended only to identify when and how | intended only to identify when and how attributes are to be used in | |||
| attributes are to be used in processing document data and any | processing Document data and any alternative steps that accomplishes | |||
| alternative steps that accomplishes the same effect can be used to | the same effect can be used to implement this specification document. | |||
| implement this specification document. | ||||
| 1. Using the client supplied "document-format" attribute or some | 1. Using the Client supplied "document-format" attribute or some | |||
| form of document format detection algorithm (if the value of | form of Document format detection algorithm (if the value of | |||
| "document-format" is not specific enough), determine whether or | "document-format" is not specific enough), determine whether the | |||
| not the document data has already been formatted for printing. | Document data has already been formatted for printing. If the | |||
| If the document data has been formatted, then go to step 2. | Document data has been formatted, then go to step 2. Otherwise, | |||
| Otherwise, the document data MUST be formatted. The formatting | the Document data MUST be formatted. The formatting detection | |||
| detection algorithm is implementation defined and is not | algorithm is implementation defined and is not specified by this | |||
| specified by this document. The formatting of the document | document. The formatting of the Document data uses the | |||
| data uses the "orientation-requested" attribute to determine | "orientation-requested" attribute to determine how the formatted | |||
| how the formatted print data should be placed on a print-stream | print data should be placed on a Input Page, see Section 5.2.10 | |||
| page, see section 4.2.10 for the details. | for the details. | |||
| 2. The document data is in the form of a print-stream in a known | 2. The Document data is a set of Input Pages in a known media type. | |||
| media type. The "page-ranges" attribute is used to select, as | The "page-ranges" attribute is used to select, as specified in | |||
| specified in section 4.2.7, a sub-sequence of the pages in the | Section 5.2.7, a sub-sequence of the pages in the print-stream | |||
| print-stream that are to be processed and images. | that are to be processed and images. | |||
| 3. The input to this step is a sequence of print-stream pages. | 3. The input to this step is a sequence of Input Pages. This step | |||
| This step is controlled by the "number-up" attribute. If the | is controlled by the "number-up" attribute. If the value of | |||
| value of "number-up" is N, then during the processing of the | "number-up" is N, then during the processing of the Input Pages, | |||
| print-stream pages, each N print-stream pages are positioned, | each N Input Pages are positioned, as specified in Section 5.2.9, | |||
| as specified in section 4.2.9, to create a single impression. | to create a single Impression. If a given document does not have | |||
| If a given document does not have N more print-stream pages, | N more Input Pages, then the completion of the Impression is | |||
| then the completion of the impression is controlled by the | controlled by the "multiple-document-handling" attribute as | |||
| "multiple-document-handling" attribute as described in section | described in Section 5.2.4; when the value of this attribute is | |||
| 4.2.4; when the value of this attribute is 'single-document' or | 'single-document' or 'single-document-new-sheet', the Input Pages | |||
| 'single-document-new-sheet', the print-stream pages of document | of Document data from subsequent documents is used to complete | |||
| data from subsequent documents is used to complete the | the Impression. | |||
| impression. | ||||
| The size(scaling), position(translation) and rotation of the | The size (scaling), position (translation) and rotation of the Input | |||
| print-stream pages on the impression is implementation defined. | Pages on the Impression is implementation defined. Note that during | |||
| Note that during this process the print-stream pages may be | this process the Input Pages can be rendered to a form suitable for | |||
| rendered to a form suitable for placing on the impression; this | placing on the Impression; this rendering is controlled by the values | |||
| rendering is controlled by the values of the "printer- | of the "printer-resolution" and "print-quality" attributes as | |||
| resolution" and "print-quality" attributes as described in | described in Sections 5.2.12 and 5.2.13. In the case N=1, the | |||
| sections 4.2.12 and 4.2.13. In the case N=1, the impression is | Impression is nearly the same as the Input Page; the differences | |||
| nearly the same as the print-stream page; the differences would | would only be in the size, position and rotation of the Input Page | |||
| only be in the size, position and rotation of the print-stream | and/or any decoration, such as a frame to the page, that is added by | |||
| page and/or any decoration, such as a frame to the page, that | the implementation. | |||
| is added by the implementation. | ||||
| 4. The collection of impressions is placed, in sequence, onto | 1. The collection of Impressions is placed, in sequence, onto sides | |||
| sides of the media sheets. This placement is controlled by the | of the Media Sheets. This placement is controlled by the "sides" | |||
| "sides" attribute and the orientation of the print-stream page, | attribute and the orientation of the Input Page, as described in | |||
| as described in section 4.2.8. The orientation of the print- | Section 5.2.8. The orientation of the Input Pages affects the | |||
| stream pages affects the orientation of the impression; for | orientation of the Impression; for example, if "number-up" equals | |||
| example, if "number-up" equals 2, then, typically, two portrait | 2, then, typically, two portrait Input Pages become one landscape | |||
| print-stream pages become one landscape impression. Note that | Impression. Note that the placement of Impressions onto Media | |||
| the placement of impressions onto media sheets is also | Sheets is also controlled by the "multiple-document-handling" | |||
| controlled by the "multiple-document-handling" attribute as | attribute as described in Section 5.2.4. | |||
| described in section 4.2.4. | ||||
| 5. The "copies" and "multiple-document-handling" attributes are | 2. The "copies" and "multiple-document-handling" attributes are used | |||
| used to determine how many copies of each media instance are | to determine how many copies of each Media Sheet are printed and | |||
| created and in what order. See sections 4.2.5 and 4.2.4 for the | in what order. See Sections 5.2.4 and 5.2.5 for the details. | |||
| details. | ||||
| 6. When the correct number of copies are created, the media | 3. When the correct number of copies are created, the Media Sheets | |||
| instances are finished according to the values of the | are finished according to the values of the "finishings" | |||
| "finishings" attribute as described in 4.2.6. Note that | attribute as described in 4.2.6. Note that sometimes finishing | |||
| sometimes finishing operations may require manual intervention | processes can require manual intervention to perform the | |||
| to perform the finishing operations on the copies, especially | finishing processes on the copies, especially uncollated copies. | |||
| uncollated copies. This document allows any or all of the | This document allows any or all of the processing steps to be | |||
| processing steps to be performed automatically or manually at | performed automatically or manually at the discretion of the | |||
| the discretion of the Printer object. | Printer. | |||
| 16. APPENDIX E: Generic Directory Schema | Appendix D. Generic Directory Schema | |||
| This section defines a generic schema for an entry in a directory | This section defines a generic schema for an entry in a directory | |||
| service. A directory service is a means by which service users can | service. Implementations of this schema are defined by the LDAP | |||
| locate service providers. In IPP environments, this means that IPP | Schema for Printer Services [RFC7612] and IPP Everywhere | |||
| Printers can be registered (either automatically or with the help of | [PWG5100.14]. A directory service is a means by which service users | |||
| an administrator) as entries of type printer in the directory using | can locate service providers. In IPP environments, this means that | |||
| IPP Printers can be registered (either automatically or with the help | ||||
| of an Adminstrator) as entries of type printer in the directory using | ||||
| an implementation specific mechanism such as entry attributes, entry | an implementation specific mechanism such as entry attributes, entry | |||
| type fields, specific branches, etc. Directory clients can search or | type fields, specific branches, etc. Directory clients can search or | |||
| browse for entries of type printer. Clients use the directory | browse for entries of type printer. Clients use the directory | |||
| service to find entries based on naming, organizational contexts, or | service to find entries based on naming, organizational contexts, or | |||
| filtered searches on attribute values of entries. For example, a | filtered searches on attribute values of entries. For example, a | |||
| client can find all printers in the "Local Department" context. | Client can find all printers in the "Local Department" context. | |||
| Authentication and authorization are also often part of a directory | Authentication and authorization are also often part of a directory | |||
| service so that an administrator can place limits on end users so | service so that an Adminstrator can place limits on End Users so that | |||
| that they are only allowed to find entries to which they have certain | they are only allowed to find entries to which they have certain | |||
| access rights. IPP itself does not require any specific directory | access rights. IPP itself does not require any specific directory | |||
| service protocol or provider. | service protocol or provider. | |||
| Note: Some directory implementations allow for the notion of | Note: Some directory implementations allow for the notion of | |||
| "aliasing". That is, one directory entry object can appear as | "aliasing". That is, one directory entry object can appear as | |||
| multiple directory entry object with different names for each object. | multiple directory entry object with different names for each object. | |||
| In each case, each alias refers to the same directory entry object | In each case, each alias refers to the same directory entry object | |||
| which refers to a single IPP Printer object. | which refers to a single IPP Printer. | |||
| The generic schema is a subset of IPP Printer Job Template and | The generic schema is a subset of IPP Printer Job Template and | |||
| Printer Description attributes (sections 4.2 and 4.4). These | Printer Description attributes (Sections 5.2 and 5.4). These | |||
| attributes are identified as either RECOMMENDED or OPTIONAL for the | attributes are identified as either RECOMMENDED or OPTIONAL for the | |||
| directory entry itself. This conformance labeling is NOT the same | directory entry itself. This conformance labeling is NOT the same | |||
| conformance labeling applied to the attributes of IPP Printers | conformance labeling applied to the attributes of IPP Printers | |||
| objects. The conformance labeling in this Appendix is intended to | objects. The conformance labeling in this Appendix is intended to | |||
| apply to directory templates and to IPP Printer implementations that | apply to directory templates and to IPP Printer implementations that | |||
| subscribe by adding one or more entries to a directory. RECOMMENDED | subscribe by adding one or more entries to a directory. RECOMMENDED | |||
| attributes SHOULD be associated with each directory entry. OPTIONAL | attributes SHOULD be associated with each directory entry. OPTIONAL | |||
| attributes MAY be associated with the directory entry (if known or | attributes MAY be associated with the directory entry (if known or | |||
| supported). In addition, all directory entry attributes SHOULD | supported). In addition, all directory entry attributes SHOULD | |||
| reflect the current attribute values for the corresponding Printer | reflect the current attribute values for the corresponding Printer. | |||
| object. | ||||
| The names of attributes in directory schema and entries SHOULD be the | The names of attributes in directory schema and entries SHOULD be the | |||
| same as the IPP Printer attribute names as shown, as much as | same as the IPP Printer attribute names as shown, as much as | |||
| possible. | possible. | |||
| In order to bridge between the directory service and the IPP Printer | In order to bridge between the directory service and the IPP Printer, | |||
| object, one of the RECOMMENDED directory entry attributes is the | one of the RECOMMENDED directory entry attributes is the Printer's | |||
| Printer object's "printer-uri-supported" attribute. The directory | "printer-uri-supported" attribute. The directory Client queries the | |||
| client queries the "printer-uri-supported" attribute (or its | "printer-uri-supported" attribute (or its equivalent) in the | |||
| equivalent) in the directory entry and then the IPP client addresses | directory entry and then the IPP Client addresses the IPP Printer | |||
| the IPP Printer object using one of its URIs. The "uri-security- | using one of its URIs. The "uri-security-supported" attribute | |||
| supported" attribute identifies the protocol (if any) used to secure | identifies the protocol (if any) used to secure a channel. | |||
| a channel. | ||||
| The following attributes define the generic schema for directory | The attributes in Table 23 define the generic schema for directory | |||
| entries of type PRINTER: | entries of type PRINTER. | |||
| printer-uri-supported RECOMMENDED Section 4.4.1 | +------------------------------------+-------------+----------------+ | |||
| uri-authentication-supported RECOMMENDED Section 4.4.2 | | Attribute | Conformance | Section | | |||
| uri-security-supported RECOMMENDED Section 4.4.3 | +------------------------------------+-------------+----------------+ | |||
| printer-name RECOMMENDED Section 4.4.4 | | charset-supported | OPTIONAL | Section 5.4.18 | | |||
| printer-location RECOMMENDED Section 4.4.5 | +------------------------------------+-------------+----------------+ | |||
| printer-info OPTIONAL Section 4.4.6 | | color-supported | RECOMMENDED | Section 5.4.26 | | |||
| printer-more-info OPTIONAL Section 4.4.7 | +------------------------------------+-------------+----------------+ | |||
| printer-make-and-model RECOMMENDED Section 4.4.9 | | compression-supported | RECOMMENDED | Section 5.4.32 | | |||
| ipp-versions-supported RECOMMENDED Section 4.4.14 | +------------------------------------+-------------+----------------+ | |||
| multiple-document-jobs-supported OPTIONAL Section 4.4.16 | | document-format-supported | RECOMMENDED | Section 5.4.22 | | |||
| charset-supported OPTIONAL Section 4.4.18 | +------------------------------------+-------------+----------------+ | |||
| | finishings-supported | OPTIONAL | Section 5.2.6 | | ||||
| +------------------------------------+-------------+----------------+ | ||||
| | generated-natural-language- | OPTIONAL | Section 5.4.20 | | ||||
| | supported | | | | ||||
| +------------------------------------+-------------+----------------+ | ||||
| | ipp-versions-supported | RECOMMENDED | Section 5.4.14 | | ||||
| +------------------------------------+-------------+----------------+ | ||||
| | media-supported | RECOMMENDED | Section 5.2.11 | | ||||
| +------------------------------------+-------------+----------------+ | ||||
| | multiple-document-jobs-supported | OPTIONAL | Section 5.4.16 | | ||||
| +------------------------------------+-------------+----------------+ | ||||
| | number-up-supported | OPTIONAL | Section 5.2.7 | | ||||
| +------------------------------------+-------------+----------------+ | ||||
| | pages-per-minute-color | OPTIONAL | Section 5.4.37 | | ||||
| +------------------------------------+-------------+----------------+ | ||||
| | pages-per-minute | OPTIONAL | Section 5.4.36 | | ||||
| +------------------------------------+-------------+----------------+ | ||||
| | print-quality-supported | OPTIONAL | Section 5.2.13 | | ||||
| +------------------------------------+-------------+----------------+ | ||||
| | printer-info | OPTIONAL | Section 5.4.6 | | ||||
| +------------------------------------+-------------+----------------+ | ||||
| | printer-location | RECOMMENDED | Section 5.4.5 | | ||||
| +------------------------------------+-------------+----------------+ | ||||
| | printer-make-and-model | RECOMMENDED | Section 5.4.9 | | ||||
| +------------------------------------+-------------+----------------+ | ||||
| | printer-more-info | OPTIONAL | Section 5.4.7 | | ||||
| +------------------------------------+-------------+----------------+ | ||||
| | printer-name | RECOMMENDED | Section 5.4.4 | | ||||
| +------------------------------------+-------------+----------------+ | ||||
| | printer-resolution-supported | OPTIONAL | Section 5.2.12 | | ||||
| +------------------------------------+-------------+----------------+ | ||||
| | printer-uri-supported | RECOMMENDED | Section 5.4.1 | | ||||
| +------------------------------------+-------------+----------------+ | ||||
| | sides-supported | RECOMMENDED | Section 5.2.8 | | ||||
| +------------------------------------+-------------+----------------+ | ||||
| | supported | OPTIONAL | Section 5.4.20 | | ||||
| +------------------------------------+-------------+----------------+ | ||||
| | uri-authentication-supported | RECOMMENDED | Section 5.4.2 | | ||||
| +------------------------------------+-------------+----------------+ | ||||
| | uri-security-supported | RECOMMENDED | Section 5.4.3 | | ||||
| +------------------------------------+-------------+----------------+ | ||||
| generated-natural-language- | Table 23: Attributes in Directory Entries | |||
| supported OPTIONAL Section 4.4.20 | ||||
| document-format-supported RECOMMENDED Section 4.4.22 | ||||
| color-supported RECOMMENDED Section 4.4.26 | ||||
| compression-supported RECOMMENDED Section 4.4.32 | ||||
| pages-per-minute OPTIONAL Section 4.4.36 | ||||
| pages-per-minute-color OPTIONAL Section 4.4.37 | ||||
| finishings-supported OPTIONAL Section 4.2.6 | Appendix E. Change History | |||
| number-up-supported OPTIONAL Section 4.2.7 | ||||
| sides-supported RECOMMENDED Section 4.2.8 | ||||
| media-supported RECOMMENDED Section 4.2.11 | ||||
| printer-resolution-supported OPTIONAL Section 4.2.12 | ||||
| print-quality-supported OPTIONAL Section 4.2.13 | ||||
| 17. APPENDIX F: Differences between the IPP/1.0 and IPP/1.1 "Model and | E.1. Changes In -09 | |||
| Semantics" Documents | ||||
| This Appendix is divided into two lists that summarize the | The following changes are in draft-sweet-rfc2911bis-09: | |||
| differences between IPP/1.1 (this document) and IPP/1.0 [RFC2566]. | ||||
| The section numbers refer to the numbers in this document which in | ||||
| some cases have changed from RFC 2566. When a change affects | ||||
| multiple sections, the item is listed once in the order of the first | ||||
| section affected and the remaining affected section numbers are | ||||
| indicated. | ||||
| The first list contains extensions and clarifications and the second | o Section 2.3.4: Mention imposition of input pages on impressions | |||
| list contains changes in semantics or conformance. However, client | during processing. | |||
| and IPP object implementations of IPP/1.0 MAY implement any of the | ||||
| extensions and clarifications in this document. | ||||
| The following extensions and clarifications have been incorporated | o Section 2.3.8: Mention roll media. | |||
| into this document: | ||||
| 1. Section 2.1 - clarified that the term "client" can be either | o Section 4.1.4: Reworded for clarity. | |||
| contained in software controlled by an end user or a part of a | ||||
| print server that controls devices. | ||||
| 2. Section 2 - clarified that the term "IPP object" and "Printer | ||||
| object" can either be embedded in a device object or part of a | ||||
| print server that accepts IPP requests. | ||||
| 3. Section 2.4 - added the description of the new "uri- | ||||
| authentication-supported" Printer Description attribute. | ||||
| 4. Section 3.1.3, 3.1.6, 3.2.5.2, and 3.2.6.2 - clarified the | ||||
| error handling for operation attributes that have their own | ||||
| status code. | ||||
| 5. Section 3.1.3 - clarified that multiple occurrences of the | ||||
| same attribute in an attribute group is mal-formed. An IPP | ||||
| Printer MAY reject the request or choose one of the | ||||
| attributes. | ||||
| 6. Section 3.1.6 - reorganized this section into sub-sections to | ||||
| separately describe "status-code", "status-message", | ||||
| "detailed-status-message", and "document-access-error" | ||||
| attributes. | ||||
| 7. Section 3.1.6.1 - clarified the error status codes and their | ||||
| relationship to operation attributes. | ||||
| 8. Section 3.1.6.3 - Added the OPTIONAL "detailed-status-message | ||||
| (text(MAX))" operation attribute to provide additional more | ||||
| detailed information about a response. | ||||
| 9. Section 3.1.6.4 and 3.2.2 - Added the OPTIONAL "document- | ||||
| access-error (text(MAX))" operation attribute for use with | ||||
| Print-URI and Send-URI responses. | ||||
| 10. Sections 3.1.7 - Added this new section to clarify returning | ||||
| Unsupported Attributes for all operations, including only | ||||
| returning attributes that were in the request. Moved the text | ||||
| from section 3.2.1.2 Unsupported Attributes to this section. | ||||
| 11. Sections 3.1.7 and 4.1 - clarified the encoding of the "out- | ||||
| of-band" 'unsupported' and 'unknown' values. | ||||
| 12. Section 3.1.8 - clarified that only the version number | ||||
| parameter will be carried forward into future major or minor | ||||
| versions of the protocol. | ||||
| 13. Section 3.1.8 - relaxed the requirements to increment the | ||||
| major version number in future versions of the Model and | ||||
| Semantics document. | ||||
| 14. Section 3.1.9, and 3.2.5 - added the 'processing' state to the | o Section 4.2.1.2: Moved Status Message after Natural Language and | |||
| list of job states that a job can be in after a Create-Job | Character Set. | |||
| operation. | ||||
| 15. Section 3.1.9 - clarified that a non-spooling Printer MAY | ||||
| accept zero or more subsequent jobs while processing a job and | ||||
| flow control them down. Subsequent create requests are | ||||
| rejected with the 'server-error-busy' error status. | ||||
| 16. Section 3.2.1.1 - clarified the validation of the | ||||
| "compression" operation attribute and its relationship to the | ||||
| validation of the "document-format" attribute and returning | ||||
| Unsupported Attributes. | ||||
| 17. Sections 3.2.1.1, 4.3.8, 13.1.4.16, and 13.1.4.17 - added the | ||||
| 'client-error-compression-not-supported', 'client-error- | ||||
| compression-error' status codes and the 'unsupported- | ||||
| compression' and 'compression-error' job-state-reasons. | ||||
| 18. Sections 3.2.1.1 and 4.3.8 - added 'unsupported-document- | ||||
| format' and 'document-format-error' job-state-reasons. | ||||
| 19. Sections 3.2.2, 4.3.8 and 13.1.4.19 - added 'client-error- | ||||
| document-access-error' status code and 'document-access-error' | ||||
| job state reason. | ||||
| 20. Section 3.2.5.2 and 3.2.6.2 - clarified that the Unsupported | ||||
| Attributes group MUST NOT include attributes not requested in | ||||
| the Get-Printer-Attributes request. | ||||
| 21. Section 3.2.6 - clarified that "limit" takes precedence over | ||||
| "which-jobs" and "my-jobs'. | ||||
| 22. Section 3.2.6.2 - clarified that Get-Jobs returns | ||||
| 'successful-ok' when no jobs to return. | ||||
| 23. Sections 3.2.7, 3.2.8, and 3.2.9 - added the OPTIONAL Pause- | ||||
| Printer, Resume-Printer, and Purge-Jobs operations | ||||
| 24. Section 3.3.1 - clarified that the authorization required for | ||||
| a Send-Document request MUST be the same user as the Create- | ||||
| Job or an operator. | ||||
| 25. Section 3.3.1.1 - clarified that a Create-Job Send-Document | ||||
| with "last-document" = 'true' and no data is not an error; its | ||||
| a job with no documents. | ||||
| 26. Sections 3.3.5, 3.3.6, and 3.3.7 - added the OPTIONAL Hold- | ||||
| Job, Release-Job, and Restart-Job operations. Clarified the | ||||
| Restart-Job operation so that the Printer MUST re-fetch any | ||||
| documents passed by-reference (Print-URI or Send-URI). | ||||
| 27. Section 4.1 - clarified that the encoding of the out-of-band | ||||
| values are specified in the Encoding and Transport" document. | ||||
| 28. Section 4.1 - Clarified that the requirement that clients MUST | ||||
| NOT send "out-of-band" values in requests applies only to | ||||
| operations defined in this document. Other operations are | ||||
| allowed to define "out-of-band" values that clients can | ||||
| supply. | ||||
| 29. Sections 4.1.1 and 4.1.2 - clarified that the maximum 'text' | o Section 4.2.5.2: Moved Status Message after Natural Language and | |||
| and 'name' values of 1023 and 255 are for the | Character Set. | |||
| 'textWithoutLanguage' portion of the 'textWithLanguage' form, | ||||
| so that the maximum number of octets for the actual text and | ||||
| name data is the same for the without and with language forms; | ||||
| the 'naturalLanguage' part is in addition. | ||||
| 30. Section 4.1.9 - clarified that 'mimeMediaType' values can | ||||
| include any parameters from the IANA Registry, not just | ||||
| charset parameters. | ||||
| 31. Section 4.1.9.1 - clarified that 'application/octet-stream' | ||||
| auto-sensing can happen at create request time and/or | ||||
| job/document processing time. | ||||
| 32. Section 4.1.9.1 - clarified that auto-sensing involves the | ||||
| Printer examining some number of octets of document data using | ||||
| an implementation-dependent method. | ||||
| 33. Section 4.1.14 - clarified that the localization of dateTime | ||||
| by the client includes the time zone. | ||||
| 34. Section 4.2 - clarified that xxx-supported have multiple | ||||
| keywords and/or names by adding parentheses to the table to | ||||
| give: (1setOf (type3 keyword | name)) | ||||
| 35. Section 4.2.2 - added the 'indefinite' keyword value to the | ||||
| "job-hold-until" attribute for use with the create operations | ||||
| and Hold-Job and Restart-Job operations. | ||||
| 36. Section 4.2.6 - added more enum values to the "finishings" Job | ||||
| Template attribute. | ||||
| 37. Section 4.2.6 - clarified that the landscape definition is a | ||||
| rotation of the image with respect to the medium. | ||||
| 38. Section 4.3.7 - added that a forwarding server that cannot get | ||||
| any job state MAY return the job's state as 'completed', | ||||
| provided that it also return the new 'queued-in-device' job | ||||
| state reason. | ||||
| 39. Section 4.3.7.2 - added the Partitioning of Job States section | ||||
| to clarify the concepts of Job Retention, Job History, and Job | ||||
| Removal. | ||||
| 40. Section 4.3.8 - added 'job-data-insufficient' job state reason | ||||
| to indicate whether sufficient data has arrived for the | ||||
| document to start to be processed. | ||||
| 41. Section 4.3.8 - added 'document-access-error' job state reason | ||||
| to indicate an access error of any kind. | ||||
| 42. Section 4.3.8 - added 'job-queued-for-marker' job state reason | ||||
| to indicate whether the job has completed some processing and | ||||
| is waiting for the marker. | ||||
| 43. Section 4.3.8 - added 'unsupported-compression' and | ||||
| 'compression-error' job state reasons to indicate compression | ||||
| not supported or compression processing error after the create | ||||
| has been accepted. | ||||
| 44. Section 4.3.8 - added 'unsupported-document-format' and | o Section 4.2.6.2: Moved Status Message after Natural Language and | |||
| 'document-format-error' job state reasons to indicate document | Character Set. | |||
| not supported or document format processing error after the | ||||
| create has been accepted. | ||||
| 45. Section 4.3.8 - added 'queued-in-device' job state reason to | ||||
| indicate that a job as been forwarded to a print system or | ||||
| device that does not provide any job status. | ||||
| 46. Section 4.3.10 - added "job-detailed-status-messages (1setOf | ||||
| text(MAX)) for returning detailed error messages. | ||||
| 47. Section 4.3.11 - added the "job-document-access-errors (1setOf | ||||
| text(MAX)) | ||||
| 48. Section 4.3.14.2 - clarified that the time recorded is the | ||||
| first time processing since the create operation or the | ||||
| Restart-Job operation. | ||||
| 49. Section 4.3.14.2 and 4.3.14.3 - clarified that the out-of-band | ||||
| value 'no-value' is returned if the job has not started | ||||
| processing or has not completed, respectively. | ||||
| 50. Section 4.3.14 - Added the OPTIONAL "date-time-at-creation", | ||||
| "date-time-at-processing", and "date-time-at-completed" Event | ||||
| Time Job Description attributes | ||||
| 51. Section 4.4.3 - added the 'tls' value to "uri-security- | ||||
| supported" attribute. | ||||
| 52. Section 4.4.3 - clarified "uri-security-supported" is | ||||
| orthogonal to Client Authentication so that 'none' does not | ||||
| exclude Client Authentication. | ||||
| 53. Section 4.4.11 - simplified the "printer-state" descriptions | ||||
| while generalizing to allow high end devices that interpret | ||||
| one or more jobs while marking another. Indicated that | ||||
| 'spool-area-full' and 'stopped-partly' "printer-state-reasons" | ||||
| may be used to provide further state information. | ||||
| 54. Section 4.4.12 - added the 'moving-to-paused' keyword value to | ||||
| the "printer-state-reasons" attribute for use with the Pause- | ||||
| Printer operation. | ||||
| 55. Section 4.4.12 - replaced the duplicate 'marker-supply-low' | ||||
| keyword with the missing 'toner-empty' keyword for the | ||||
| "printer-state-reasons" attribute. (This correction was also | ||||
| made before RFC 2566 was published). | ||||
| 56. Section 4.4.12 - clarified 'spool-area-full' "printer-state- | ||||
| reasons" to include non-spooling printers to indicate when it | ||||
| can and cannot accept another job. | ||||
| 57. Section 4.4.15 - added the enum values to the "operations- | ||||
| supported" attribute for the new operations. Clarified that | ||||
| the values of this attribute are encoded as any enum, namely | ||||
| 32-bit values. | ||||
| 58. Section 4.4.30 - clarified that the dateTime value of | ||||
| "printer-current-time" is on a "best efforts basis". If a | ||||
| proper date-time cannot be obtained, the implementation | ||||
| returns the 'no-value' out-of-band value. Also clarified that | ||||
| the time zone NEED NOT be the time zone that the people near | ||||
| the device use and that the client SHOULD display the dateTime | ||||
| attributes in the user's local time. | ||||
| 59. Sections 4.4.36 and 4.4.37 - added the OPTIONAL "pages-per- | ||||
| minute" and "pages-per-minute-color" Printer Description | ||||
| attributes. | ||||
| 60. Section 5.1 - clarified that the client conformance | ||||
| requirements apply to clients controlled by an end user and | ||||
| clients in servers. | ||||
| 61. Section 5.1 - clarified that any response MAY contain | ||||
| additional attribute groups, attributes, attribute syntaxes, | ||||
| or attribute values. | ||||
| 62. Section 5.1 - clarified that a client SHOULD do its best to | ||||
| prevent a channel from being closed by a lower layer when the | ||||
| channel is flow controlled off by the IPP Printer. | ||||
| 63. Section 5.2 - clarified that the IPP object requirements apply | ||||
| to objects embedded in devices or that are parts of servers. | ||||
| 64. Section 5.2.2 - clarified that IPP objects MAY return | ||||
| operation responses that contain attribute groups, attribute | ||||
| names, attribute syntaxes, attribute values, and status codes | ||||
| that are extensions to this standard. | ||||
| 65. Section 6 - changed the terminology of "private extensions" to | ||||
| "vendor extensions" and indicated that they are registered | ||||
| with IANA along with IETF standards track extensions. | ||||
| 66. Section 6.7 - inserted this section on registering out-of-band | ||||
| attribute values with IANA as extensions. | ||||
| 67. Section 8.3 - clarified the use of URIs for each Client | ||||
| Authentication mechanism. | ||||
| 68. Section 8.5 - added the security discussion around the new | ||||
| operator/administrator operations. | ||||
| 69. Section 13.1.4.16 - added client-error-compression-not- | ||||
| supported (0x040F) | ||||
| 70. Section 13.1.4.17 - added client-error-compression-error | ||||
| (0x0410) | ||||
| 71. Section 13.1.4.18 - added client-error-document-format-error | ||||
| (0x0411) | ||||
| 72. Section 13.1.4.19 - added client-error-document-access-error | ||||
| (0x0412) | ||||
| 73. Section 13.1.5.10 - added server-error-multiple-document- | ||||
| jobs-not-supported (0x0509) | ||||
| 74. Section 14 - added 'a-white', 'b-white', 'c-white', 'd-white', | ||||
| and 'e-white' and clarified that the existing 'a', 'b', 'c', | ||||
| 'd', and 'e' values are size values. Added American, | ||||
| Japanese, and European Engineering sizes, filled out | ||||
| -transparent and - translucent media names and drawings for | ||||
| the synchro cut sizes. | ||||
| 75. Section 16 - softened the RECOMMENDATION for IPP Printer | o Section 4.2.7.2: Moved Status Message after Natural Language and | |||
| attributes in a Directory schema so that they can have | Character Set. | |||
| equivalents. | ||||
| 76. Section 16 - added the OPTIONAL "pages-per-minute" and | ||||
| "pages-per-minute-color" Printer attributes to the Directory | ||||
| schema. | ||||
| 77. Section 16 - added OPTIONAL "multiple-document-jobs-supported" | ||||
| to the Directory schema. | ||||
| 78. Section 16 - added RECOMMENDED "uri-authentication-supported", | ||||
| "ipp-versions-supported", and "compression-supported" to the | ||||
| Directory schema. | ||||
| The following changes in semantics and/or conformance have been | o Section 4.3.1.2: Moved Status Message after Natural Language and | |||
| incorporated into this document: | Character Set. | |||
| 1. Section 3.1.6.3 - allowed a Printer to localize the | o Section 4.3.3.2: Moved Status Message after Natural Language and | |||
| "detailed-status-message" operation response attribute, but | Character Set. | |||
| indicated that such localization might obscure the technical | ||||
| meaning of such messages. | ||||
| 2. Section 3.1.8, 5.2.4, and 13.1.5.4 - Clients and IPP objects | ||||
| MUST support version 1.1 conformance requirements. It is | ||||
| recommended that they interoperate with 1.0. Also clarified | ||||
| that IPP Printers MUST accept '1.1' requests. It is | ||||
| recommended that they also accept '1.x' requests. | ||||
| 3. Section 3.2.1.1 and section 4.4.32 - changed the "compression" | o Section 4.3.4.2: Moved Status Message after Natural Language and | |||
| operation and the "compression-supported" Printer Description | Character Set. | |||
| attribute from OPTIONAL to REQUIRED. | ||||
| 4. Sections 3.2.1.2 and 4.3.8 - changed "job-state-reasons" from | ||||
| RECOMMENDED to REQUIRED, so that "job-state-reasons" MUST be | ||||
| returned in create operation responses. | ||||
| 5. Sections 3.2.4, 3.3.1, 4.4.16, and 16 - changed Create- | ||||
| Job/Send-Document so that they MAY be implemented while only | ||||
| supporting one document jobs. Added the "multiple-document- | ||||
| jobs-supported" boolean Printer Description attribute to | ||||
| indicate whether Create-Job/Send-Document support multiple | ||||
| document jobs or not. Added to the Directory schema. | ||||
| 6. Section 4.1.9 - deleted 'text/plain; charset=iso-10646-ucs-2', | ||||
| since binary is not legal with the 'text' type. | ||||
| 7. Section 4.1.9.1 - added the RECOMMENDATION that a Printer | ||||
| indicate by printing on the job's job-start-sheet that auto- | ||||
| sensing has occurred and what document format was auto-sensed. | ||||
| 8. Section 4.2.4 - indicated that the "multiple-document- | ||||
| handling" Job Template attribute MUST be supported with at | ||||
| least one value if the Printer supports multiple documents per | ||||
| job | ||||
| 9. Section 4.3.7.2 - indicated that the 'job-restartable' job | o Section 5.1: Moved out-of-band syntaxes to their own sub-section. | |||
| state reason SHOULD be supported if the Restart-Job operation | ||||
| is supported. | ||||
| 10. Section 4.3.8 - changed "job-state-reasons" from RECOMMENDED | ||||
| to REQUIRED. | ||||
| 11. Section 4.3.8 - clarified the conformance of the values of the | ||||
| "job-state-reasons" attribute by copying conformance | ||||
| requirements from other sections of the document so that it is | ||||
| clear from reading the definition of "job-state-reasons" which | ||||
| values MUST or SHOULD be supported. The 'none', | ||||
| 'unsupported-compression', and 'unsupported-document-format' | ||||
| values MUST be supported. The 'job-hold-until-specified' | ||||
| SHOULD be specified if the "job-hold-until" Job Template is | ||||
| supported. The following values SHOULD be supported: 'job- | ||||
| canceled-by-user', 'aborted-by-system', and 'job-completed- | ||||
| successfully'. The | ||||
| 'job-canceled-by-operator' SHOULD be supported if the | ||||
| implementation permits canceling by other than the job owner. | ||||
| The 'job-canceled-at-device' SHOULD be supported if the device | ||||
| supports canceling jobs at the console. The 'job-completed- | ||||
| with-warnings' SHOULD be supported, if the implementation | ||||
| detects warnings. The 'job-completed-with-errors' SHOULD be | ||||
| supported if the implementation detects errors. The 'job- | ||||
| restartable' SHOULD be supported if the Restart-Job operation | ||||
| is supported. | ||||
| 12. Section 4.3.10 - allowed a Printer to localize the "job- | ||||
| detailed-status-message" Job Description attribute, but | ||||
| indicated that such localization might obscure the technical | ||||
| meaning of such messages. | ||||
| 13. Section 4.3.14 - changed the "time-at-creation", "time-at- | ||||
| processing", and "time-at-completed" Event Time Job | ||||
| Description attributes from OPTIONAL to REQUIRED. | ||||
| 14. Section 4.3.14.4 - added the REQUIRED "job-printer-up-time | ||||
| (integer(1:MAX))" Job Description attribute as an alias for | ||||
| "printer-up-time" to reduce number of operations to get job | ||||
| times. | ||||
| 15. Section 4.4.2 - added the REQUIRED "uri-authentication- | ||||
| supported (1setOf type2 keyword)" Printer Description | ||||
| attribute to describe the Client Authentication used by each | ||||
| Printer URI. | ||||
| 16. Section 4.4.12 - changed "printer-state-reasons" Printer | ||||
| Description attribute from OPTIONAL to REQUIRED. | ||||
| 17. Section 4.4.12 - changed 'paused' value of "printer-state- | ||||
| reasons" to MUST if Pause-Printer operation is supported. | ||||
| 18. Section 4.4.14 - added the REQUIRED "ipp-versions-supported | o Section 5.2.6: Origin of media sheet is the top left corner. | |||
| (1setOf keyword)" Printer Description attribute, since IPP/1.1 | ||||
| Printers do not have to support version '1.0' conformance | ||||
| requirements. Section 4.4.16 - added the "multiple-document- | ||||
| jobs-supported (boolean)" Printer Description attribute so | ||||
| that a client can tell whether a Printer that supports | ||||
| Create-Job/Send-Document supports multiple document jobs or | ||||
| not. This attribute is REQUIRED if the Create-Job operation | ||||
| is supported. | ||||
| 19. Section 4.4.24 - changed the "queued-job-count" Printer | ||||
| Description attribute from RECOMMENDED to REQUIRED. | ||||
| 20. Section 4.4.32 - changed "compression-supported (1setOf type3 | ||||
| keyword)" Printer Description attribute from OPTIONAL to | ||||
| REQUIRED. | ||||
| 21. Section 5.1 - changed the client security requirements from | ||||
| RECOMMENDED non-standards track SSL3 to MUST support Client | ||||
| Authentication as defined in the IPP/1.1 Encoding and | ||||
| Transport document [RFC2910]. A client SHOULD support | ||||
| Operation Privacy and Server Authentication as defined in the | ||||
| IPP/1.1 Encoding and Transport document [RFC2910]. | ||||
| 22. Section 5.2.7 - changed the IPP object security requirements | ||||
| from OPTIONAL non-standards track SSL3 to SHOULD contain | ||||
| support for Client Authentication as defined in the IPP/1.1 | ||||
| Encoding and Transport document [RFC2910]. A Printer | ||||
| implementation MAY allow an administrator to configure the | ||||
| Printer so that all, some, or none of the users are | ||||
| authenticated. An IPP Printer implementation SHOULD contain | ||||
| support for Operation Privacy and Server Authentication as | ||||
| defined in the IPP/1.1 Encoding and Transport document | ||||
| [RFC2910]. A Printer implementation MAY allow an | ||||
| administrator to configure the degree of support for Operation | ||||
| Privacy and Server Authentication. Security MUST NOT be | ||||
| compromised when the client supplies a lower version-number in | ||||
| a request. | ||||
| 23. Section 14 (Appendix C): Corrected typo, changing the keyword | ||||
| 'iso-10-white' to 'iso-a10-white'. | ||||
| See also the "IPP/1.1 Encoding and Transport" [RFC2910] document for | E.2. Changes In -08 | |||
| differences between IPP/1.0 [RFC2565] and IPP/1.1 [RFC2910]. | ||||
| 18. Full Copyright Statement | The following changes are in draft-sweet-rfc2911bis-08: | |||
| Copyright (C) The Internet Society (2000). All Rights Reserved. | o Section 2.3.3 (End User): Capitalize defined terms. | |||
| This document and translations of it may be copied and furnished to | o Section 2.3.11 (Supports): Add a final paragraph on naming | |||
| others, and derivative works that comment on or otherwise explain it | conventions for xxx-supported, xxx-default, and xxx-configured. | |||
| or assist in its implementation 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 | o Section 4.1.3 (Attributes): Updated last paragraph to use | |||
| revoked by the Internet Society or its successors or assigns. | normative language (IPP object MUST return an error) | |||
| This document and the information contained herein is provided on an | o Section 4.2.1.2: (Print-Job Response): Reword reference to job- | |||
| "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING | state-reasons attribute. | |||
| 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. | ||||
| Acknowledgement | o Section 5.4.12 (printer-state-reasons): Added RFC 3805 property | |||
| values that correspond to each reason, sorted list. | ||||
| Funding for the RFC Editor function is currently provided by the | o Section 11.1 (Normative References): Fixed title of RFC 7612 | |||
| Internet Society. | reference. | |||
| E.3. Changes In -07 | ||||
| The following changes are in draft-sweet-rfc2911bis-07: | ||||
| o Global: Normalize "end-user" as "End User" (defined term). | ||||
| o Global: Fix capitalization of "xxx-from-operator" and "xxx-by- | ||||
| operator". | ||||
| o Global: Drop "system" in front of "Administrator". | ||||
| o Updated terminology for Administrator, End User, and Operator to | ||||
| include information from RFC 2567 as well as referencing the | ||||
| complete definition in that RFC. | ||||
| o Simplified the definition of "job-state" in the Print-Job | ||||
| response. | ||||
| o Section 5.4.1: Dropped "It MAY contain more than one ..." | ||||
| o Section 5.4.12: "Clients can assume" instead of "all parties | ||||
| SHOULD assume". | ||||
| o Section 6.1: Best practices are for user interfaces. | ||||
| o Section 9.1: Drop "considered" from "are considered illustrative" | ||||
| (they are). | ||||
| o Appendix B: Point to IIG 2.0 for how to display status messages. | ||||
| o Appendix D: Add references to LDAP schema and IPP Everywhere. | ||||
| o | ||||
| E.4. Changes In -06 | ||||
| The following changes are in draft-sweet-rfc2911bis-06: | ||||
| o Global: Changed "malformed" to "malformed". | ||||
| o Global: Make sure all operations are marked OPTIONAL, RECOMMENDED, | ||||
| or REQUIRED. | ||||
| o Global: Fix spelling: "attribure" to "attribute". | ||||
| o Global: Change "See Rule N" to "(note N)" and "Rule N:" to "Note | ||||
| N:". | ||||
| o Global: Change "OPTION N:" to "Option N:". | ||||
| o Global: Change "Sections A and N" to be "Appendix A and | ||||
| Section N". | ||||
| o Global: Change 'job-state-reasons' to "job-state-reasons". | ||||
| o Global: Capitalize "output device" - defined term. | ||||
| o Global: Capitalize "terminating state" and define. | ||||
| o Global: Capitalize "administrator", "end user", and "operator", | ||||
| and define. | ||||
| o Global: Change "defined in this document" to "defined in this | ||||
| document". | ||||
| o Section 1.1: Drop "OPTIONAL" in front of "Notification Service". | ||||
| o Section 2.2: Add reference to PWG 5100.5 for Document definition. | ||||
| o Section 2.3: Fix typo, sort terms, add definitions of | ||||
| Administrator, End User, Job Creation Operation, Operator, and | ||||
| Terminating State. | ||||
| o Section 3.2: Clarify the job-uri is deprecated for Clients. | ||||
| o Section 4: Reword Client operation request. | ||||
| o Section 4.1.2: "in other transport mappings". | ||||
| o Section 4.1.6.2: Reword second paragraph on localization | ||||
| requirements. | ||||
| o Section 4.1.6.3: Reword to make it clear that localization should | ||||
| only be performed when it does not obscure the meaning of the | ||||
| technical information. | ||||
| o Section 4.1.7: Fix typo. | ||||
| o Section 4.1.8: Fix reference to Appendix E. | ||||
| o Section 4.1.9: Fix typos. | ||||
| o Section 4.2.1.1: Clarify document-natural-language, drop "In | ||||
| addition to the REQUIRED parameters". | ||||
| o Section 4.2.1.2: Cleanup. | ||||
| o Section 4.2.2: Discover instead of determine. | ||||
| o Section 4.2.7: Fix typo. | ||||
| o Section 4.2.9: Clarify. | ||||
| o Section 4.3.1: Reword first sentence - Create-Job creates the Job. | ||||
| o Section 4.3.1.1: Reword document-natural-language description. | ||||
| o Section 5.1.4: "Some SNMP MIBs". | ||||
| o Section 5.2: Printers SHOULD support Job Template attributes. | ||||
| o Section 5.2.1: Added table of values. | ||||
| o Section 5.2.6: Reword note about '3' ('none'), add missing period. | ||||
| o Section 5.2.7: Fix typos. | ||||
| o Section 5.2.11: Change "historical" to "legacy", reword. | ||||
| o Section 5.2.12: Missing "the". | ||||
| o Section 5.2.13: Move note above table. | ||||
| o Table 13: Fix order of attributes. | ||||
| o Section 5.3.1: Move after job-id. | ||||
| o Section 5.3.8: "service-offline" should be "service-off-line". | ||||
| o Section 5.3.10: Same changes as section 4.1.6.3. | ||||
| o Section 5.3.12: Drop "or not". | ||||
| o Section 5.3.17.1: Capitalize Document(s), fix typo. | ||||
| o Section 5.3.17.2: Capitalize Document(s), fix typo. | ||||
| o Section 5.3.17.3: RECOMMENDED. | ||||
| o Section 5.3.18: Values. | ||||
| o Section 5.3.18.3: RECOMMENDED. | ||||
| o Section 5.4.1: Reword. | ||||
| o Section 5.4.3: Reword. | ||||
| o Section 5.4.12: Add references to Printer MIB (RFC 3805) and say | ||||
| something about how to interpret the lack of a suffix (not just an | ||||
| error). | ||||
| o Section 5.4.29: Drop extra "job" qualifier. | ||||
| o Section 5.4.30: "In order to be useful" instead of "in order to | ||||
| work." | ||||
| o Section 5.4.32: Fix typos. | ||||
| o Section 6.1: Reword UI conformance requirements (or lack thereof). | ||||
| o Section 7.6: Fix reference and typo. | ||||
| o Section 8: Clarify/reword some requirements. | ||||
| o Section 9.x: Rewording. | ||||
| o Appendix B: Rewording. | ||||
| o Appendix B.1.3: "in this document" (not in IPP/1.1). | ||||
| o Appendix C: Deleted this appendix in its entirety since PWG 5101.1 | ||||
| supersedes it and is already referenced. | ||||
| o Appendix D.3: Rewording, fix typos. | ||||
| o Table 22: Fix (missing cells) | ||||
| E.5. Changes In -05 | ||||
| The following changes are in draft-sweet-rfc2911bis-05: | ||||
| o Global: Drop use of "OPTIONALLY", use MAY instead. | ||||
| o Global: Printers SHOULD return unsupported attributes. | ||||
| o Global: Update use of "need only" to less awkward wording. | ||||
| o Global: Reword all usage of "NOT REQUIRED". | ||||
| o Global: Move notes about deprecation right after the initial | ||||
| description. | ||||
| o Global: type3 -> type2, drop all type3 registration instructions. | ||||
| o Global: Avoid using "object" for Jobs and Printers. | ||||
| o Global: Prefer printer-uri + job-id to target Jobs instead of job- | ||||
| uri. | ||||
| o Global: Don't talk about documents not being IPP objects, since | ||||
| that is covered by PWG 5100.5. | ||||
| o Global: Reword "The Client MAY supply this attribute. The Printer | ||||
| MUST support ..." construct. | ||||
| o Global: Remove use of "MANDATORY". | ||||
| o Global: Do not capitalize Operation in "Operation attribute". | ||||
| o Global: "Client" for IPP Client. | ||||
| o Global: Fix section references. | ||||
| o Global: printer's, job's changed to Printer's, Job's | ||||
| o Global: Optional operations and attributes that are required for | ||||
| IPP Everywhere are now listed as RECOMMENDED. | ||||
| o Section 1: Added short list of PWG IPP specifications. | ||||
| o Section 4.1.6.2: MUST use the language in the request. | ||||
| o Section 4.1.6.3: SHOULD localize message. | ||||
| o Section 4.1.8: SHOULD support all previous standards track | ||||
| versions. | ||||
| o Section 4.1.9: validating the *format* of the Document data. | ||||
| o Section 4.2.9: Make MUST conditional on whether Purge-Jobs is | ||||
| supported. | ||||
| o Section 5.1.9: Reference PWG 5101.1 for media attribute. | ||||
| o Section 5.3.7: Drop "most implementations won't bother with this | ||||
| nuance." | ||||
| o Section 5.3.10: SHOULD localize | ||||
| o Section 5.3.13: SHOULD set | ||||
| o Section 5.3.14: Remove ambiguity about negative time-at-xxx | ||||
| values: only if the Printer knows the exact number of seconds | ||||
| o Section 5.4.11: printer-state updated continuously if RFC 3995 is | ||||
| supported. | ||||
| o Section 5.4.12: Reword "is no longer shutdown" as "is restarted". | ||||
| o Section 5.4.32: Drop Send-URI from list of operations, fix some | ||||
| typos. | ||||
| o Section 6.1: Drop "may omit" paragraph, reference IIG2 instead of | ||||
| using a lot of weasel words about client implementations. | ||||
| o Section 6.3: Drop talk about translation (confusing). | ||||
| o Section 7.1: Drop type3 registrations, use example.com, use | ||||
| reverse-DNS notation as recommendation unless otherwise specified | ||||
| for the keyword. | ||||
| o Section B.*: Drop conformance, move the rest to the beginning. | ||||
| o Added references to the IPP Implementor's Guide 2.0, PWG 5101.1 | ||||
| (MSN2), IPP 2.0, and IPP Everywhere. | ||||
| o Updated PWG 5100.12 reference to current stable draft in formal | ||||
| vote (for full IEEE standard). | ||||
| o Various editorial corrections. | ||||
| E.6. Changes In -04 | ||||
| The following changes are in draft-sweet-rfc2911bis-04: | ||||
| o Removed restart and purge from the abstract. | ||||
| o Eliminated use of confusing ISO "NEED NOT" conformance | ||||
| terminology. | ||||
| o Added DEPRECATED terminology. | ||||
| o Marked Purge-Jobs and Restart-Job as DEPRECATED. | ||||
| o Added reference to PWG 5100.11 (JPS2) for the Resubmit-Job | ||||
| operation (safe replacement for Restart-Job) | ||||
| E.7. Changes In -03 | ||||
| The following changes are in draft-sweet-rfc2911bis-03: | ||||
| o Submission type is now IETF (AD-sponsored), clarify goals. | ||||
| o Also obsolete RFC 3381 per PWG IPP WG | ||||
| o References to RFC 2617 are updated to the updated drafts in the | ||||
| RFC editor's queue | ||||
| o Section 4.1.5: Clarify note at end of section. | ||||
| o Section 4.1.8: Clarify conformance requirements are for IPP/1.1 | ||||
| implementations. | ||||
| o Section 5.4.3: Drop 'ssl3' value, fix examples. | ||||
| o Section 6.2.4: Reword "understand" -> "decode and process" | ||||
| o References: Drop SSL reference. | ||||
| o Global: Don't use SSL3 in examples, use TLS | ||||
| o Global: Client, Printer, and Job are defined terms, capitalize | ||||
| o Global: Fix lots of uses of "may" (conformance term) | ||||
| E.8. Changes In -02 | ||||
| The following changes are in draft-sweet-rfc2911bis-02: | ||||
| o Section 1: Dropped RFC 3381 reference since we are obsoleting it. | ||||
| o Section 4.1.5: Added reference to IPP and IPPS URI scheme RFCs. | ||||
| o Section 4.1.8: Added references to RFC 3510 and 7472 which define | ||||
| the IPP and IPPS URI schemes and port number. | ||||
| o Added section listing major changes since RFC 2911. | ||||
| o Fix all "it is recommended" passive voice conformance | ||||
| requirements. | ||||
| E.9. Changes In -01 | ||||
| The following changes are in draft-sweet-rfc2911bis-01: | ||||
| o Errata ID 364: Fix range of "redirection" status codes (to 0x03xx) | ||||
| o Errata ID 694: Fix range of vendor status codes (0x0n80 to 0x0nff) | ||||
| o Errata ID 3072: Reword multiple-document-handling definition since | ||||
| it also applies to single document Jobs and is the only | ||||
| interoperable way to request uncollated copies. | ||||
| o Errata ID 3365: Fix bad nameWithLanguage maximum length - | ||||
| reference nameWithoutLanguage section for length | ||||
| o Errata ID 4173: Fix range of vendor operation codes (0x4000 to | ||||
| 0x7fff) | ||||
| o Updated obsoleted RFC references | ||||
| o Change IPP-IIG reference to RFC 3196 | ||||
| o Updated Create-Job, Send-Document, and Send-URI to RECOMMENDED. | ||||
| Authors' Addresses | ||||
| Michael Sweet | ||||
| Apple Inc. | ||||
| 1 Infinite Loop | ||||
| MS 111-HOMC | ||||
| Cupertino, CA 95014 | ||||
| US | ||||
| Email: msweet@apple.com | ||||
| Ira McDonald | ||||
| High North, Inc. | ||||
| PO Box 221 | ||||
| Grand Marais, MI 49839 | ||||
| US | ||||
| Phone: +1 906-494-2434 | ||||
| Email: blueroofmusic@gmail.com | ||||
| End of changes. 1519 change blocks. | ||||
| 7535 lines changed or deleted | 7001 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||