draft-ietf-ipp-model-v11-01.txt   draft-ietf-ipp-model-v11-02.txt 
INTERNET-DRAFT INTERNET-DRAFT
draft-ietf-ipp-model-v11-01.txt draft-ietf-ipp-model-v11-02.txt
R. deBry R. deBry
IBM Corporation Utah Valley State College
T. Hastings (editor) T. Hastings (editor)
Xerox Corporation Xerox Corporation
R. Herriot R. Herriot
Xerox Corporation Xerox Corporation
S. Isaacson S. Isaacson
Novell, Inc. Novell, Inc.
P. Powell P. Powell
Astart Technologies Astart Technologies
February 17, 1998 May 10, 1998
Internet Printing Protocol/1.1: Model and Semantics Internet Printing Protocol/1.1: Model and Semantics
Copyright (C) The Internet Society (1999). All Rights Reserved. Copyright (C) The Internet Society (1999). All Rights Reserved.
Status of this Memo Status of this Memo
This document is an Internet-Draft and is in full conformance with all This document is an Internet-Draft and is in full conformance with all
provisions of Section 10 of [RFC2026]. Internet-Drafts are working provisions of Section 10 of [RFC2026]. Internet-Drafts are working
documents of the Internet Engineering Task Force (IETF), its areas, and documents of the Internet Engineering Task Force (IETF), its areas, and
skipping to change at page 1, line 56 skipping to change at page 2, line 5
simplified model consisting of abstract objects, their attributes, and simplified model consisting of abstract objects, their attributes, and
their operations that is independent of encoding and transport. The their operations that is independent of encoding and transport. The
model consists of a Printer and a Job object. A Job optionally supports model consists of a Printer and a Job object. A Job optionally supports
multiple documents. IPP 1.1 semantics allow end-users and operators to multiple documents. IPP 1.1 semantics allow end-users and operators to
query printer capabilities, submit print jobs, inquire about the status query printer capabilities, submit print jobs, inquire about the status
of print jobs and printers, cancel, hold, release, and restart print of print jobs and printers, cancel, hold, release, and restart print
jobs. IPP 1.1 semantics allow operators to pause, resume, and purge jobs. IPP 1.1 semantics allow operators to pause, resume, and purge
(jobs from) Printer objects. This document also addresses security, (jobs from) Printer objects. This document also addresses security,
internationalization, and directory issues. internationalization, and directory issues.
Expires November 10, 1999
The full set of IPP documents includes: The full set of IPP documents includes:
Expires August 17, 1999 Design Goals for an Internet Printing Protocol [RFC2567]
Design Goals for an Internet Printing Protocol [IPP-REQ]
Rationale for the Structure and Model and Protocol for the Internet Rationale for the Structure and Model and Protocol for the Internet
Printing Protocol [IPP-RAT] Printing Protocol [RFC2568]
Internet Printing Protocol/1.1: Model and Semantics (this document) Internet Printing Protocol/1.1: Model and Semantics (this document)
Internet Printing Protocol/1.1: Encoding and Transport [IPP-PRO] Internet Printing Protocol/1.1: Encoding and Transport [IPP-PRO]
Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG] Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG]
Mapping between LPD and IPP Protocols [IPP LPD] Mapping between LPD and IPP Protocols [RFC2569]
The "Design Goals for an Internet Printing Protocol" document takes a The "Design Goals for an Internet Printing Protocol" document takes a
broad look at distributed printing functionality, and it enumerates broad look at distributed printing functionality, and it enumerates
real-life scenarios that help to clarify the features that need to be real-life scenarios that help to clarify the features that need to be
included in a printing protocol for the Internet. It identifies included in a printing protocol for the Internet. It identifies
requirements for three types of users: end users, operators, and requirements for three types of users: end users, operators, and
administrators. It calls out a subset of end user requirements that are administrators. It calls out a subset of end user requirements that are
satisfied in IPP/1.0. Operator and administrator requirements are out satisfied in IPP/1.0. Operator and administrator requirements are out
of scope for version 1.0. A few OPTIONAL operator operations have been of scope for version 1.0. A few OPTIONAL operator operations have been
added to IPP/1.1. added to IPP/1.1.
skipping to change at page 2, line 35 skipping to change at page 2, line 38
Printing Protocol" document describes IPP from a high level view, Printing Protocol" document describes IPP from a high level view,
defines a roadmap for the various documents that form the suite of IPP defines a roadmap for the various documents that form the suite of IPP
specifications, and gives background and rationale for the IETF working specifications, and gives background and rationale for the IETF working
group's major decisions. group's major decisions.
The "Internet Printing Protocol/1.1: Encoding and Transport" document is The "Internet Printing Protocol/1.1: Encoding and Transport" document is
a formal mapping of the abstract operations and attributes defined in a formal mapping of the abstract operations and attributes defined in
the model document onto HTTP/1.1. It defines the encoding rules for a the model document onto HTTP/1.1. It defines the encoding rules for a
new Internet MIME media type called "application/ipp". This document new Internet MIME media type called "application/ipp". This document
also defines the rules for transporting over HTTP a message body whose also defines the rules for transporting over HTTP a message body whose
Content-Type is .application/ipp.. This document defines a new scheme Content-Type is "application/ipp". This document defines a new scheme
named .ipp. for identifying IPP printers and jobs. Finally, this named 'ipp' for identifying IPP printers and jobs. Finally, this
document defines rules for supporting IPP/1.0 clients. document defines interoperability rules for supporting IPP/1.0 clients.
Issue 33
The "Internet Printing Protocol/1.1: Implementer's Guide" document gives The "Internet Printing Protocol/1.1: Implementer's Guide" document gives
insight and advice to implementers of IPP clients and IPP objects. It insight and advice to implementers of IPP clients and IPP objects. It
is intended to help them understand IPP/1.1 and some of the is intended to help them understand IPP/1.1 and some of the
considerations that may assist them in the design of their client and/or considerations that may assist them in the design of their client and/or
IPP object implementations. For example, a typical order of processing IPP object implementations. For example, a typical order of processing
requests is given, including error checking. Motivation for some of the requests is given, including error checking. Motivation for some of the
specification decisions is also included. specification decisions is also included.
The "Mapping between LPD and IPP Protocols" document gives some advice The "Mapping between LPD and IPP Protocols" document gives some advice
to implementers of gateways between IPP and LPD (Line Printer Daemon) to implementers of gateways between IPP and LPD (Line Printer Daemon)
implementations. implementations.
Expires August 17, 1999 Expires November 10, 1999
Table of Contents Table of Contents
1. Introduction.....................................................9 1. Introduction.....................................................9
1.1 Simplified Printing Model.....................................10 1.1 Simplified Printing Model.....................................10
2. IPP Objects.....................................................12 2. IPP Objects.....................................................12
2.1 Printer Object................................................13 2.1 Printer Object................................................13
2.2 Job Object....................................................14 2.2 Job Object....................................................15
2.3 Object Relationships..........................................15 2.3 Object Relationships..........................................16
2.4 Object Identity...............................................16 2.4 Object Identity...............................................17
3. IPP Operations..................................................18 3. IPP Operations..................................................19
3.1 Common Semantics..............................................19 3.1 Common Semantics..............................................20
3.1.1 Required Parameters........................................19 3.1.1 Required Parameters........................................20
3.1.2 Operation IDs and Request IDs..............................20 3.1.2 Operation IDs and Request IDs..............................21
3.1.3 Attributes.................................................20 3.1.3 Attributes.................................................21
3.1.4 Character Set and Natural Language Operation Attributes....22 3.1.4 Character Set and Natural Language Operation Attributes....23
3.1.4.1 Request Operation Attributes..........................22 3.1.4.1 Request Operation Attributes..........................23
3.1.4.2 Response Operation Attributes.........................26 3.1.4.2 Response Operation Attributes.........................27
3.1.5 Operation Targets..........................................27 3.1.5 Operation Targets..........................................28
3.1.6 Operation Status Codes and Messages........................28 3.1.6 Operation Status Codes and Messages........................29
3.1.7 Versions...................................................29 3.1.7 Unsupported Attributes.....................................30
3.1.8 Job Creation Operations....................................30 3.1.8 Versions...................................................31
3.2 Printer Operations............................................32 3.1.9 Job Creation Operations....................................33
3.2.1 Print-Job Operation........................................32 3.2 Printer Operations............................................35
3.2.1.1 Print-Job Request.....................................32 3.2.1 Print-Job Operation........................................35
3.2.1.2 Print-Job Response....................................36 3.2.1.1 Print-Job Request.....................................35
3.2.2 Print-URI Operation........................................39 3.2.1.2 Print-Job Response....................................39
3.2.3 Validate-Job Operation.....................................39 3.2.2 Print-URI Operation........................................41
3.2.4 Create-Job Operation.......................................39 3.2.3 Validate-Job Operation.....................................42
3.2.5 Get-Printer-Attributes Operation...........................40 3.2.4 Create-Job Operation.......................................42
3.2.5.1 Get-Printer-Attributes Request........................40 3.2.5 Get-Printer-Attributes Operation...........................43
3.2.5.2 Get-Printer-Attributes Response.......................42 3.2.5.1 Get-Printer-Attributes Request........................43
3.2.6 Get-Jobs Operation.........................................43 3.2.5.2 Get-Printer-Attributes Response.......................45
3.2.6.1 Get-Jobs Request......................................43 3.2.6 Get-Jobs Operation.........................................46
3.2.6.2 Get-Jobs Response.....................................45 3.2.6.1 Get-Jobs Request......................................46
3.2.7 Pause-Printer Operation....................................46 3.2.6.2 Get-Jobs Response.....................................48
3.2.7.1 Pause-Printer Request.................................47 3.2.7 Pause-Printer Operation....................................49
3.2.7.2 Pause-Printer Response................................48 3.2.7.1 Pause-Printer Request.................................50
3.2.8 Resume-Printer Operation...................................48 3.2.7.2 Pause-Printer Response................................51
3.2.9 Purge-Jobs Operation.......................................49 3.2.8 Resume-Printer Operation...................................51
3.3 Job Operations................................................49 3.2.9 Purge-Jobs Operation.......................................52
3.3.1 Send-Document Operation....................................50 3.3 Job Operations................................................52
3.3.1.1 Send-Document Request.................................51 3.3.1 Send-Document Operation....................................53
3.3.1.2 Send-Document Response................................52 3.3.1.1 Send-Document Request.................................54
3.3.2 Send-URI Operation.........................................53 3.3.1.2 Send-Document Response................................55
3.3.3 Cancel-Job Operation.......................................53 3.3.2 Send-URI Operation.........................................56
3.3.3.1 Cancel-Job Request....................................53 3.3.3 Cancel-Job Operation.......................................56
3.3.3.2 Cancel-Job Response...................................54 3.3.3.1 Cancel-Job Request....................................57
3.3.4 Get-Job-Attributes Operation...............................55 3.3.3.2 Cancel-Job Response...................................57
3.3.4.1 Get-Job-Attributes Request............................55 3.3.4 Get-Job-Attributes Operation...............................58
3.3.4.2 Get-Job-Attributes Response...........................56 3.3.4.1 Get-Job-Attributes Request............................59
3.3.5 Hold-Job Operation.........................................57 3.3.4.2 Get-Job-Attributes Response...........................59
3.3.5 Hold-Job Operation.........................................60
Expires August 17, 1999 Expires November 10, 1999
3.3.5.1 Hold-Job Request......................................58 3.3.5.1 Hold-Job Request......................................61
3.3.5.2 Hold-Job Response.....................................59 3.3.5.2 Hold-Job Response.....................................62
3.3.6 Release-Job Operation......................................59 3.3.6 Release-Job Operation......................................62
3.3.7 Restart-Job Operation......................................60 3.3.7 Restart-Job Operation......................................63
3.3.7.1 Restart-Job Request...................................61 3.3.7.1 Restart-Job Request...................................64
3.3.7.2 Restart-Job Response..................................62 3.3.7.2 Restart-Job Response..................................65
4. Object Attributes...............................................62 4. Object Attributes...............................................65
4.1 Attribute Syntaxes............................................62 4.1 Attribute Syntaxes............................................66
4.1.1 'text'.....................................................63 4.1.1 'text'.....................................................67
4.1.1.1 'textWithoutLanguage'.................................64 4.1.1.1 'textWithoutLanguage'.................................67
4.1.1.2 'textWithLanguage'....................................64 4.1.1.2 'textWithLanguage'....................................68
4.1.2 'name'.....................................................65 4.1.2 'name'.....................................................68
4.1.2.1 'nameWithoutLanguage'.................................66 4.1.2.1 'nameWithoutLanguage'.................................69
4.1.2.2 'nameWithLanguage'....................................66 4.1.2.2 'nameWithLanguage'....................................69
4.1.2.3 Matching 'name' attribute values......................66 4.1.2.3 Matching 'name' attribute values......................69
4.1.3 'keyword'..................................................67 4.1.3 'keyword'..................................................70
4.1.4 'enum'.....................................................67 4.1.4 'enum'.....................................................71
4.1.5 'uri'......................................................68 4.1.5 'uri'......................................................71
4.1.6 'uriScheme'................................................68 4.1.6 'uriScheme'................................................71
4.1.7 'charset'..................................................69 4.1.7 'charset'..................................................72
4.1.8 'naturalLanguage'..........................................69 4.1.8 'naturalLanguage'..........................................72
4.1.9 'mimeMediaType'............................................70 4.1.9 'mimeMediaType'............................................73
4.1.10 'octetString'.........................................71 4.1.9.1 Application/octet-stream -- Auto-Sensing the document
4.1.11 'boolean'.............................................71 format 73
4.1.12 'integer'.............................................71 4.1.10................................................'octetString'74
4.1.13 'rangeOfInteger'......................................71 4.1.11....................................................'boolean'74
4.1.14 'dateTime'............................................72 4.1.12....................................................'integer'75
4.1.15 'resolution'..........................................72 4.1.13.............................................'rangeOfInteger'75
4.1.16 '1setOf X'...........................................72 4.1.14...................................................'dateTime'75
4.2 Job Template Attributes.......................................72 4.1.15.................................................'resolution'75
4.2.1 job-priority (integer(1:100))..............................76 4.1.16..................................................'1setOf X'75
4.2.2 job-hold-until (type3 keyword | name (MAX))................77 4.2 Job Template Attributes.......................................76
4.2.3 job-sheets (type3 keyword | name(MAX)).....................77 4.2.1 job-priority (integer(1:100))..............................79
4.2.4 multiple-document-handling (type2 keyword).................78 4.2.2 job-hold-until (type3 keyword | name (MAX))................80
4.2.5 copies (integer(1:MAX))....................................79 4.2.3 job-sheets (type3 keyword | name(MAX)).....................80
4.2.6 finishings (1setOf type2 enum).............................79 4.2.4 multiple-document-handling (type2 keyword).................81
4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX))................81 4.2.5 copies (integer(1:MAX))....................................82
4.2.8 sides (type2 keyword)......................................82 4.2.6 finishings (1setOf type2 enum).............................82
4.2.9 number-up (integer(1:MAX)).................................83 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX))................84
4.2.10 orientation-requested (type2 enum)....................83 4.2.8 sides (type2 keyword)......................................85
4.2.11 media (type3 keyword | name(MAX)).....................84 4.2.9 number-up (integer(1:MAX)).................................86
4.2.12 printer-resolution (resolution).......................85 4.2.10...........................orientation-requested (type2 enum)86
4.2.13 print-quality (type2 enum)............................85 4.2.11............................media (type3 keyword | name(MAX))87
4.3 Job Description Attributes....................................86 4.2.12..............................printer-resolution (resolution)88
4.3.1 job-uri (uri)..............................................88 4.2.13...................................print-quality (type2 enum)88
4.3.2 job-id (integer(1:MAX))....................................88 4.3 Job Description Attributes....................................88
4.3.3 job-printer-uri (uri)......................................88 4.3.1 job-uri (uri)..............................................90
4.3.4 job-more-info (uri)........................................89 4.3.2 job-id (integer(1:MAX))....................................90
4.3.5 job-name (name(MAX)).......................................89 4.3.3 job-printer-uri (uri)......................................90
4.3.6 job-originating-user-name (name(MAX))......................89 4.3.4 job-more-info (uri)........................................90
4.3.7 job-state (type1 enum).....................................89 4.3.5 job-name (name(MAX)).......................................91
4.3.7.1 Partitioning of Job States............................92 4.3.6 job-originating-user-name (name(MAX))......................91
4.3.8 job-state-reasons (1setOf type2 keyword)..................93 4.3.7 job-state (type1 enum).....................................91
4.3.7.1 Partitioning of Job States............................94
Expires August 17, 1999 Expires November 10, 1999
4.3.9 job-state-message (text(MAX))..............................95 4.3.8 job-state-reasons (1setOf type2 keyword)..................95
4.3.10 number-of-documents (integer(0:MAX))..................95 4.3.9 job-state-message (text(MAX))..............................98
4.3.11 output-device-assigned (name(127))....................96 4.3.10.........................number-of-documents (integer(0:MAX))98
4.3.12 time-at-creation (integer(0:MAX)).....................96 4.3.11...........................output-device-assigned (name(127))98
4.3.13 time-at-processing (integer(0:MAX))...................96 4.3.12..............Event Time Job Description Attributes Issue 1799
4.3.14 time-at-completed (integer(0:MAX))....................96 4.3.12.1 time-at-creation (integer(MIN:MAX) | dateTime)........99
4.3.15 number-of-intervening-jobs (integer(0:MAX))...........96 4.3.12.2 time-at-processing (integer(MIN:MAX) | dateTime)......99
4.3.16 job-message-from-operator (text(127)).................96 4.3.12.3 time-at-completed (integer(MIN:MAX) | dateTime)......100
4.3.17 job-k-octets (integer(0:MAX)).........................97 4.3.12.4 job-printer-up-time (integer(1:MAX)) Issue 17........100
4.3.18 job-impressions (integer(0:MAX))......................97 4.3.13..................number-of-intervening-jobs (integer(0:MAX))100
4.3.19 job-media-sheets (integer(0:MAX)).....................98 4.3.14........................job-message-from-operator (text(127))100
4.3.20 job-k-octets-processed (integer(0:MAX))...............98 4.3.15..........................................Job Size Attributes100
4.3.21 job-impressions-completed (integer(0:MAX))............98 4.3.15.1 job-k-octets (integer(0:MAX))........................101
4.3.22 job-media-sheets-completed (integer(0:MAX))...........99 4.3.15.2 job-impressions (integer(0:MAX)).....................101
4.3.23 attributes-charset (charset)..........................99 4.3.15.3 job-media-sheets (integer(0:MAX))....................101
4.3.24 attributes-natural-language (naturalLanguage).........99 4.3.16......................................Job Progress Attributes102
4.4 Printer Description Attributes................................99 4.3.16.1 job-k-octets-processed (integer(0:MAX))..............102
4.4.1 printer-uri-supported (1setOf uri)........................101 4.3.16.2 job-impressions-completed (integer(0:MAX))...........102
4.4.2 uri-security-supported (1setOf type2 keyword).............101 4.3.16.3 job-media-sheets-completed (integer(0:MAX))..........102
4.4.3 printer-name (name(127))..................................102 4.3.17.................................attributes-charset (charset)102
4.4.4 printer-location (text(127))..............................103 4.3.18................attributes-natural-language (naturalLanguage)103
4.4.5 printer-info (text(127))..................................103 4.4 Printer Description Attributes...............................103
4.4.6 printer-more-info (uri)...................................103 4.4.1 printer-uri-supported (1setOf uri)........................105
4.4.7 printer-driver-installer (uri)............................103 4.4.2 uri-authentication-supported (1setOf type2 keyword) Issue 2105
4.4.8 printer-make-and-model (text(127))........................103 4.4.3 uri-security-supported (1setOf type2 keyword).............106
4.4.9 printer-more-info-manufacturer (uri)......................103 4.4.4 printer-name (name(127))..................................108
4.4.10 printer-state (type1 enum)...........................104 4.4.5 printer-location (text(127))..............................108
4.4.11 printer-state-reasons (1setOf type2 keyword).........105 4.4.6 printer-info (text(127))..................................108
4.4.12 printer-state-message (text(MAX))....................107 4.4.7 printer-more-info (uri)...................................108
4.4.13 operations-supported (1setOf type2 enum).............107 4.4.8 printer-driver-installer (uri)............................108
4.4.14 charset-configured (charset).........................108 4.4.9 printer-make-and-model (text(127))........................108
4.4.15 charset-supported (1setOf charset)...................108 4.4.10.........................printer-more-info-manufacturer (uri)108
4.4.16 natural-language-configured (naturalLanguage)........109 4.4.11...................................printer-state (type1 enum)109
4.4.17 generated-natural-language-supported (1setOf 4.4.12.................printer-state-reasons (1setOf type2 keyword)110
naturalLanguage)................................................109 4.4.13............................printer-state-message (text(MAX))113
4.4.18 document-format-default (mimeMediaType)..............109 4.4.14......ipp-versions-supported (1setOf type2 keyword) Issue 36113
4.4.19 document-format-supported (1setOf mimeMediaType).....110 4.4.15.....................operations-supported (1setOf type2 enum)113
4.4.20 printer-is-accepting-jobs (boolean)..................110 4.4.16.........multiple-document-jobs-supported (boolean) Issue 34114
4.4.21 queued-job-count (integer(0:MAX))....................110 4.4.17.................................charset-configured (charset)114
4.4.22 printer-message-from-operator (text(127))............110 4.4.18...........................charset-supported (1setOf charset)114
4.4.23 color-supported (boolean)............................110 4.4.19................natural-language-configured (naturalLanguage)115
4.4.24 reference-uri-schemes-supported (1setOf uriScheme)...110 4.4.20generated-natural-language-supported (1setOf naturalLanguage)115
4.4.25 pdl-override-supported (type2 keyword)...............111 4.4.21......................document-format-default (mimeMediaType)115
4.4.26 printer-up-time (integer(1:MAX)).....................111 4.4.22.............document-format-supported (1setOf mimeMediaType)116
4.4.27 printer-current-time (dateTime)......................112 4.4.23..........................printer-is-accepting-jobs (boolean)116
4.4.28 multiple-operation-time-out (integer(1:MAX)).........112 4.4.24............................queued-job-count (integer(0:MAX))116
4.4.29 compression-supported (1setOf type3 keyword).........112 4.4.25....................printer-message-from-operator (text(127))116
4.4.30 job-k-octets-supported (rangeOfInteger(0:MAX)).......112 4.4.26....................................color-supported (boolean)116
4.4.31 job-impressions-supported (rangeOfInteger(0:MAX))....113 4.4.27...........reference-uri-schemes-supported (1setOf uriScheme)116
4.4.32 job-media-sheets-supported (rangeOfInteger(0:MAX))...113 4.4.28.......................pdl-override-supported (type2 keyword)117
4.4.33 pages-per-minute (integer(0:MAX))....................113 4.4.29.............................printer-up-time (integer(1:MAX))117
4.4.34 pages-per-minute-color (integer(0:MAX))..............113 4.4.30..............................printer-current-time (dateTime)118
4.4.31.................multiple-operation-time-out (integer(1:MAX))118
4.4.32.................compression-supported (1setOf type3 keyword)118
4.4.33...............job-k-octets-supported (rangeOfInteger(0:MAX))119
5. Conformance....................................................114 Expires November 10, 1999
4.4.34............job-impressions-supported (rangeOfInteger(0:MAX))119
4.4.35...........job-media-sheets-supported (rangeOfInteger(0:MAX))119
4.4.36............................pages-per-minute (integer(0:MAX))119
4.4.37......................pages-per-minute-color (integer(0:MAX))119
Expires August 17, 1999 5. Conformance....................................................120
5.1 Client Conformance Requirements..............................114 5.1 Client Conformance Requirements..............................120
5.2 IPP Object Conformance Requirements..........................115 5.2 IPP Object Conformance Requirements..........................121
5.2.1 Objects...................................................115 5.2.1 Objects...................................................122
5.2.2 Operations................................................115 5.2.2 Operations................................................122
5.2.3 IPP Object Attributes.....................................116 5.2.3 IPP Object Attributes.....................................123
5.2.4 Versions..................................................107 5.2.4 Versions..................................................123
5.2.5 Extensions................................................116 5.2.5 Extensions................................................123
5.2.6 Attribute Syntaxes........................................116 5.2.6 Attribute Syntaxes........................................123
5.3 Charset and Natural Language Requirements....................116 5.2.7 Security Issue 32.........................................123
5.4 Security Conformance Requirements............................117 5.3 Charset and Natural Language Requirements....................124
6. IANA Considerations (registered and private extensions)........117 6. IANA Considerations (registered and private extensions)........124
6.1 Typed 'keyword' and 'enum' Extensions........................118 6.1 Typed 'keyword' and 'enum' Extensions........................125
6.2 Attribute Extensibility......................................120 6.2 Attribute Extensibility......................................126
6.3 Attribute Syntax Extensibility...............................120 6.3 Attribute Syntax Extensibility...............................127
6.4 Operation Extensibility......................................121 6.4 Operation Extensibility......................................127
6.5 Attribute Groups.............................................121 6.5 Attribute Groups.............................................128
6.6 Status Code Extensibility....................................121 6.6 Status Code Extensibility....................................128
6.7 Registration of MIME types/sub-types for document-formats....122 6.7 Registration of MIME types/sub-types for document-formats....129
6.8 Registration of charsets for use in 'charset' attribute values122 6.8 Registration of charsets for use in 'charset' attribute values129
7. Internationalization Considerations............................122 7. Internationalization Considerations............................129
8. Security Considerations........................................125 8. Security Considerations........................................132
8.1 Security Scenarios...........................................126 8.1 Security Scenarios...........................................133
8.1.1 Client and Server in the Same Security Domain.............126 8.1.1 Client and Server in the Same Security Domain.............133
8.1.2 Client and Server in Different Security Domains...........127 8.1.2 Client and Server in Different Security Domains...........133
8.1.3 Print by Reference........................................127 8.1.3 Print by Reference........................................133
8.2 URIs for TLS and non-TLS Access..............................127 8.2 URIs in Operation, Job, and Printer attributes...............134
8.3 The "requesting-user-name" (name(MAX)) Operation Attribute...127 8.3 URIs for each authentication mechanisms......................134
8.4 Restricted Queries...........................................129 8.4 Restricted Queries...........................................135
8.5 Operations performed by operators and system administrators..129 8.5 Operations performed by operators and system administrators..135
8.6 Queries on jobs submitted using non-IPP protocols............129 8.6 Queries on jobs submitted using non-IPP protocols............135
8.7 IPP Security Application Profile for TLS.....................130
9. References.....................................................130 9. References.....................................................136
10.Notices.......................................................134 10.Author's Address..............................................139
11.Author's Address..............................................135 11.Formats for IPP Registration Proposals........................142
11.1.....................Type2 keyword attribute values registration
142
11.2.....................Type3 keyword attribute values registration
142
11.3........................Type2 enum attribute values registration
142
11.4........................Type3 enum attribute values registration
143
11.5..........................................Attribute registration
143
12.Formats for IPP Registration Proposals........................137 Expires November 10, 1999
12.1.....................Type2 keyword attribute values registration 11.6...................................Attribute Syntax registration
137 143
12.2.....................Type3 keyword attribute values registration 11.7..........................................Operation registration
137 144
12.3........................Type2 enum attribute values registration 11.8....................................Attribute Group registration
137 144
12.4........................Type3 enum attribute values registration 11.9........................................Status code registration
138 144
12.5..........................................Attribute registration
138
12.6...................................Attribute Syntax registration
139
Expires August 17, 1999 12.APPENDIX A: Terminology.......................................145
12.7..........................................Operation registration 12.1.........................................Conformance Terminology
139 145
12.8....................................Attribute Group registration 12.1.1.....................................................NEED NOT145
139 12.2...............................................Model Terminology
12.9........................................Status code registration 145
140 12.2.1......................................................Keyword145
12.2.2...................................................Attributes145
12.2.2.1 Attribute Name.......................................146
12.2.2.2 Attribute Group Name.................................146
12.2.2.3 Attribute Value......................................146
12.2.2.4 Attribute Syntax.....................................146
12.2.3.....................................................Supports146
12.2.4............................................print-stream page148
12.2.5...................................................impression148
13.APPENDIX A: Terminology.......................................140 13.APPENDIX B: Status Codes and Suggested Status Code Messages..148
13.1.........................................Conformance Terminology 13.1....................................................Status Codes
140 149
13.1.1 NEED NOT.............................................140 13.1.1................................................Informational149
13.2...............................................Model Terminology 13.1.2......................................Successful Status Codes150
140 13.1.2.1 successful-ok (0x0000)...............................150
13.2.1 Keyword..............................................140 13.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001)150
13.2.2 Attributes...........................................140 13.1.2.3 successful-ok-conflicting-attributes (0x0002)........150
13.2.2.1 Attribute Name.......................................141 13.1.3.....................................Redirection Status Codes150
13.2.2.2 Attribute Group Name.................................141 13.1.4....................................Client Error Status Codes151
13.2.2.3 Attribute Value......................................141 13.1.4.1 client-error-bad-request (0x0400)....................151
13.2.2.4 Attribute Syntax.....................................141 13.1.4.2 client-error-forbidden (0x0401)......................151
13.2.3 Supports.............................................141 13.1.4.3 client-error-not-authenticated (0x0402)..............151
13.2.4 print-stream page....................................143 13.1.4.4 client-error-not-authorized (0x0403).................151
13.2.5 impression...........................................143 13.1.4.5 client-error-not-possible (0x0404)...................151
13.1.4.6 client-error-timeout (0x0405)........................152
13.1.4.7 client-error-not-found (0x0406)......................152
13.1.4.8 client-error-gone (0x0407)...........................152
13.1.4.9 client-error-request-entity-too-large (0x0408).......152
13.1.4.10client-error-request-value-too-long (0x0409).........153
13.1.4.11client-error-document-format-not-supported (0x040A)..153
13.1.4.12client-error-attributes-or-values-not-supported (0x040B)153
13.1.4.13client-error-uri-scheme-not-supported (0x040C).......154
13.1.4.14client-error-charset-not-supported (0x040D)..........154
13.1.4.15client-error-conflicting-attributes (0x040E).........154
13.1.4.16client-error-compression-not-supported (0x040F) Issue 6154
13.1.4.17client-error-compression-error (0x0410) Issue 6.....154
13.1.4.18client-error-document-format-error (0x0411) Issue 28155
13.1.4.19client-error-document-access-error (0x0412) Issue 35155
13.1.5....................................Server Error Status Codes155
14.APPENDIX B: Status Codes and Suggested Status Code Messages..143 Expires November 10, 1999
14.1....................................................Status Codes 13.1.5.1 server-error-internal-error (0x0500).................155
144 13.1.5.2 server-error-operation-not-supported (0x0501)........155
14.1.1 Informational........................................145 13.1.5.3 server-error-service-unavailable (0x0502)............155
14.1.2 Successful Status Codes..............................145 13.1.5.4 server-error-version-not-supported (0x0503)..........156
14.1.2.1 successful-ok (0x0000)...............................145 13.1.5.5 server-error-device-error (0x0504)...................156
14.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001)145 13.1.5.6 server-error-temporary-error (0x0505)................156
14.1.2.3 successful-ok-conflicting-attributes (0x0002)........145 13.1.5.7 server-error-not-accepting-jobs (0x0506).............157
14.1.3 Redirection Status Codes.............................146 13.1.5.8 server-error-busy (0x0507)...........................157
14.1.4 Client Error Status Codes............................146 13.1.5.9 server-error-job-canceled (0x0508)...................157
14.1.4.1 client-error-bad-request (0x0400)....................146 13.1.5.10server-error-multiple-document-jobs-not-supported (0x0509)
14.1.4.2 client-error-forbidden (0x0401)......................146 Issue 34 157
14.1.4.3 client-error-not-authenticated (0x0402)..............146 13.2.................................Status Codes for IPP Operations
14.1.4.4 client-error-not-authorized (0x0403).................146 158
14.1.4.5 client-error-not-possible (0x0404)...................147
14.1.4.6 client-error-timeout (0x0405)........................147
14.1.4.7 client-error-not-found (0x0406)......................147
14.1.4.8 client-error-gone (0x0407)...........................147
14.1.4.9 client-error-request-entity-too-large (0x0408).......148
14.1.4.10client-error-request-value-too-long (0x0409).........148
14.1.4.11client-error-document-format-not-supported (0x040A)..148
14.1.4.12client-error-attributes-or-values-not-supported (0x040B)148
14.1.4.13client-error-uri-scheme-not-supported (0x040C).......149
14.1.4.14client-error-charset-not-supported (0x040D)..........149
14.1.4.15client-error-conflicting-attributes (0x040E).........149
14.1.5 Server Error Status Codes............................149
14.1.5.1 server-error-internal-error (0x0500).................149
14.1.5.2 server-error-operation-not-supported (0x0501)........150
14.1.5.3 server-error-service-unavailable (0x0502)............150
14.1.5.4 server-error-version-not-supported (0x0503)..........150
14.1.5.5 server-error-device-error (0x0504)...................150
Expires August 17, 1999 14.APPENDIX C: "media" keyword values...........................160
14.1.5.6 server-error-temporary-error (0x0505)................151
14.1.5.7 server-error-not-accepting-jobs (0x0506).............151
14.1.5.8 server-error-busy (0x0507)...........................151
14.1.5.9 server-error-job-canceled (0x0508)...................151
14.2.................................Status Codes for IPP Operations
152
15.APPENDIX C: "media" keyword values...........................153 15.APPENDIX D: Processing IPP Attributes.........................164
15.1........................................................Fidelity
164
15.2........................Page Description Language (PDL) Override
165
15.3.......Using Job Template Attributes During Document Processing.
167
16.APPENDIX D: Processing IPP Attributes.........................158 16.APPENDIX E: Generic Directory Schema..........................168
16.1........................................................Fidelity
158
16.2........................Page Description Language (PDL) Override
159
16.3.......Using Job Template Attributes During Document Processing.
161
17.APPENDIX E: Generic Directory Schema..........................162 17.APPENDIX F: Differences between the IPP/1.0 and IPP/1.1 "Model and
Semantics" Specifications.........................................170
18.APPENDIX F: Differences between the IPP/1.0 and IPP/1.1 "Model and 18.Full Copyright Statement......................................174
Semantics" Specifications.........................................164
Expires August 17, 1999 Expires November 10, 1999
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 only on end user technologies. IPP version 1.1 (IPP/1.1) focuses only on end user
functionality. This document is just one of a suite of documents that functionality. This document is just one of a suite of documents that
fully define IPP. The full set of IPP documents includes: fully define IPP. The full set of IPP documents includes:
Design Goals for an Internet Printing Protocol [IPP-REQ] Design Goals for an Internet Printing Protocol [RFC2567]
Rationale for the Structure and Model and Protocol for the Internet Rationale for the Structure and Model and Protocol for the Internet
Printing Protocol [IPP-RAT] Printing Protocol [RFC2568]
Internet Printing Protocol/1.1: Model and Semantics (this document) Internet Printing Protocol/1.1: Model and Semantics (this document)
Internet Printing Protocol/1.1: Encoding and Transport [IPP-PRO] Internet Printing Protocol/1.1: Encoding and Transport [IPP-PRO]
Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG] Internet Printing Protocol/1.1: Implementer's Guide [IPP-IIG]
Mapping between LPD and IPP Protocols [IPP-LPD] Mapping between LPD and IPP Protocols [RFC2569]
Anyone reading these documents for the first time is strongly encouraged Anyone reading these documents for the first time is strongly encouraged
to read the IPP documents in the above order. to read the IPP documents in the above order.
This document is laid out as follows: This document is laid out as follows:
- The rest of Section 1 is an introduction to the IPP simplified - The rest of Section 1 is an introduction to the IPP simplified
model for distributed printing. model for distributed printing.
- Section 2 introduces the object types covered in the model with - Section 2 introduces the object types covered in the model with
their basic behaviors, attributes, and interactions. their basic behaviors, attributes, and interactions.
skipping to change at page 9, line 49 skipping to change at page 9, line 49
considerations, respectively. considerations, respectively.
- Sections 7 - 12 cover the Internationalization and Security - Sections 7 - 12 cover the Internationalization and Security
considerations as well as References, Intellectual Property Notice, considerations as well as References, Intellectual Property Notice,
Copyright Notice, Author contact information, and Formats for Copyright Notice, Author contact information, and Formats for
Registration Proposals. Registration Proposals.
- Sections 13 - 15 are appendices that cover Terminology, Status - Sections 13 - 15 are appendices that cover Terminology, Status
Codes and Messages, and "media" keyword values. Codes and Messages, and "media" keyword values.
Note: This document uses terms such as "attributes", Note: This document uses terms such as "attributes",
"keywords", and "support". These terms have special meaning "keywords", and "support". These terms have special meaning
and are defined in the model terminology section 13.2. and are defined in the model terminology section 12.2.
Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD, Capitalized terms, such as MUST, MUST NOT, REQUIRED, SHOULD,
SHOULD NOT, MAY, NEED NOT, and OPTIONAL, have special meaning SHOULD NOT, MAY, NEED NOT, and OPTIONAL, have special meaning
relating to conformance. These terms are defined in section relating to conformance. These terms are defined in section
13.1 on conformance terminology, most of which is taken from 12.1 on conformance terminology, most of which is taken from
RFC 2119 [RFC2119]. RFC 2119 [RFC2119].
- Section 16 is an appendix that helps to clarify the effects of - Section 16 is an appendix that helps to clarify the effects of
interactions between related attributes and their values. interactions between related attributes and their values.
- Section 17 is an appendix that enumerates the subset of Printer - Section 17 is an appendix that enumerates the subset of Printer
attributes that form a generic directory schema. These attributes attributes that form a generic directory schema. These attributes
are useful when registering a Printer so that a client can find the are useful when registering a Printer so that a client can find the
Printer not just by name, but by filtered searches as well. Printer not just by name, but by filtered searches as well.
Expires August 17, 1999 Expires November 10, 1999
- Section 18 is an appendix summarizing the additions and changes - Section 18 is an appendix summarizing the additions and changes
from the IPP/1.0 "Model and Semantics" specification [IPP-MOD1.0] from the IPP/1.0 "Model and Semantics" specification [RFC2566] to
to make this IPP/1.1 document. make this IPP/1.1 document.
1.1 Simplified Printing Model 1.1 Simplified Printing Model
In order to achieve its goal of realizing a workable printing protocol In order to achieve its goal of realizing a workable printing protocol
for the Internet, the Internet Printing Protocol (IPP) is based on a for the Internet, the Internet Printing Protocol (IPP) is based on a
simplified printing model that abstracts the many components of real simplified printing model that abstracts the many components of real
world printing solutions. The Internet is a distributed computing world printing solutions. The Internet is a distributed computing
environment where requesters of print services (clients, applications, environment where requesters of print services (clients, applications,
printer drivers, etc.) cooperate and interact with print service printer drivers, etc.) cooperate and interact with print service
providers. This model and semantics document describes a simple, providers. This model and semantics document describes a simple,
skipping to change at page 11, line 5 skipping to change at page 11, line 5
Each object type has an associated set of operations (see section 3) and Each object type has an associated set of operations (see section 3) and
attributes (see section 3.3.5). attributes (see section 3.3.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/1.1 model),
there are other components of a print service which are not explicitly there are other components of a print service which are not explicitly
defined in the IPP/1.1 model. The following figure illustrates where defined in the IPP/1.1 model. The following figure illustrates where
IPP/1.1 fits with respect to these other components. IPP/1.1 fits with respect to these other components.
Expires August 17, 1999 Expires November 10, 1999
+--------------+ +--------------+
| Application | | Application |
o +. . . . . . . | o +. . . . . . . |
\|/ | Spooler | \|/ | Spooler |
/ \ +. . . . . . . | +---------+ / \ +. . . . . . . | +---------+
End-User | Print Driver |---| File | End-User | Print Driver |---| File |
+-----------+ +-----+ +------+-------+ +----+----+ +-----------+ +-----+ +------+-------+ +----+----+
| Browser | | GUI | | | | Browser | | GUI | | |
+-----+-----+ +--+--+ | | +-----+-----+ +--+--+ | |
| | | | | | | |
skipping to change at page 11, line 41 skipping to change at page 11, line 41
| --+ | --+
+-----------------+ +-----------------+
| Output Device(s)| | Output Device(s)|
+-----------------+ +-----------------+
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. Printer objects are optionally registered as entries in a
directory where end users find and select them based on some sort of directory where end users find and select them based on some sort of
filtered and context based searching mechanism (see section 17). The filtered and context based searching mechanism (see section 16). 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 match Printer, allowing end users to search for and find Printers that match
their search criteria, for example: name, context, printer capabilities, their search criteria, for example: name, context, printer capabilities,
etc. The more dynamic information, such as state, currently loaded and etc. The more dynamic information, such as state, currently loaded and
ready media, number of jobs at the Printer, errors, warnings, and so ready media, number of jobs at the Printer, errors, warnings, and so
forth, is directly associated with the Printer object itself rather than forth, is directly associated with the Printer object itself rather than
with the entry in the directory which only represents the Printer with the entry in the directory which only represents the Printer
object. object.
IPP clients implement the IPP protocol on the client side and give end 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 query users (or programs running on behalf of end users) the ability to query
Printer objects and submit and manage print jobs. An IPP server is just Printer objects and submit and manage print jobs. An IPP server is just
that part of the Printer object that implements the server-side that part of the Printer object that implements the server-side
protocol. The rest of the Printer object implements (or gateways into) protocol. The rest of the Printer object implements (or gateways into)
the application semantics of the print service itself. The Printer the application semantics of the print service itself. The Printer
Expires August 17, 1999
objects may be embedded in an output device or may be implemented on a objects may be embedded in an output device or may be implemented on a
host on the network that communicates with an output device. host on the network that communicates with an output device.
Expires November 10, 1999
When a job is submitted to the Printer object and the Printer object When a job is submitted to the Printer object and the Printer object
validates the attributes in the submission request, the Printer object validates the attributes in the submission request, the Printer object
creates a new Job object. The end user then interacts with this new Job creates a new Job object. The end user then interacts with this new Job
object to query its status and monitor the progress of the job. An end object to query its status and monitor the progress of the job. An end
user can also cancel their print jobs by using the Job object's Cancel- user can also cancel their print jobs by using the Job object's Cancel-
Job operation. An end-user can also hold, release, and restart their Job operation. An end-user can also hold, release, and restart their
print jobs using the Job object's OPTIONAL Hold-Job, Release-Job, and print jobs using the Job object's OPTIONAL Hold-Job, Release-Job, and
Restart-Job operations, if implemented. Restart-Job operations, if implemented.
A privileged operator or administrator of a Printer object can cancel, A privileged operator or administrator of a Printer object can cancel,
skipping to change at page 13, line 5 skipping to change at page 13, line 5
Each attribute included in the set of attributes defining an object type Each attribute included in the set of attributes defining an object type
is labeled as: is labeled as:
- "REQUIRED": each object MUST support the attribute. - "REQUIRED": each object MUST support the attribute.
- "OPTIONAL": each object MAY support the attribute. - "OPTIONAL": each object MAY support the attribute.
There is no such similar labeling of attribute values. However, if an There is no such similar labeling of attribute values. However, if an
implementation supports an attribute, it MUST support at least one of implementation supports an attribute, it MUST support at least one of
the possible values for that attribute. the possible values for that attribute.
Expires August 17, 1999 Expires November 10, 1999
2.1 Printer Object 2.1 Printer Object
The major component of the IPP/1.1 model is the Printer object. A The major component of the IPP/1.1 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 may 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 may 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 components abstraction allows the details of the configuration of real components
skipping to change at page 14, line 5 skipping to change at page 13, line 50
devices devices
3a) The associated output devices may or may not be capable of 3a) The associated output devices may or may not be capable of
spooling jobs spooling jobs
3b) The associated output devices may or may not support IPP 3b) The associated output devices may or may not support IPP
The following figures show some examples of how Printer objects can be The following figures show some examples of how Printer objects can be
realized on top of various distributed printing configurations. The realized on top of various distributed printing configurations. The
embedded case below represents configurations 1 and 2. The hosted and embedded case below represents configurations 1 and 2. The hosted and
fan-out figures below represent configurations 3a and 3b. fan-out figures below represent configurations 3a and 3b.
Expires August 17, 1999 In this document the term "client" refers to a software entity that
sends IPP operation request to an IPP Printer object and accepts IPP
operation responses. A client MAY be:
1. contained within software controlled by an end user, e.g. activated
by the "Print" menu item in an application and/or
2. a component of a print server that communicates (using IPP
operations) with either an output device or another "downstream"
print server.
Expires November 10, 1999
The term "IPP Printer" is a network entity that accepts IPP operation
requests and returns IPP operation responses. As such, an IPP object
MAY be:
1. (embedded) software that controls a device
2. part of a print server that accepts IPP operation requests and, in
turn, sends operation requests using (the IPP or other) protocol to
one or more networked device(s).
Expires November 10, 1999
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
skipping to change at page 15, line 5 skipping to change at page 16, line 5
2.2 Job Object 2.2 Job Object
A Job object is used to model a print job. A Job object contains A Job object is used to model a print job. A Job object contains
documents. The information required to create a Job object is sent in a 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 Printer create request from the end user via an IPP Client to the Printer
object. The Printer object validates the create request, and if the object. The Printer object validates the create request, and if the
Printer object accepts the request, the Printer object creates the new Printer object accepts the request, the Printer object creates the new
Job object. Section 3 describes each of the Job operations in detail. Job object. Section 3 describes each of the Job operations in detail.
Expires August 17, 1999 Expires November 10, 1999
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 the - "job-template" attributes: These attributes can be supplied by the
client or end user and include job processing instructions which client or end user and include job processing instructions which
are intended to override any Printer object defaults and/or are intended to override any Printer object defaults and/or
instructions embedded within the document data. (See section 4.2) instructions embedded within the document data. (See section 4.2)
- "job-description" attributes: These attributes describe the Job - "job-description" attributes: These attributes describe the Job
object's identification, state, size, etc. The client supplies some object's identification, state, size, etc. The client supplies some
skipping to change at page 16, line 5 skipping to change at page 17, line 5
(see section 2.4). (see section 2.4).
A Job object is either empty (before any documents have been added) or A Job object is either empty (before any documents have been added) or
contains one or more documents. If the contained document is a stream contains one or more documents. If the contained document is a stream
of document data, that stream can be contained in only one document. of document data, that stream can be contained in only one document.
However, there can be identical copies of the stream in other documents However, there can be identical copies of the stream in other documents
in the same or different Job objects. If the contained document is just in the same or different Job objects. If the contained document is just
a reference to a stream of document data, other documents (in the same a reference to a stream of document data, other documents (in the same
or different Job object(s)) may contain the same reference. or different Job object(s)) may contain the same reference.
Expires August 17, 1999 Expires November 10, 1999
2.4 Object Identity 2.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) [RFC2396] so that they can be persistently and
unambiguously referenced. The notion of a URI is a useful concept, unambiguously referenced. The notion of a URI is a useful concept,
however, until the notion of URI is more stable (i.e., defined more however, until the notion of URI is more stable (i.e., defined more
completely and deployed more widely), it is expected that the URIs used completely and deployed more widely), it is expected that the URIs used
for IPP objects will actually be URLs [RFC2396]. Since every URL is a for IPP objects will actually be URLs [RFC2396]. Since every URL is a
specialized form of a URI, even though the more generic term URI is used specialized form of a URI, even though the more generic term URI is used
skipping to change at page 16, line 42 skipping to change at page 17, line 42
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 one multiple URIs for a single Printer object where each URI represents one
of the communication channels to the Printer object. To support this of the communication channels to the Printer object. To support 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" attribute. identification attribute called the "printer-uri-supported" attribute.
It MUST contain at least one URI. It MAY contain more than one URI. It MUST contain at least one URI. It MAY contain more than one URI.
That is, every Printer object will have at least one URI that identifies That is, every Printer object will have at least one URI that identifies
at least one communication channel to the Printer object, but it may at least one communication channel to the Printer object, but it may
have more than one URI where each URI identifies a different have more than one URI where each URI identifies a different
communication channel to the Printer object. The "printer-uri- communication channel to the Printer object. The "printer-uri-
supported" attribute has a companion attribute, the "uri-security- supported" attribute has two companion attributes, the "uri-security-
supported" attribute, that has the same cardinality as "printer-uri- supported" attribute and the "uri-authentication-supported". Both have
supported". The purpose of the "uri-security-supported" attribute is to the same cardinality as "printer-uri-supported". The purpose of the
indicate the security mechanisms (if any) used for each URI listed in "uri-security-supported" attribute is to indicate the security
"printer-uri-supported". These two attributes are fully described in mechanisms (if any) used for each URI listed in "printer-uri-supported".
sections 4.4.1 and 4.4.2. 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. Issue 2
When a job is submitted to the Printer object via a create request, the 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 client supplies only a single Printer object URI. The client supplied
Printer object URI MUST be one of the values in the "printer-uri- Printer object URI MUST be one of the values in the "printer-uri-
supported" Printer attribute. supported" Printer attribute.
Note: IPP/1.1 does not specify how the client obtains the client Note: IPP/1.1 does not specify how the client obtains the client
supplied URI, but it is RECOMMENDED that a Printer object be registered supplied URI, but it is RECOMMENDED that a Printer object be registered
as an entry in a directory service. End-users and programs can then as an entry in a directory service. End-users and programs can then
interrogate the directory searching for Printers. Section 17 defines a interrogate the directory searching for Printers. Section 16 defines 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
Expires August 17, 1999 Expires November 10, 1999
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. The entry in the directory that represents the IPP Printer
object includes the possibly many URIs for that Printer object as values object includes the possibly many URIs for that Printer object as values
in one its attributes. in one its attributes.
When a client submits a create request to the Printer object, the When a client submits a create request to the Printer object, the
Printer object validates the request and creates a new Job object. The Printer object validates the request and creates a new Job object. The
Printer object assigns the new Job object a URI which is stored in the Printer object assigns the new Job object a URI which is stored in the
"job-uri" Job attribute. This URI is then used by clients as the target "job-uri" Job attribute. This URI is then used by clients as the target
for subsequent Job operations. The Printer object generates a Job URI for subsequent Job operations. The Printer object generates a Job URI
based on its configured security policy and the URI used by the client based on its configured security policy and the URI used by the client
skipping to change at page 17, line 60 skipping to change at page 19, line 4
and scalability, however, many existing printing systems have local and scalability, however, many existing printing systems have local
models or interface constraints that force print jobs to be identified models or interface constraints that force print jobs to be identified
using only a 32-bit positive integer rather than an independent URI. 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 This numeric Job ID is only unique within the context of the Printer
object to which the create request was originally submitted. Therefore, object to which the create request was originally submitted. Therefore,
in order to allow both types of client access to IPP Job objects (either 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 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 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 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 the "job-id" attribute) only has meaning in the context of the Printer
object to which the create request was originally submitted. This
Expires August 17, 1999 Expires November 10, 1999
object to which the create request was originally submitted. This
requirement to support both Job URIs and Job IDs allows all types of 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 clients to access Printer objects and Job objects no matter the local
constraints imposed on the client implementation. constraints imposed on the client implementation.
In addition to identifiers, Printer objects and Job objects have names In addition to identifiers, Printer objects and Job objects have names
("printer-name" and "job-name"). An object name NEED NOT be unique ("printer-name" and "job-name"). An object name NEED NOT be unique
across all instances of all objects. A Printer object's name is chosen across all instances of all objects. A Printer object's name is chosen
and set by an administrator through some mechanism outside the scope of and set by an administrator through some mechanism outside the scope of
this IPP/1.1 document. A Job object's name is optionally chosen and this IPP/1.1 document. A Job object's name is optionally chosen and
supplied by the IPP client submitting the job. If the client does not supplied by the IPP client submitting the job. If the client does not
skipping to change at page 18, line 28 skipping to change at page 19, line 29
new Job object. In all cases, the name only has local meaning. new Job object. In all cases, the name only has local meaning.
To summarize: To summarize:
- Each Printer object is identified with one or more URIs. The - Each Printer object is identified with one or more URIs. The
Printer's "printer-uri-supported" attribute contains the URI(s). Printer's "printer-uri-supported" attribute contains the URI(s).
- The Printer object's "uri-security-supported" attribute identifies - The Printer object's "uri-security-supported" attribute identifies
the communication channel security protocols that may or may not the communication channel security protocols that may or may not
have been configured for the various Printer object URIs (e.g., have been configured for the various Printer object URIs (e.g.,
'tls' or 'none'). 'tls' or 'none').
- Each Job object is identified with a Job URI. The Job's "job-uri" - - 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. attribute contains the URI.
- Each Job object is also identified with Job ID which is a 32-bit, - 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 positive integer. The Job's "job-id" attribute contains the Job
ID. The Job ID is only unique within the context of the Printer ID. The Job ID is only unique within the context of the Printer
object which created the Job object. object which created the Job object.
- Each Job object has a "job-printer-uri" attribute which contains - Each Job object has a "job-printer-uri" attribute which contains
the URI of the Printer object that was used to create the Job the URI of the Printer object that was used to create the Job
object. This attribute is used to determine the Printer object object. This attribute is used to determine the Printer object
that created a Job object when given only the URI for the Job that created a Job object when given only the URI for the Job
object. This linkage is necessary to determine the languages, object. This linkage is necessary to determine the languages,
skipping to change at page 18, line 56 skipping to change at page 20, line 4
client optionally supplies this name in the create request. If the client optionally supplies this name in the create request. If the
client does not supply this name, the Printer object generates a client does not supply this name, the Printer object generates a
name for the Job object. The Job object's "job-name" attribute name for the Job object. The Job object's "job-name" attribute
contains the name. contains the name.
3. IPP Operations 3. IPP Operations
IPP objects support operations. An operation consists of a request and IPP objects support operations. An operation consists of a request and
a response. When a client communicates with an IPP object, the client a response. When a client communicates with an IPP object, the client
issues an operation request to the URI for that object. Operation issues an operation request to the URI for that object. Operation
Expires November 10, 1999
requests and responses have parameters that identify the operation. requests and responses have parameters that identify the operation.
Operations also have attributes that affect the run-time characteristics Operations also have attributes that affect the run-time characteristics
of the operation (the intended target, localization information, etc.). of the operation (the intended target, localization information, etc.).
These operation-specific attributes are called operation attributes (as These operation-specific attributes are called operation attributes (as
Expires August 17, 1999
compared to object attributes such as Printer object attributes or Job compared to object attributes such as Printer object attributes or Job
object attributes). Each request carries along with it any operation object attributes). Each request carries along with it any operation
attributes, object attributes, and/or document data required to perform attributes, object attributes, and/or document data required to perform
the operation. Each request requires a response from the object. Each the operation. Each request requires a response from the object. Each
response indicates success or failure of the operation with a status response indicates success or failure of the operation with a status
code as a response parameter. The response contains any operation code as a response parameter. The response contains any operation
attributes, object attributes, and/or status messages generated during attributes, object attributes, and/or status messages generated during
the execution of the operation request. 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
skipping to change at page 19, line 56 skipping to change at page 21, line 5
3.1 Common Semantics 3.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 3.1.1 Required Parameters
Every operation request contains the following REQUIRED parameters: Every operation request contains the following REQUIRED parameters:
Expires November 10, 1999
- a "version-number", - a "version-number",
- an "operation-id", - an "operation-id",
- a "request-id", and - a "request-id", and
- the attributes that are REQUIRED for that type of request. - the attributes that are REQUIRED for that type of request.
Expires August 17, 1999
Every operation response contains the following REQUIRED parameters: Every operation response contains the following REQUIRED parameters:
- a "version-number", - a "version-number",
- a "status-code", - a "status-code",
- the "request-id" that was supplied in the corresponding request, - the "request-id" that was supplied in the corresponding request,
and and
- the attributes that are REQUIRED for that type of response. - the attributes that are REQUIRED for that type of response.
The "Encoding and Transport document [IPP-PRO] defines special rules for The "Encoding and Transport document [IPP-PRO] defines special rules for
the encoding of these parameters. All other operation elements are the encoding of these parameters. All other operation elements are
represented using the more generic encoding rules for attributes and represented using the more generic encoding rules for attributes and
groups of attributes. groups of attributes.
3.1.2 Operation IDs and Request IDs 3.1.2 Operation IDs and Request IDs
Each IPP operation request includes an identifying "operation-id" value. Each IPP operation request includes an identifying "operation-id" value.
Valid values are defined in the "operations-supported" Printer attribute Valid values are defined in the "operations-supported" Printer attribute
section (see section 4.4.13). The client specifies which operation is section (see section 4.4.15). The client specifies which operation is
being requested by supplying the correct "operation-id" value. being requested by supplying the correct "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- "request-id" value. For each request, the client chooses the "request-
id" which MUST be an integer (possibly unique depending on client id" which MUST be an integer (possibly unique depending on client
requirements) in the range from 1 to 2**31 - 1 (inclusive). This requirements) in the range from 1 to 2**31 - 1 (inclusive). This
"request-id" allows clients to manage multiple outstanding requests. The "request-id" allows clients to manage multiple outstanding requests. The
receiving IPP object copies all 32-bits of the client-supplied "request- receiving IPP object copies all 32-bits of the client-supplied "request-
id" attribute into the response so that the client can match the id" attribute into the response so that the client can match the
response with the correct outstanding request, even if the "request-id" response with the correct outstanding request, even if the "request-id"
skipping to change at page 20, line 57 skipping to change at page 22, line 4
3.1.3 Attributes 3.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 operation - Operation Attributes: These attributes are passed in the operation
and affect the IPP object's behavior while processing the operation and affect the IPP object's behavior while processing the operation
request and may affect other attributes or groups of attributes. request and may affect other attributes or groups of attributes.
Some operation attributes describe the document data associated Some operation attributes describe the document data associated
with the print job and are associated with new Job objects, however with the print job and are associated with new Job objects, however
Expires November 10, 1999
most operation attributes do not persist beyond the life of the most operation attributes do not persist beyond the life of the
operation. The description of each operation attribute includes operation. The description of each operation attribute includes
conformance statements indicating which operation attributes are conformance statements indicating which operation attributes are
REQUIRED and which are OPTIONAL for an IPP object to support and REQUIRED and which are OPTIONAL for an IPP object to support and
Expires August 17, 1999
which attributes a client MUST supply in a request and an IPP which attributes a client MUST supply in a request and an IPP
object MUST supply in a response. object MUST supply in a response.
- Job Template Attributes: These attributes affect the processing of - Job Template Attributes: These attributes affect the processing of
a job. A client OPTIONALLY supplies Job Template Attributes in a a job. A client OPTIONALLY supplies Job Template Attributes in a
create request, and the receiving object MUST be prepared to create request, and the receiving object MUST be prepared to
receive all supported attributes. The Job object can later be receive all supported attributes. The Job object can later be
queried to find out what Job Template attributes were originally queried to find out what Job Template attributes were originally
requested in the create request, and such attributes are returned requested in the create request, and such attributes are returned
in the response as Job Object Attributes. The Printer object can in the response as Job Object Attributes. The Printer object can
be queried about its Job Template attributes to find out what type be queried about its Job Template attributes to find out what type
of job processing capabilities are supported and/or what the of job processing capabilities are supported and/or what the
default job processing behaviors are, though such attributes are default job processing behaviors are, though such attributes are
returned in the response as Printer Object Attributes. The "ipp- returned in the response as Printer Object Attributes. The "ipp-
attribute-fidelity" operation attribute affects processing of all attribute-fidelity" operation attribute affects processing of all
client-supplied Job Template attributes (see sections 3.2.1.2 and client-supplied Job Template attributes (see sections 3.2.1.2 and
16 for a full description of "ipp-attribute-fidelity" and its 15 for a full description of "ipp-attribute-fidelity" and its
relationship to other attributes). relationship to other attributes).
- Job Object Attributes: These attributes are returned in response to - Job Object Attributes: These attributes are returned in response to
a query operation directed at a Job object. a query operation directed at a Job object.
- Printer Object Attributes: These attributes are returned in - Printer Object Attributes: These attributes are returned in
response to a query operation directed at a Printer object. response to a query operation directed at a Printer object.
- Unsupported Attributes: In a create request, the client supplies a - Unsupported Attributes: In a create request, the client supplies a
set of Operation and Job Template attributes. If any of these set of Operation and Job Template attributes. If any of these
attributes or their values is unsupported by the Printer object, attributes or their values is unsupported by the Printer object,
the Printer object returns the set of unsupported attributes in the the Printer object returns the set of unsupported attributes in the
response. Sections 3.2.1.2 and 16 give a full description of how response. Sections 3.1.7, 3.2.1.2, and 15 give a full description
Job Template attributes supplied by the client in a create request of how Job Template attributes supplied by the client in a create
are processed by the Printer object and how unsupported attributes request are processed by the Printer object and how unsupported
are returned to the client. Because of extensibility, any IPP attributes are returned to the client. Because of extensibility,
object might receive a request that contains new or unknown any IPP object might receive a request that contains new or unknown
attributes or values for which it has no support. In such cases, attributes or values for which it has no support. In such cases,
the IPP object processes what it can and returns the unsupported the IPP object processes what it can and returns the unsupported
attributes in the response. 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. Issue
Later in this section, each operation is formally defined by identifying Later in this section, each operation is formally defined by identifying
the allowed and expected groups of attributes for each request and the allowed and expected groups of attributes for each request and
response. The model identifies a specific order for each group in each response. The model identifies a specific order for each group in each
request or response, but the attributes within each group may be in any request or response, but the attributes within each group may be in any
order, unless specified otherwise. order, unless specified otherwise.
Each attribute specification includes the attribute's name followed by Each attribute specification 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 is followed by the allowed range in
parentheses, (m:n), for values of that attribute. Each 'text' or 'name' parentheses, (m:n), for values of that attribute. Each 'text' or 'name'
attribute is followed by the maximum size in octets in parentheses, attribute is followed by the maximum size in octets in parentheses,
(size), for values of that attribute. For more details on attribute (size), for values of that attribute. For more details on attribute
syntax notation, see the descriptions of these attributes syntaxes in syntax notation, see the descriptions of these attributes syntaxes in
section 4.1. section 4.1.
Expires November 10, 1999
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 ordering attribute, but it is treated as a special attribute group for ordering
purposes. The only operations that support supplying the document data purposes. The only operations that support supplying the document data
Expires August 17, 1999
within an operation request are Print-Job and Send-Document. There are within an operation request are Print-Job and Send-Document. There are
no operation responses that include document data. no operation responses that include document data.
Note: Some operations are REQUIRED for IPP objects to support; the Note: Some operations are REQUIRED for IPP objects to support; the
others are OPTIONAL (see section 5.2.2). Therefore, before using an others are OPTIONAL (see section 5.2.2). Therefore, before using an
OPTIONAL operation, a client SHOULD first use the REQUIRED Get-Printer- OPTIONAL operation, a client SHOULD first use the REQUIRED Get-Printer-
Attributes operation to query the Printer's "operations-supported" Attributes operation to query the Printer's "operations-supported"
attribute in order to determine which OPTIONAL Printer and Job attribute in order to determine which OPTIONAL Printer and Job
operations are actually supported. The client SHOULD NOT use an operations are actually supported. The client SHOULD NOT use an
OPTIONAL operation that is not supported. When an IPP object receives a OPTIONAL operation that is not supported. When an IPP object receives a
request to perform an operation it does not support, it returns the request to perform an operation it does not support, it returns the
'server-error-operation-not-supported' status code (see section 'server-error-operation-not-supported' status code (see section
14.1.5.2). An IPP object is non-conformant if it does not support a 13.1.5.2). An IPP object is non-conformant if it does not support a
REQUIRED operation. REQUIRED operation.
3.1.4 Character Set and Natural Language Operation Attributes 3.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 understanding names intended for human understanding rather than machine understanding
(see the 'text' and 'name' attribute syntax descriptions in section (see the 'text' and 'name' attribute syntax descriptions in section
4.1). The following sections describe two special Operation Attributes 4.1). The following sections describe two special Operation Attributes
called "attributes-charset" and "attributes-natural-language". These called "attributes-charset" and "attributes-natural-language". These
attributes are always part of the Operation Attributes group. For most attributes are always part of the Operation Attributes group. For most
skipping to change at page 22, line 58 skipping to change at page 24, line 5
"attributes-charset" (charset): "attributes-charset" (charset):
This operation attribute identifies the charset (coded character This operation attribute identifies the charset (coded character
set and encoding method) used by any 'text' and 'name' attributes set and encoding method) used by any 'text' and 'name' attributes
that the client is supplying in this request. It also identifies that the client is supplying in this request. It also identifies
the charset that the Printer object MUST use (if supported) for all the charset that the Printer object MUST use (if supported) for all
'text' and 'name' attributes and status messages that the Printer 'text' and 'name' attributes and status messages that the Printer
object returns in the response to this request. See Sections 4.1.1 object returns in the response to this request. See Sections 4.1.1
and 4.1.2 for the specification of the 'text' and 'name' attribute and 4.1.2 for the specification of the 'text' and 'name' attribute
syntaxes. syntaxes.
Expires November 10, 1999
All clients and IPP objects MUST support the 'utf-8' charset All clients and IPP objects MUST support the 'utf-8' charset
[RFC2279] and MAY support additional charsets provided that they [RFC2279] and MAY support additional charsets provided that they
Expires August 17, 1999
are registered with IANA [IANA-CS]. If the Printer object does not are registered with IANA [IANA-CS]. If the Printer object does not
support the client supplied charset value, the Printer object MUST support the client supplied charset value, the Printer object MUST
reject the request, set the "attributes-charset" to 'utf-8' in the reject the request, set the "attributes-charset" to 'utf-8' in the
response, and return the 'client-error-charset-not-supported' response, and return the 'client-error-charset-not-supported'
status code and any 'text' or 'name' attributes using the 'utf-8' status code and any 'text' or 'name' attributes using the 'utf-8'
charset. The Printer object MUST indicate the charset(s) supported charset. The Printer NEED NOT return any attributes in the
as the values of the "charset-supported" Printer attribute (see Unsupported Attributes Group (See sections 3.1.7 and 3.2.1.2). The
Section 4.4.15), so that the client can query to determine which Printer object MUST indicate the charset(s) supported as the values
charset(s) are supported. 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 required to Note to client implementers: Since IPP objects are only required to
support the 'utf-8' charset, in order to maximize interoperability support the 'utf-8' charset, in order to maximize interoperability
with multiple IPP object implementations, a client may want to with multiple IPP object implementations, a client may want to
supply 'utf-8' in the "attributes-charset" operation attribute, supply 'utf-8' in the "attributes-charset" operation attribute,
even though the client is only passing and able to present a even though the client is only passing and able to present a
simpler charset, such as US-ASCII or ISO-8859-1. Then the client simpler charset, such as US-ASCII or ISO-8859-1. Then the client
will have to filter out (or charset convert) those characters that will have to filter out (or charset convert) those characters that
are returned in the response that it cannot present to its user. 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 On the other hand, if both the client and the IPP objects also
skipping to change at page 23, line 56 skipping to change at page 24, line 60
supported for generated messages. supported for generated messages.
For any of the attributes for which the Printer object generates For any of the attributes for which the Printer object generates
text, i.e., for the "job-state-message", "printer-state-message", text, i.e., for the "job-state-message", "printer-state-message",
and status messages (see Section 3.1.6), the Printer object MUST be and status messages (see Section 3.1.6), the Printer object MUST be
able to generate these text strings in any of its supported natural able to generate these text strings in any of its supported natural
languages. If the client requests a natural language that is not languages. If the client requests a natural language that is not
supported, the Printer object MUST return these generated messages supported, the Printer object MUST return these generated messages
in the Printer's configured natural language as specified by the in the Printer's configured natural language as specified by the
Printer's "natural-language-configured" attribute" (see Section Printer's "natural-language-configured" attribute" (see Section
4.4.16). 4.4.19).
Expires November 10, 1999
For other 'text' and 'name' attributes supplied by the client, For other 'text' and 'name' attributes supplied by the client,
authentication system, operator, system administrator, or authentication system, operator, system administrator, or
Expires August 17, 1999
manufacturer (i.e., for "job-originating-user-name", "printer-name" manufacturer (i.e., for "job-originating-user-name", "printer-name"
(name), "printer-location" (text), "printer-info" (text), and (name), "printer-location" (text), "printer-info" (text), and
"printer-make-and-model" (text)), the Printer object is only "printer-make-and-model" (text)), the Printer object is only
required to support the configured natural language of the Printer required to support the configured natural language of the Printer
identified by the Printer object's "natural-language-configured" identified by the Printer object's "natural-language-configured"
attribute, though support of additional natural languages for these attribute, though support of additional natural languages for these
attributes is permitted. attributes is permitted.
For any 'text' or 'name' attribute in the request that is in a For any 'text' or 'name' attribute in the request that is in a
different natural language than the value supplied in the different natural language than the value supplied in the
skipping to change at page 24, line 37 skipping to change at page 25, line 39
attribute-fidelity" Operation attribute). That is the IPP object attribute-fidelity" Operation attribute). That is the IPP object
accepts all client supplied values no matter what the values are in accepts all client supplied values no matter what the values are in
the Printer object's "generated-natural-language-supported" the Printer object's "generated-natural-language-supported"
attribute. That attribute, "generated-natural-language-supported", attribute. That attribute, "generated-natural-language-supported",
only applies to generated messages, not client supplied messages. only applies to generated messages, not client supplied messages.
The IPP object MUST remember that natural language for all client- The IPP object MUST remember that natural language for all client-
supplied attributes, and when returning those attributes in supplied attributes, and when returning those attributes in
response to a query, the IPP object MUST indicate that natural response to a query, the IPP object MUST indicate that natural
language. language.
Each value whose attribute syntax type is .text. or .name. (see Each value whose attribute syntax type is 'text' or 'name' (see
sections 4.1.1 and 4.1.2) has an Associated Natural-Language. This sections 4.1.1 and 4.1.2) has an Associated Natural-Language. This
document does not specify how this association is stored in a document does not specify how this association is stored in a
Printer or Job object. When such a value is encoded in a request Printer or Job object. When such a value is encoded in a request
or response, the natural language is either implicit or explicit: or response, the natural language is either implicit or explicit:
@ In the implicit case, the value contains only the text/name @ In the implicit case, the value contains only the text/name
value, and the language is specified by the .attributes- value, and the language is specified by the "attributes-
natural-language. operation attribute in the request or natural-language" operation attribute in the request or
response (see sections 4.1.1.1 textWithoutLanguage and response (see sections 4.1.1.1 textWithoutLanguage and 4.1.2.1
4.1.2.1 nameWithoutLanguage). nameWithoutLanguage).
@ In the explicit case (also known as the Natural-Language @ In the explicit case (also known as the Natural-Language
Override case), the value contains both the language and Override case), the value contains both the language and the
the text/name value (see sections 4.1.1.2 textWithLanguage text/name value (see sections 4.1.1.2 textWithLanguage and
and 4.1.2.2 nameWithLanguage). 4.1.2.2 nameWithLanguage).
For example, the "job-name" attribute MAY be supplied by the client For example, the "job-name" attribute MAY be supplied by the client
in a create request. The text value for this attribute will be in in a create request. The text value for this attribute will be in
the natural language identified by the "attribute-natural-language" the natural language identified by the "attribute-natural-language"
attribute, or if different, as identified by the Natural Language attribute, or if different, as identified by the Natural Language
Expires November 10, 1999
Override mechanism. If supplied, the IPP object will use the value Override mechanism. If supplied, the IPP object will use the value
of the "job-name" attribute to populate the Job object's "job-name" of the "job-name" attribute to populate the Job object's "job-name"
Expires August 17, 1999
attribute. Whenever any client queries 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 attribute, the IPP object returns the attribute as stored and uses
the Natural Language Override mechanism to specify the natural the Natural Language Override mechanism to specify the natural
language, if it is different from that reported in the "attributes- language, if it is different from that reported in the "attributes-
natural-language" operation attribute of the response. The IPP natural-language" operation attribute of the response. The IPP
object MAY use the Natural Language Override mechanism redundantly, object MAY use the Natural Language Override mechanism redundantly,
i.e., use it even when the value is in the same natural language i.e., use it even when the value is in the same natural language
as the value supplied in the "attributes-natural-language" as the value supplied in the "attributes-natural-language"
operation attribute of the response. operation attribute of the response.
skipping to change at page 26, line 5 skipping to change at page 27, line 5
language requested by the client. language requested by the client.
In either case, the Printer object does not reject the request because In either case, the Printer object does not reject the request because
of the apparent incompatibility. The potential incompatible combination of the apparent incompatibility. The potential incompatible combination
of charset and natural language can occur either at the global operation of charset and natural language can occur either at the global operation
level or at the Natural Language Override attribute-by-attribute level. level or at the Natural Language Override attribute-by-attribute level.
In addition, since the response always includes explicit charset and In addition, since the response always includes explicit charset and
natural language information, there is never any question or ambiguity natural language information, there is never any question or ambiguity
in how the client interprets the response. in how the client interprets the response.
Expires August 17, 1999 Expires November 10, 1999
3.1.4.2 Response Operation Attributes 3.1.4.2 Response Operation Attributes
The Printer object MUST supply and the client MUST support the following The Printer object MUST supply and the client MUST support the following
REQUIRED operation attributes in every IPP/1.1 operation response: REQUIRED operation attributes in every IPP/1.1 operation response:
"attributes-charset" (charset): "attributes-charset" (charset):
This operation attribute identifies the charset used by any 'text' This operation attribute identifies the charset used by any 'text'
and 'name' attributes that the Printer object is returning in this and 'name' attributes that the Printer object is returning in this
response. The value in this response MUST be the same value as the response. The value in this response MUST be the same value as the
skipping to change at page 27, line 5 skipping to change at page 28, line 5
supplied by the client. For any 'text' or 'name' attribute or supplied by the client. For any 'text' or 'name' attribute or
status message in the response that is in a different natural status message in the response that is in a different natural
language than the value returned in the "attributes-natural- language than the value returned in the "attributes-natural-
language" operation attribute, the IPP object MUST use the 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 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 each attribute value returned. The IPP object MAY use the Natural
Language Override mechanism redundantly, i.e., use it even when the Language Override mechanism redundantly, i.e., use it even when the
value is in the same natural language as the value supplied in the value is in the same natural language as the value supplied in the
"attributes-natural-language" operation attribute of the response. "attributes-natural-language" operation attribute of the response.
Expires August 17, 1999 Expires November 10, 1999
3.1.5 Operation Targets 3.1.5 Operation Targets
All IPP operations are directed at IPP objects. For Printer operations, All IPP operations are directed at IPP objects. For Printer operations,
the operation is always directed at a Printer object using one of its the operation is always directed at a Printer object using one of its
URIs (i.e., one of the values in the Printer object's "printer-uri- URIs (i.e., one of the values in the Printer object's "printer-uri-
supported" attribute). Even if the Printer object supports more than supported" attribute). Even if the Printer object supports more than
one URI, the client supplies only one URI as the target of the one URI, the client supplies only one URI as the target of the
operation. The client identifies the target object by supplying the operation. The client identifies the target object by supplying the
correct URI in the "printer-uri (uri)" operation attribute. correct URI in the "printer-uri (uri)" operation attribute.
skipping to change at page 28, line 5 skipping to change at page 29, line 5
requests and responses must be in absolute format rather than relative requests and responses must be in absolute format rather than relative
format (a relative URL identifies a resource with the scope of the HTTP format (a relative URL identifies a resource with the scope of the HTTP
server, but does not include scheme, host or port). 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 included 1. If the URI scheme allows the port number to be explicitly included
in the URI string, and a port number is specified within the URI, in the URI string, and a port number is specified within the URI,
Expires August 17, 1999 Expires November 10, 1999
then that port number MUST be used by the client to contact the IPP then that port number MUST be used by the client to contact the IPP
object. object.
2. If the URI scheme allows the port number to be explicitly included 2. If the URI scheme allows the port number to be explicitly included
in the URI string, and a port number is not specified within the in the URI string, and a port number is not specified within the
URI, then default port number implied by that URI scheme MUST be URI, then default port number implied by that URI scheme MUST be
used by the client to contact the IPP object. 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 by specified within the URI, then the default port number implied by
skipping to change at page 28, line 29 skipping to change at page 29, line 29
of IPP onto HTTP/1.1 and defines a new default port number for using IPP of IPP onto HTTP/1.1 and defines a new default port number for using IPP
over HTTP/1.1. over HTTP/1.1.
3.1.6 Operation Status Codes and Messages 3.1.6 Operation Status Codes and Messages
Every operation response includes a REQUIRED "status-code" parameter and Every operation response includes a REQUIRED "status-code" parameter and
an OPTIONAL "status-message" operation attribute. The "status-code" an OPTIONAL "status-message" operation attribute. The "status-code"
provides information on the processing of a request. A "status-message" provides information on the processing of a request. A "status-message"
attribute provides a short textual description of the status of the attribute provides a short textual description of the status of the
operation. The status code is intended for use by automata, and the operation. The status code is intended for use by automata, and the
status message is intended for the human end user. If a response does status message is intended for the human end user. The "status-message"
include a "status-message" attribute, an IPP client NEED NOT examine or is especially useful for a later version of a Printer object to return
display the message, however it SHOULD do so in some implementation as supplemental information for the human user to accompany a status
specific manner. code that an earlier version of a client might not understand. If a
response does include a "status-message" attribute, an IPP client NEED
NOT examine or display the message, however it SHOULD do so in some
implementation specific manner.
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 4.1 The "status-code" syntax is similar to a "type2 enum" (see section 4.1
on "Attribute Syntaxes") except that values can range only from 0x0000 on "Attribute Syntaxes") except that values can range only from 0x0000
to 0x7FFF. Section 14 describes the status codes, assigns the numeric to 0x7FFF. Section 13 describes the status codes, assigns the numeric
values, and suggests a corresponding status message for each status values, and suggests a corresponding status message for each status
code. The "status-message" attribute's syntax is "text(255)". A client code. The "status-message" attribute's syntax is "text(255)". 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.
If the Printer object supports the "status-message" operation attribute, If the Printer object supports the "status-message" operation attribute,
the Printer object MUST be able to generate this message in any of the the Printer object MUST be able to generate this message in any of the
natural languages identified by the Printer object's "generated-natural- natural languages identified by the Printer object's "generated-natural-
language-supported" attribute (see the "attributes-natural-language" language-supported" attribute (see the "attributes-natural-language"
operation attribute specified in section 3.1.4.1). As described in operation attribute specified in section 3.1.4.1). As described in
section 3.1.4.1 for any returned 'text' attribute, if there is a choice section 3.1.4.1 for any returned 'text' attribute, if there is a choice
for generating this message, the Printer object uses the natural for generating this message, the Printer object uses the natural
language indicated by the value of the "attributes-natural-language" in language indicated by the value of the "attributes-natural-language" in
the client request if supported, otherwise the Printer object uses the the client request if supported, otherwise the Printer object uses the
value in the Printer object's own "natural-language-configured" value in the Printer object's own "natural-language-configured"
attribute. If the Printer object supports the "status-message" attribute. If the Printer object supports the "status-message"
operation attribute, it SHOULD use the REQUIRED 'utf-8' charset to operation attribute, it SHOULD use the REQUIRED 'utf-8' charset to
return a status message for the following error status codes (see return a status message for the following error status codes (see
section 14): 'client-error-bad-request', 'client-error-charset-not- section 13): 'client-error-bad-request', 'client-error-charset-not-
supported', 'server-error-internal-error', 'server-error-operation-not-
supported', and 'server-error-version-not-supported'. In this case, it
Expires August 17, 1999 Expires November 10, 1999
supported', 'server-error-internal-error', 'server-error-operation-not-
supported', and 'server-error-version-not-supported'. In this case, it
MUST set the value of the "attributes-charset" operation attribute to MUST set the value of the "attributes-charset" operation attribute to
'utf-8' in the error response. 'utf-8' in the error response.
3.1.7 Versions If the Printer performs an operation with no errors and it encounters no
problems, it MUST return the status code 'successful-ok' in the
response. See section 13.
If the client supplies unsupported values for the following parameters
or Operation attributes, the Printer object MUST reject the operation,
NEED NOT return the unsupported attribute value in the Unsupported
Attributes group, and MUST return the indicated 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
If the client supplies unsupported values for other attributes, or
unsupported attributes, the Printer returns the status code defined in
the next section on Unsupported Attributes.
3.1.7 Unsupported Attributes
The Unsupported Attributes group contains attributes that are not
supported by the operation. This group is primarily for the job creation
operations, but all operations can return this group.
A Printer object MUST include an Unsupported Attributes group in a
response if the status code is one of the following: 'successful-ok-
ignored-or-substituted-attributes', 'successful-ok-conflicting-
attributes', 'client-error-attributes-or-values-not-supported' or
'client-error-conflicting-attributes'.
If the status code is one of the four specified in the preceding
paragraph, the Unsupported Attributes group MUST contain all of those
attributes and only those attributes that are:
a)an Operation or Job Template attribute supplied in the request,
and
b)unsupported by the printer. See below for details on the three
categories .unsupported. attributes. Issues 18, 23, and 27
If the Printer object is not returning any Unsupported Attributes in the
response, the Printer object SHOULD omit Group 2 rather than sending an
empty group. However, a client MUST be able to accept an empty group.
Unsupported attributes fall into three categories:
1. The Printer object does not support the supplied attribute (no
matter what the attribute syntax or value).
Expires November 10, 1999
2. The Printer object does support the attribute, but does not
support some or all of the particular attribute syntaxes or values
supplied by the client (i.e., the Printer object does not have
those attribute syntaxes or values in its corresponding "xxx-
supported" attribute).
3. The Printer object does support the attributes and values
supplied, but the particular values are in conflict with one
another, because they violate a constraint, such as not being able
to staple transparencies.
In the case of an unsupported attribute name, the Printer object returns
the client-supplied attribute with a substituted value of 'unsupported'.
This value's syntax type is "out-of-band" and its encoding is defined by
special rules for "out-of-band" values in the "Encoding and Transport"
specification [IPP-PRO]. Its value indicates no support for the
attribute itself (see the beginning of section 4.1). Issue 12
In the case of a supported attribute with one or more unsupported
attribute syntaxes or values, the Printer object simply returns the
client-supplied attribute with the unsupported attribute syntaxes or
values as supplied by the client. This indicates support for the
attribute, but no support for that particular attribute syntax or value.
If the client supplies a multi-valued attribute with more than one value
and the Printer object supports the attribute but only supports a subset
of the client-supplied attribute syntaxes or values, the Printer object
MUST return only those attribute syntaxes or values that are
unsupported.
In the case of two (or more) supported attribute values that are in
conflict with one another (although each is supported independently, the
values conflict when requested together within the same job), the
Printer object MUST return all the values that it ignores or substitutes
to resolve the conflict, but not any of the values that it is still
using. The choice for exactly how to resolve the conflict is
implementation dependent. See sections 3.2.1.2 and 15. See The
Implementer's Guide [IPP-IIG] for an example.
3.1.8 Versions
Each operation request and response carries with it a "version-number" Each operation request and response carries with it a "version-number"
parameter. Each value of the "version-number" is in the form "X.Y" 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 number. where X is the major version number and Y is the minor version number.
By including a version number in the client request, it allows the By including a version number in the client request, it allows the
client to identify which version of IPP it is interested in using. If client to identify which version of IPP it is interested in using. If
the IPP object does not support that version, the object responds with a the IPP object does not support that version, the object responds with a
status code of 'server-error-version-not-supported' along with the status code of 'server-error-version-not-supported' along with the
closest version number that is supported (see section 14.1.5.4). closest version number that is supported (see section 13.1.5.4).
There is no version negotiation per se. However, if after receiving a There is no version negotiation per se. However, if after receiving a
'server-error-version-not-supported' status code from an IPP object, 'server-error-version-not-supported' status code from an IPP object,
there is nothing that prevents a client from trying again with a there is nothing that prevents a client from trying again with a
different version number. In order to conform to IPP/1.1, an IPP object different version number. In order to conform to IPP/1.1, an IPP object
implementations MUST support versions '1.1' and 1.0. implementations MUST support version '1.1' SHOULD support version
'1.0'. Issue 33
Expires November 10, 1999
There is only one notion of "version number" that covers both IPP Model There is only one notion of "version number" that covers both IPP Model
and IPP Protocol changes. Thus the version number MUST change when and IPP Protocol changes. Thus the version number MUST change when
introducing a new version of the Model and Semantics document [IPP-MOD] introducing a new version of the Model and Semantics document [IPP-MOD]
or a new version of the "Encoding and Transport" document [IPP-PRO]. or a new version of the "Encoding and Transport" document [IPP-PRO].
Changes to the major version number indicate structural or syntactic Changes to the major version number indicate structural or syntactic
changes that make it impossible for older version of IPP clients and changes that make it impossible for older version of IPP clients and
Printer objects to correctly parse and process the new or changed Printer objects to correctly parse and correctly process the new or
attributes, operations and responses. If the major version number changed attributes, operations and responses. If the major version
changes, the minor version numbers is set to zero. As an example, number changes, the minor version numbers is set to zero. As an
adding the "ipp-attribute-fidelity" attribute (if it had not been part example, adding the REQUIRED "ipp-attribute-fidelity" attribute to
of version '1.1'), would have required a change to the major version version '1.1' (if it had not been part of version '1.1'), would have
number. Items that might affect the changing of the major version required a change to the major version number, since an IPP/1.0 Printer
number include any changes to the Model and Semantics document [IPP-MOD] would not have processed a request with the correct semantics that
or the "Encoding and Transport" document [IPP-PRO] itself, such as: 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 [IPP-MOD] or the
"Encoding and Transport" document [IPP-PRO] itself, such as:
- reordering of ordered attributes or attribute sets - reordering of ordered attributes or attribute sets
- changes to the syntax of existing attributes - changes to the syntax of existing attributes
- changing Operation or Job Template attributes from OPTIONAL to
REQUIRED and vice versa
- adding REQUIRED (for an IPP object to support) operation attributes
- adding REQUIRED (for an IPP object to support) operation attribute - adding REQUIRED (for an IPP object to support) operation attribute
groups groups
- adding values to existing operation attributes - adding values to existing REQUIRED operation attributes
- adding REQUIRED operations - 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 by features, attributes and attribute values that may not be understood by
all IPP objects, but which can be ignored if not understood. Items that all IPP objects, but which can be ignored if not understood. Items that
might affect the changing of the minor version number include any might affect the changing of the minor version number include any
changes to the model objects and attributes but not the encoding and changes to the model objects and attributes but not the encoding and
transport rules [IPP-PRO] (except adding attribute syntaxes). Examples transport rules [IPP-PRO] (except adding attribute syntaxes). Examples
of such changes are: of such changes are:
Expires August 17, 1999
- grouping all extensions not included in a previous version into a - grouping all extensions not included in a previous version into a
new version new version
- adding new attribute values - adding new attribute values
- adding new object attributes - adding new object attributes
- adding OPTIONAL (for an IPP object to support) operation attributes - adding OPTIONAL (for an IPP object to support) operation attributes
(i.e., those attributes that an IPP object can ignore without (i.e., those attributes that an IPP object can ignore without
confusing clients) confusing clients)
- adding OPTIONAL (for an IPP object to support) operation attribute - adding OPTIONAL (for an IPP object to support) operation attribute
groups (i.e., those attributes that an IPP object can ignore groups (i.e., those attributes that an IPP object can ignore
without confusing clients) without confusing clients)
- adding new attribute syntaxes - adding new attribute syntaxes
- adding OPTIONAL operations - adding OPTIONAL operations
- changing Job Description attributes or Printer Description - changing Job Description attributes or Printer Description
attributes from OPTIONAL to REQUIRED or vice versa. attributes from OPTIONAL to REQUIRED or vice versa.
- adding OPTIONAL attribute syntaxes to an existing attribute. Issue
33
The encoding of the "version-number" MUST NOT change over any version The encoding of the "version-number" MUST NOT change over any version
number (either major or minor). This rule guarantees that all future number (either major or minor). This rule guarantees that all future
versions will be backwards compatible with all previous versions (at versions will be backwards compatible with all previous versions (at
least for checking the "version-number"). In addition, any protocol least for checking the "version-number"). In addition, any protocol
elements (attributes, error codes, tags, etc.) that are not carried elements (attributes, error codes, tags, etc.) that are not carried
Expires November 10, 1999
forward from one version to the next are deprecated so that they can forward from one version to the next are deprecated so that they can
never be reused with new semantics. never be reused with new semantics.
Implementations that support a certain major version NEED NOT support Implementations that support a certain version NEED NOT support ALL
ALL previous versions. As each new major version is defined (through previous versions. As each new version is defined (through the release
the release of a new specification), that major version will specify of a new specification), that major version will specify which previous
which previous major versions MUST be supported in compliant versions MUST and which versions SHOULD be supported in compliant
implementations. implementations. Issue 33
3.1.8 Job Creation Operations 3.1.9 Job Creation Operations
In order to "submit a print job" and create a new Job object, a client In order to "submit a print job" and create a new Job object, a client
issues a create request. A create request is any one of following three issues a create request. A create request is any one of following three
operation requests: operation requests:
- The Print-Job Request: A client that wants to submit a print job - 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 uses the Print-Job operation. The
operation allows for the client to "push" the document data to the operation allows for the client to "push" the document data to the
Printer object by including the document data in the request Printer object by including the document data in the request
itself. itself.
skipping to change at page 31, line 4 skipping to change at page 33, line 40
document data instead of the client "pushing" the data to the document data instead of the client "pushing" the data to the
Printer object) uses the Print-URI operation. In this case, the Printer object) uses the Print-URI operation. In this case, the
client includes in the request only a URI reference to the document client includes in the request only a URI reference to the document
data (not the document data itself). data (not the document data itself).
- The Create-Job Request: A client that wants to submit a print job - The Create-Job Request: A client that wants to submit a print job
with multiple documents uses the Create-Job operation. This with multiple documents uses the Create-Job operation. This
operation is followed by an arbitrary number of Send-Document operation is followed by an arbitrary number of Send-Document
and/or Send-URI operations (each creating another document for the and/or Send-URI operations (each creating another document for the
newly create Job object). The Send-Document operation includes the newly create Job object). The Send-Document operation includes the
Expires August 17, 1999
document data in the request (the client "pushes" the document data document data in the request (the client "pushes" the document data
to the printer), and the Send-URI operation includes only a URI to the printer), and the Send-URI operation includes only a URI
reference to the document data in the request (the Printer "pulls" reference to the document data in the request (the Printer "pulls"
the document data from the referenced location). The last Send- the document data from the referenced location). The last Send-
Document or Send-URI request for a given Job object includes a Document or Send-URI request for a given Job object includes a
"last-document" operation attribute set to 'true' indicating that "last-document" operation attribute set to 'true' indicating that
this is the last request. this is the last request.
Throughout this model specification, the term "create request" is used Throughout this model specification, the term "create request" is used
to refer to any of these three operation requests. to refer to any of these three operation requests.
A Create-Job operation followed by only one Send-Document operation is A Create-Job operation followed by only one Send-Document operation is
semantically equivalent to a Print-Job operation, however, for semantically equivalent to a Print-Job operation, however, for
performance reasons, the client SHOULD use the Print-Job operation for performance reasons, the client SHOULD use the Print-Job operation for
all single document jobs. Also, Print-Job is a REQUIRED operation (all all single document jobs. Also, Print-Job is a REQUIRED operation (all
implementations MUST support it) whereas Create-Job is an OPTIONAL implementations MUST support it) whereas Create-Job is an OPTIONAL
operation, hence some implementations might not support it. operation, hence some implementations might not support it.
Job submission time is the point in time when a client issues a create Job submission time is the point in time when a client issues a create
request. The initial state of every Job object is the 'pending' or request. The initial state of every Job object is the 'pending',
'pending-held' state. Later, the Printer object begins processing the 'pending-held', or 'processing' state (see section 4.3.7). Issue 13
print job. At this point in time, the Job object's state moves to
'processing'. This is known as job processing time. There are Expires November 10, 1999
validation checks that must be done at job submission time and others
that must be performed at job processing time. When the Printer object begins processing the print job, the Job
object's state moves to 'processing'. This is known as job 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 reject 1. Process the client supplied attributes and either accept or reject
the request the request
2. Validate the syntax of and support for the scheme of any client 2. Validate the syntax of and support for the scheme of any client
supplied URI supplied URI
At job submission time the Printer object MUST validate whether or not At job submission time the Printer object MUST validate whether or not
the supplied attributes, attribute syntaxes, and values are supported by the supplied attributes, attribute syntaxes, and values are supported by
matching them with the Printer object's corresponding "xxx-supported" matching them with the Printer object's corresponding "xxx-supported"
attributes. See section 3.2.1.2 for details. [IPP-IIG] presents attributes. See section 3.1.7 for details. [IPP-IIG] presents
suggested steps for an IPP object to either accept or reject any request suggested steps for an IPP object to either accept or reject any request
and additional steps for processing create requests. and additional steps for processing create requests.
At job submission time the Printer object NEED NOT perform the At job submission time the Printer object NEED NOT perform the
validation checks reserved for job processing time such as: validation checks reserved for job processing time such as:
1. Validating the document data 1. Validating the document data
2. Validating the actual contents of any client supplied URI (resolve 2. Validating the actual contents of any client supplied URI (resolve
the reference and follow the link to the document data) the reference and follow the link to the document data)
At job submission time, these additional job processing time validation At job submission time, these additional job processing time validation
checks are essentially useless, since they require actually parsing and checks are essentially useless, since they require actually parsing and
interpreting the document data, are not guaranteed to be 100% accurate, interpreting the document data, are not guaranteed to be 100% accurate,
and MUST be done, yet again, at job processing time. Also, in the case and MUST be done, yet again, at job processing time. Also, in the case
of a URI, checking for availability at job submission time does not of a URI, checking for availability at job submission time does not
Expires August 17, 1999
guarantee availability at job processing time. In addition, at job guarantee availability at job processing time. In addition, at job
processing time, the Printer object might discover any of the following processing time, the Printer object might discover any of the following
conditions that were not detectable at job submission time: conditions that were not detectable at job submission time:
- runtime errors in the document data, - runtime errors in the document data,
- nested document data that is in an unsupported format, - nested document data that is in an unsupported format,
- the URI reference is no longer valid (i.e., the server hosting the - the URI reference is no longer valid (i.e., the server hosting the
document might be down), or document might be down), or
- any other job processing error - any other job processing error
At job submission time, a Printer object, especially a non-spooling
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
MAY reject a new create request. In this case, a Printer object MUST
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 the
connection before receiving all bytes of the operation. When receiving a
'server-error-busy' status-code in an operation response, a client MUST
Expires November 10, 1999
be prepared for the Printer object to close the connection before the
client has sent all of the data (especially for the Print-Job
operation). A client MUST be prepared to keep submitting a create
request until the IPP Printer object accepts the create request. Issue
20
At job processing time, since the Printer object has already responded At job processing time, since the Printer object has already responded
with a successful status code in the response to the create request, if with a successful status code in the response to the create request, if
the Printer object detects an error, the Printer object is unable to the Printer object detects an error, the Printer object is unable to
inform the end user of the error with an operation status code. In inform the end user of the error with an operation status code. In
this case, the Printer, depending on the error, can set the "job-state", this case, the Printer, depending on the error, can set the job object's
"job-state-reasons", or "job-state-message" attributes to the "job-state", "job-state-reasons", or "job-state-message" attributes to
appropriate value(s) so that later queries can report the correct job the appropriate value(s) so that later queries can report the correct
status. job status.
Note: Asynchronous notification of events is outside the scope of this Note: Asynchronous notification of events is outside the scope of this
IPP/1.1 document. IPP/1.1 document.
3.2 Printer Operations 3.2 Printer Operations
All Printer operations are directed at Printer objects. A client MUST All Printer operations are directed at Printer objects. A client MUST
always supply the "printer-uri" operation attribute in order to identify always supply the "printer-uri" operation attribute in order to identify
the correct target of the operation. the correct target of the operation.
3.2.1 Print-Job Operation 3.2.1 Print-Job Operation
This REQUIRED operation allows a client to submit a print job with only This REQUIRED operation allows a client to submit a print job with only
one document and supply the document data (rather than just a reference one document and supply the document data (rather than just a reference
to the data). See Section 16 for the suggested steps for processing to the data). See Section 15 for the suggested steps for processing
create operations and their Operation and Job Template attributes. create operations and their Operation and Job Template attributes.
3.2.1.1 Print-Job Request 3.2.1.1 Print-Job Request
The following groups of attributes are supplied as part of the Print-Job The following groups of attributes are supplied as part of the Print-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. The Printer object attributes as described in section 3.1.4.1. The Printer object
MUST copy these values to the corresponding Job Description MUST copy these values to the corresponding Job Description
attributes described in sections 4.3.23 and 4.3.24. attributes described in sections 4.3.17 and 4.3.18.
Target: Target:
The "printer-uri" (uri) operation attribute which is the target for The "printer-uri" (uri) operation attribute which is the target for
this operation as described in section 3.1.5. this operation as described in section 3.1.5.
Expires August 17, 1999
Requesting User Name: Requesting User Name:
The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied
by the client as described in section 8.3. by the client as described in section 8.3.
Expires November 10, 1999
"job-name" (name(MAX)): "job-name" (name(MAX)):
The client OPTIONALLY supplies this attribute. The Printer object The client OPTIONALLY supplies this attribute. The Printer object
MUST support this attribute. It contains the client supplied Job MUST support this attribute. It contains the client supplied Job
name. If this attribute is supplied by the client, its value is name. If this attribute is supplied by the client, its value is
used for the "job-name" attribute of the newly created Job object. used for the "job-name" attribute of the newly created Job object.
The client MAY automatically include any information that will help The client MAY automatically include any information that will help
the end-user distinguish amongst his/her jobs, such as the name of the end-user distinguish amongst his/her jobs, such as the name of
the application program along with information from the document, the application program along with information from the document,
such as the document name, document subject, or source file name. such as the document name, document subject, or source file name.
If this attribute is not supplied by the client, the Printer If this attribute is not supplied by the client, the Printer
skipping to change at page 33, line 32 skipping to change at page 36, line 28
"ipp-attribute-fidelity" (boolean): "ipp-attribute-fidelity" (boolean):
The client OPTIONALLY supplies this attribute. The Printer object The client OPTIONALLY supplies this attribute. The Printer object
MUST support this attribute. The value 'true' indicates that total MUST support this attribute. The value 'true' indicates that total
fidelity to client supplied Job Template attributes and values is fidelity to client supplied Job Template attributes and values is
required, else the Printer object MUST reject the Print-Job required, else the Printer object MUST reject the Print-Job
request. The value 'false' indicates that a reasonable attempt to request. The value 'false' indicates that a reasonable attempt to
print the Job object is acceptable and the Printer object MUST print the Job object is acceptable and the Printer object MUST
accept the Print-job request. If not supplied, the Printer object accept the Print-job request. If not supplied, the Printer object
assumes the value is 'false'. All Printer objects MUST support assumes the value is 'false'. All Printer objects MUST support
both types of job processing. See section 16 for a full both types of job processing. See section 15 for a full
description of "ipp-attribute-fidelity" and its relationship to description of "ipp-attribute-fidelity" and its relationship to
other attributes, especially the Printer object's "pdl-override- other attributes, especially the Printer object's "pdl-override-
supported" attribute. supported" attribute.
"document-name" (name(MAX)): "document-name" (name(MAX)):
The client OPTIONALLY supplies this attribute. The Printer object The client OPTIONALLY supplies this attribute. The Printer object
MUST support this attribute. It contains the client supplied MUST support this attribute. It contains the client supplied
document name. The document name MAY be different than the Job document name. The document name MAY be different than the Job
name. Typically, the client software automatically supplies the name. Typically, the client software automatically supplies the
document name on behalf of the end user by using a file name or an document name on behalf of the end user by using a file name or an
application generated name. If this attribute is supplied, its application generated name. If this attribute is supplied, its
value can be used in a manner defined by each implementation. value can be used in a manner defined by each implementation.
Examples include: printed along with the Job (job start sheet, page Examples include: printed along with the Job (job start sheet, page
adornments, etc.), used by accounting or resource tracking adornments, etc.), used by accounting or resource tracking
management tools, or even stored along with the document as a 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 attribute. IPP/1.1 does not support the concept of
document level attributes. document level attributes.
"compression" (type3 keyword)
The client OPTIONALLY supplies this attribute. The Printer object
MUST support this attribute and the "compression-supported"
attribute (see section 4.4.32). The client supplied "compression"
operation attribute identifies the compression algorithm used on
the document data. The following cases exist:
a)If the client omits this attribute, the Printer object MUST
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
Expires November 10, 1999
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
supports the attribute value, the Printer object uses the
corresponding decompression algorithm on the document data.
d)If the decompression algorithm fails before the Printer
returns an operation response, the Printer object 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 object 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 (q.v.). Issue 28
"document-format" (mimeMediaType) : "document-format" (mimeMediaType) :
The client OPTIONALLY supplies this attribute. The Printer object The client OPTIONALLY supplies this attribute. The Printer object
MUST support this attribute. The value of this attribute MUST support this attribute. The value of this attribute
identifies the format of the supplied document data. If the client identifies the format of the supplied document data. The following
does not supply this attribute, the Printer object assumes that the cases exist:
document data is in the format defined by the Printer object's a)If the client does not supply this attribute, the Printer
"document-format-default" attribute. If the client supplies this object assumes that the document data is in the format
attribute, but the value is not supported by the Printer object, defined by the Printer object's "document-format-default"
i.e., the value is not one of the values of the Printer object's attribute. (i.e. the Printer follows the rules below as if
the client supplied the "document-format" attribute with a
Expires August 17, 1999 value equal to the printer's default value).
"document-format-supported" attribute, the Printer object MUST b)If the client supplies this attribute, but the value is not
reject the request and return the 'client-error-document-format- supported by the Printer object, i.e., the value is not one
not-supported' status code. 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 document data, the
Printer is capable of interpreting the document data.
e)If interpreting of the document data fails before the
Printer returns an operation response, the Printer object
MUST reject the request and return the 'client-error-
document-format-error' status code.
f)If interpreting of the document data fails after the
Printer returns an operation response, the Printer object
MUST abort the job and add the 'document-format-error'
value to the job's "job-state-reasons" attribute. Issue 11
Expires November 10, 1999
"document-natural-language" (naturalLanguage): "document-natural-language" (naturalLanguage):
The client OPTIONALLY supplies this attribute. The Printer object The client OPTIONALLY supplies this attribute. The Printer object
OPTIONALLY supports this attribute. This attribute specifies the OPTIONALLY supports this attribute. This attribute specifies the
natural language of the document for those document-formats that natural language of the document for those document-formats that
require a specification of the natural language in order to image require a specification of the natural language in order to image
the document unambiguously. There are no particular values required the document unambiguously. There are no particular values required
for the Printer object to support. for the Printer object to support.
"compression" (type3 keyword)
The client OPTIONALLY supplies this attribute. The Printer object
OPTIONALLY supports this attribute and the "compression-supported"
attribute (see section 4.4.29). The client supplied "compression"
operation attribute identifies the compression algorithm used on
the document data. If the client omits this attribute, the Printer
object MUST assume that the data is not compressed. If the client
supplies the attribute and the Printer object supports the
attribute, the Printer object uses the corresponding decompression
algorithm on the document data. 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 copy the
attribute and its value to the Unsupported Attributes response
group, reject the request, and return the 'client-error-attributes-
or-values-not-supported' status code. If the client supplies this
attribute, but this attribute is not supported by the Printer
object, i.e., the "compression-supported" attribute is not one of
the Printer's Printer Description attributes, the Printer object
MUST copy the attribute to the Unsupported Attributes response
group changing the value to the out-of-band 'unsupported' value
(see section 4.1), reject the request, and return the 'client-
error-attributes-or-values-not-supported' status code. See section
3.2.1.2 for returning unsupported attributes and values.
"job-k-octets" (integer(0:MAX)) "job-k-octets" (integer(0:MAX))
The client OPTIONALLY supplies this attribute. The Printer object The client OPTIONALLY supplies this attribute. The Printer object
OPTIONALLY supports this attribute and the "job-k-octets-supported" OPTIONALLY supports this attribute and the "job-k-octets-supported"
attribute (see section 4.4.30). The client supplied "job-k-octets" attribute (see section 4.4.33). The client supplied "job-k-octets"
operation attribute identifies the total size of the document(s) in operation attribute identifies the total size of the document(s) in
K octets being submitted (see section 4.3.17 for the complete K octets being submitted (see section 4.3.15.1 for the complete
semantics). If the client supplies the attribute and the Printer semantics). If the client supplies the attribute and the Printer
object supports the attribute, the value of the attribute is used object supports the attribute, the value of the attribute is used
to populate the Job object's "job-k-octets" Job Description to populate the Job object's "job-k-octets" Job Description
attribute. attribute.
Note: For this attribute and the following two attributes ("job- Note: For this attribute and the following two attributes ("job-
impressions", and "job-media-sheets"), if the client supplies the impressions", and "job-media-sheets"), if the client supplies the
attribute, but the Printer object does not support the attribute, attribute, but the Printer object does not support the attribute,
the Printer object ignores the client-supplied value. If the the Printer object ignores the client-supplied value. If the
client supplies the attribute and the Printer supports the client supplies the attribute and the Printer supports the
attribute, and the value is within the range of the corresponding attribute, and the value is within the range of the corresponding
Expires August 17, 1999
Printer object's "xxx-supported" attribute, the Printer object MUST Printer object's "xxx-supported" attribute, the Printer object MUST
use the value to populate the Job object's "xxx" attribute. If the use the value to populate the Job object's "xxx" attribute. If the
client supplies the attribute and the Printer supports the client supplies the attribute and the Printer supports the
attribute, but the value is outside the range of the corresponding attribute, but the value is outside the range of the corresponding
Printer object's "xxx-supported" attribute, the Printer object MUST Printer object's "xxx-supported" attribute, the Printer object MUST
copy the attribute and its value to the Unsupported Attributes copy the attribute and its value to the Unsupported Attributes
response group, reject the request, and return the 'client-error- response group, reject the request, and return the 'client-error-
attributes-or-values-not-supported' status code. If the client attributes-or-values-not-supported' status code. If the client
does not supply the attribute, the Printer object MAY choose to does not supply the attribute, the Printer object MAY choose to
populate the corresponding Job object attribute depending on populate the corresponding Job object attribute depending on
whether the Printer object supports the attribute and is able to whether the Printer object supports the attribute and is able to
calculate or discern the correct value. 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 The client OPTIONALLY supplies this attribute. The Printer object
OPTIONALLY supports this attribute and the "job-impressions- OPTIONALLY supports this attribute and the "job-impressions-
supported" attribute (see section 4.4.31). The client supplied supported" attribute (see section 4.4.34). The client supplied
"job-impressions" operation attribute identifies the total size in "job-impressions" operation attribute identifies the total size in
number of impressions of the document(s) being submitted (see number of impressions of the document(s) being submitted (see
section 4.3.18 for the complete semantics). section 4.3.15.2 for the complete semantics).
See note under "job-k-octets". See note 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 The client OPTIONALLY supplies this attribute. The Printer object
OPTIONALLY supports this attribute and the "job-media-sheets- OPTIONALLY supports this attribute and the "job-media-sheets-
supported" attribute (see section 4.4.32). The client supplied supported" attribute (see section 4.4.35). The client supplied
"job-media-sheets" operation attribute identifies the total number "job-media-sheets" operation attribute identifies the total number
of media sheets to be produced for this job (see section 4.3.19 for
the complete semantics). Expires November 10, 1999
of media sheets to be produced for this job (see section 4.3.15.3
for the complete semantics).
See note under "job-k-octets". See note 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 OPTIONALLY supplies a set of Job Template attributes as
defined in section 4.2. If the client is not supplying any Job defined in section 4.2. If the client is not supplying any Job
Template attributes in the request, the client SHOULD omit Group 2 Template attributes in the request, the client SHOULD omit Group 2
rather than sending an empty group. However, a Printer object MUST rather than sending an empty group. However, a Printer object MUST
be able to accept an empty group. be able to accept an empty group.
skipping to change at page 36, line 4 skipping to change at page 39, line 31
The client MUST supply the document data to be processed. The client MUST supply the document data to be processed.
Note: In addition to the MANDATORY parameters required for every Note: In addition to the MANDATORY parameters required for every
operation request, the simplest Print-Job Request consists of just the operation request, the simplest Print-Job Request consists of just the
"attributes-charset" and "attributes-natural-language" operation "attributes-charset" and "attributes-natural-language" operation
attributes; the "printer-uri" target operation attribute; the Document attributes; the "printer-uri" target operation attribute; the Document
Content and nothing else. In this simple case, the Printer object: Content and nothing else. In this simple case, the Printer object:
- creates a new Job object (the Job object contains a single - creates a new Job object (the Job object contains a single
document), document),
Expires August 17, 1999
- stores a generated Job name in the "job-name" attribute in the - stores a generated Job name in the "job-name" attribute in the
natural language and charset requested (see Section 3.1.4.1) (if natural language and charset requested (see Section 3.1.4.1) (if
those are supported, otherwise using the Printer object's default those are supported, otherwise using the Printer object's default
natural language and charset), and natural language and charset), and
- at job processing time, uses its corresponding default value - at job processing time, uses its corresponding default value
attributes for the supported Job Template attributes that were not attributes for the supported Job Template attributes that were not
supplied by the client as IPP attribute or embedded instructions in supplied by the client as IPP attribute or embedded instructions in
the document data. the document data.
3.2.1.2 Print-Job Response 3.2.1.2 Print-Job Response
The Printer object MUST return to the client the following sets of The Printer object 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
Status Message: Status Message:
In addition to the REQUIRED status code returned in every response, In addition to the REQUIRED status code returned in every response,
the response OPTIONALLY includes a "status-message" (text) the response OPTIONALLY includes a "status-message" (text)
operation attribute as described in sections 14 and 3.1.6. If the operation attribute as described in sections 13 and 3.1.6. If the
client supplies unsupported or conflicting Job Template attributes client supplies unsupported or conflicting Job Template attributes
or values, the Printer object MUST reject or accept the Print-Job or values, the Printer object MUST reject or accept the Print-Job
request depending on the whether the client supplied a 'true' or request depending on the whether the client supplied a 'true' or
'false' value for the "ipp-attribute-fidelity" operation attribute. 'false' value for the "ipp-attribute-fidelity" operation attribute.
See the Implementer's Guide [IPP-IIG] for a complete description of See the Implementer's Guide [IPP-IIG] for a complete description of
the suggested steps for processing a create request. the suggested steps for processing a create request.
Expires November 10, 1999
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.2. attributes as described in section 3.1.4.2.
Group 2: Unsupported Attributes Group 2: Unsupported Attributes
This is a set of Operation and Job Template attributes supplied by See section 3.1.7 for details on returning Unsupported Attributes.
the client (in the request) that are not supported by the Printer
object or that conflict with one another (see the Implementer's
Guide [IPP-IIG]). If the Printer object is not returning any
Unsupported Attributes in the response, the Printer object SHOULD
omit Group 2 rather than sending an empty group. However, a client
MUST be able to accept an empty group.
Unsupported attributes fall into three categories:
1. The Printer object does not support the supplied attribute (no
matter what the attribute syntax or value).
2. The Printer object does support the attribute, but does not
support some or all of the particular attribute syntaxes or
values supplied by the client (i.e., the Printer object does
not have those attribute syntaxes or values in its
corresponding "xxx-supported" attribute).
3. The Printer object does support the attributes and values
supplied, but the particular values are in conflict with one
Expires August 17, 1999
another, because they violate a constraint, such as not being
able to staple transparencies.
In the case of an unsupported attribute name, the Printer object
returns the client-supplied attribute with a substituted "out-of-
band" value of 'unsupported' indicating no support for the
attribute itself (see the beginning of section 4.1).
In the case of a supported attribute with one or more unsupported
attribute syntaxes or values, the Printer object simply returns the
client-supplied attribute with the unsupported attribute syntaxes
or values as supplied by the client. This indicates support for
the attribute, but no support for that particular attribute syntax
or value. If the client supplies a multi-valued attribute with
more than one value and the Printer object supports the attribute
but only supports a subset of the client-supplied attribute
syntaxes or values, the Printer object MUST return only those
attribute syntaxes or values that are unsupported.
In the case of two (or more) supported attribute values that are in
conflict with one another (although each is supported
independently, the values conflict when requested together within
the same job), the Printer object MUST return all the values that
it ignores or substitutes to resolve the conflict, but not any of
the values that it is still using. The choice for exactly how to
resolve the conflict is implementation dependent. See The
Implementer's Guide [IPP-IIG] for an example.
In these three cases, the value of the "ipp-attribute-fidelity" The value of the "ipp-attribute-fidelity" supplied by the client
supplied by the client does not affect what the Printer object does not affect what attributes the Printer object returns in this
returns. The value of "ipp-attribute-fidelity" only affects group. The value of "ipp-attribute-fidelity" only affects whether
whether the Print-Job operation is accepted or rejected. If the the Print-Job operation is accepted or rejected. If the job is
job is accepted, the client may query the job using the Get-Job- accepted, the client may query the job using the Get-Job-Attributes
Attributes operation requesting the unsupported attributes that operation requesting the unsupported attributes that were returned
were returned in the create response to see which attributes were in the create response to see which attributes were ignored (not
ignored (not stored on the Job object) and which attributes were stored on the Job object) and which attributes were stored with
stored with other (substituted) values. other (substituted) values.
Group 3: Job Object Attributes Group 3: Job Object Attributes
"job-uri" (uri): "job-uri" (uri):
The Printer object MUST return the Job object's URI by returning The Printer object MUST return the Job object's URI by returning
the contents of the REQUIRED "job-uri" Job object attribute. The the contents of the REQUIRED "job-uri" Job object attribute. The
client uses the Job object's URI when directing operations at the client uses the Job object's URI when directing operations at the
Job object. The Printer object always uses its configured security Job object. The Printer object always uses its configured security
policy when creating the new URI. However, if the Printer object policy when creating the new URI. However, if the Printer object
supports more than one URI, the Printer object also uses supports more than one URI, the Printer object also uses
information about which URI was used in the Print-Job Request to information about which URI was used in the Print-Job Request to
generated the new URI so that the new URI references the correct generated the new URI so that the new URI references the correct
access channel. In other words, if the Print-Job Request comes in access channel. In other words, if the Print-Job Request comes in
over a secure channel, the Printer object MUST generate a Job URI over a secure channel, the Printer object MUST generate a Job URI
that uses the secure channel as well. that uses the secure channel as well.
Expires August 17, 1999
"job-id" (integer(1:MAX)): "job-id" (integer(1:MAX)):
The Printer object MUST return the Job object's Job ID by returning The Printer object MUST return the Job object's Job ID by returning
the REQUIRED "job-id" Job object attribute. The client uses this the REQUIRED "job-id" Job object attribute. The client uses this
"job-id" attribute in conjunction with the "printer-uri" attribute "job-id" attribute in conjunction with the "printer-uri" attribute
used in the Print-Job Request when directing Job operations at the used in the Print-Job Request when directing Job operations at the
Printer object. Printer object.
"job-state": "job-state":
The Printer object MUST return the Job object's REQUIRED "job- The Printer object MUST return the Job object's REQUIRED "job-
state" attribute. The value of this attribute (along with the value state" attribute. The value of this attribute (along with the value
of the next attribute "job-state-reasons") is taken from a of the next attribute: "job-state-reasons") is taken from a
"snapshot" of the new Job object at some meaningful point in time "snapshot" of the new Job object at some meaningful point in time
(implementation defined) between when the Printer object receives (implementation defined) between when the Printer object receives
the Print-Job Request and when the Printer object returns the the Print-Job Request and when the Printer object returns the
response. response.
"job-state-reasons": "job-state-reasons":
The Printer object OPTIONALLY returns the Job object's OPTIONAL The Printer object MUST return the Job object's REQUIRED "job-
"job-state-reasons" attribute. If the Printer object supports this state-reasons" attribute. . Issue 30
attribute then it MUST be returned in the response. If this
attribute is not returned in the response, the client can assume
that the "job-state-reasons" attribute is not supported and will
not be returned in a subsequent Job object query.
Expires November 10, 1999
"job-state-message": "job-state-message":
The Printer object OPTIONALLY returns the Job object's OPTIONAL The Printer object OPTIONALLY returns the Job object's OPTIONAL
"job-state-message" attribute. If the Printer object supports this "job-state-message" attribute. If the Printer object supports this
attribute then it MUST be returned in the response. If this attribute then it MUST be returned in the response. If this
attribute is not returned in the response, the client can assume attribute is not returned in the response, the client can assume
that the "job-state-message" attribute is not supported and will that the "job-state-message" attribute is not supported and will
not be returned in a subsequent Job object query. not be returned in a subsequent Job object query.
"number-of-intervening-jobs": "number-of-intervening-jobs":
The Printer object OPTIONALLY returns the Job object's OPTIONAL The Printer object OPTIONALLY returns the Job object's OPTIONAL
skipping to change at page 38, line 56 skipping to change at page 41, line 32
Note: Since any printer state information which affects a job's Note: Since any printer state information which affects a job's
state is reflected in the "job-state" and "job-state-reasons" state is reflected in the "job-state" and "job-state-reasons"
attributes, it is sufficient to return only these attributes and no attributes, it is sufficient to return only these attributes and no
specific printer status attributes. specific printer status attributes.
Note: In addition to the MANDATORY parameters required for every Note: In addition to the MANDATORY parameters required for every
operation response, the simplest response consists of the just the operation response, the simplest response consists of the just the
"attributes-charset" and "attributes-natural-language" operation "attributes-charset" and "attributes-natural-language" operation
attributes and the "job-uri", "job-id", and "job-state" Job Object attributes and the "job-uri", "job-id", and "job-state" Job Object
Attributes. In this simplest case, the status code is "successful-ok" Attributes. In this simplest case, the status code is 'successful-ok'
and there is no "status-message" operation attribute. and there is no "status-message" operation attribute.
Expires August 17, 1999
3.2.2 Print-URI Operation 3.2.2 Print-URI Operation
This OPTIONAL operation is identical to the Print-Job operation (section This OPTIONAL operation is identical to the Print-Job operation (section
3.2.1) except that a client supplies a URI reference to the document 3.2.1) except that a client supplies a URI reference to the document
data using the "document-uri" (uri) operation attribute (in Group 1) data using the "document-uri" (uri) operation attribute (in Group 1)
rather than including the document data itself. Before returning the rather than including the document data itself. Before returning the
response, the Printer MUST validate that the Printer supports the response, the Printer MUST validate that the Printer supports the
retrieval method (e.g., http, ftp, etc.) implied by the URI, and MUST retrieval method (e.g., http, ftp, etc.) implied by the URI, and MUST
check for valid URI syntax. If the client-supplied URI scheme is not check for valid URI syntax. If the client-supplied URI scheme is not
supported, i.e. the value is not in the Printer object's "referenced- supported, i.e. the value is not in the Printer object's "referenced-
uri-scheme-supported" attribute, the Printer object MUST reject the uri-scheme-supported" attribute, the Printer object MUST reject the
request and return the 'client-error-uri-scheme-not-supported' status request and return the 'client-error-uri-scheme-not-supported' status
code. See The Implementer's Guide [IPP-IIG] for suggested additional code.
checks. The Printer NEED NOT follow the reference and validate the
contents of the reference. The IPP Printer MAY validate the accessibility of the document as part
of the operation or subsequently. If the Printer determines an
accessibility problem before returning an operation response, it rejects
the request and returns the 'client-error-document-access-error' status
code. If the Printer determines this accessibility problem after
accepting the request and returning an operation response with one of
the successful status codes, the Printer adds the 'document-access-
error' value to the job's "job-state-reasons" attribute. See The
Implementer's Guide [IPP-IIG] for suggested additional checks. Issue
35
Expires November 10, 1999
If the Printer object supports this operation, it MUST support the If the Printer object supports this operation, it MUST support the
"reference-uri-schemes-supported" Printer attribute (see section "reference-uri-schemes-supported" Printer attribute (see section
4.4.24). 4.4.27).
It is up to the IPP object to interpret the URI and subsequently "pull" It is up to the IPP object to interpret the URI and subsequently "pull"
the document from the source referenced by the URI string. the document from the source referenced by the URI string.
3.2.3 Validate-Job Operation 3.2.3 Validate-Job Operation
This REQUIRED operation is similar to the Print-Job operation (section This REQUIRED operation is similar to the Print-Job operation (section
3.2.1) except that a client supplies no document data and the Printer 3.2.1) except that a client supplies no document data and the Printer
allocates no resources (i.e., it does not create a new Job object). allocates no resources (i.e., it does not create a new Job object).
This operation is used only to verify capabilities of a printer object This operation is used only to verify capabilities of a printer object
skipping to change at page 40, line 4 skipping to change at page 42, line 44
The Printer object returns the same status codes, Operation Attributes The Printer object returns the same status codes, Operation Attributes
(Group 1) and Unsupported Attributes (Group 2) as the Print-Job (Group 1) and Unsupported Attributes (Group 2) as the Print-Job
operation. However, no Job Object Attributes (Group 3) are returned, operation. However, no Job Object Attributes (Group 3) are returned,
since no Job object is created. since no Job object is created.
3.2.4 Create-Job Operation 3.2.4 Create-Job Operation
This OPTIONAL operation is similar to the Print-Job operation (section This OPTIONAL operation is similar to the Print-Job operation (section
3.2.1) except that in the Create-Job request, a client does not supply 3.2.1) except that in the Create-Job request, a client does not supply
document data or any reference to document data. Also, the client does document data or any reference to document data. Also, the client does
Expires August 17, 1999
not supply any of the "document-name", "document-format", "compression", not supply any of the "document-name", "document-format", "compression",
or "document-natural-language" operation attributes. This operation is or "document-natural-language" operation attributes. This operation is
followed by one or more Send-Document or Send-URI operations. In each followed by one or more Send-Document or Send-URI operations. In each
of those operation requests, the client OPTIONALLY supplies the of those operation requests, the client OPTIONALLY supplies the
"document-name", "document-format", and "document-natural-language" "document-name", "document-format", and "document-natural-language"
attributes for each document in the multi-document Job object. attributes for each document in the multi-document Job object.
If a Printer object supports the Create-Job operation, it MUST also If a Printer object supports the Create-Job operation, it MUST also
support the Send-Document operation and also MAY support the Send-URI support the Send-Document operation and also MAY support the Send-URI
operation. operation.
If the Printer object supports this operation, it MUST support the If the Printer object supports this operation, it MUST support the
"multiple-operation-time-out" Printer attribute (see section 4.4.28). "multiple-operation-time-out" Printer attribute (see section 4.4.31).
If the Printer object supports this operation, then it MUST support the
"multiple-document-jobs-supported" Printer Description attribute and
indicate whether or not it supports multiple-document jobs. Issue 34
Expires November 10, 1999
If the Printer object supports this operation and supports multiple
documents in a job, then it MUST support the "multiple-document-
handling" Job Template job attribute with at least one value (see
section 4.2.4) and the associated "multiple-document-handling-default"
and "multiple-document-handling-supported" Job Template Printer
attributes. Issue 34
After the Create-Job operation has completed, the value of the "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 'job-data-
insufficient' value of the job's "job-state-reason" attribute to
indicate that processing cannot begin until sufficient data has arrived
and set the "job-state" to either 'pending' or 'pending-held'. A non-
spooling printer that doesn't implement the 'pending' job state may even
set the "job-state" to 'processing', even though there is not yet any
data to process. Issue 13
3.2.5 Get-Printer-Attributes Operation 3.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 object. In the request, the client supplies
the set of Printer attribute names and/or attribute group names in which the set of Printer attribute names and/or attribute group names in which
the requester is interested. In the response, the Printer object the requester is interested. In the response, the Printer object
returns a corresponding attribute set with the appropriate attribute returns a corresponding attribute set with the appropriate attribute
values filled in. values filled in.
For Printer objects, the possible names of attribute groups are: For Printer objects, the possible names of attribute groups are:
- 'job-template': all of the Job Template attributes that apply to a - 'job-template': the subset of the Job Template attributes that
Printer object (the last two columns of the table in Section 4.2). apply to a Printer object (the last two columns of the table in
- 'printer-description': the attributes specified in Section 4.4. Section 4.2) that the implementation supports for Printer objects.
- 'all': the special group 'all' that includes all supported - 'printer-description': the subset of the attributes specified in
attributes. Section 4.4 that the implementation supports for Printer objects.
- 'all': the special group 'all' that includes all attributes that
the implementation supports for Printer objects. Issue 23
Since a client MAY request specific attributes or named groups, there is Since a client MAY request specific attributes or named groups, there is
a potential that there is some overlap. For example, if a client a potential that there is some overlap. For example, if a client
requests, 'printer-name' and 'all', the client is actually requesting 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 object once by inclusion in the 'all' group. In such cases, the Printer object
NEED NOT return each attribute only once in the response even if it is NEED NOT return each attribute only once in the response even if it is
requested multiple times. The client SHOULD NOT request the same requested multiple times. The client SHOULD NOT request the same
attribute in multiple ways. attribute in multiple ways.
It is NOT REQUIRED that a Printer object support all attributes It is NOT REQUIRED that a Printer object support all attributes
belonging to a group (since some attributes are OPTIONAL). However, it belonging to a group (since some attributes are OPTIONAL). However, it
is REQUIRED that each Printer object support all group names. is REQUIRED that each Printer object support all group names.
3.2.5.1 Get-Printer-Attributes Request 3.2.5.1 Get-Printer-Attributes Request
The following sets of attributes are part of the Get-Printer-Attributes The following sets of attributes are part of the Get-Printer-Attributes
Request: Request:
Expires November 10, 1999
Group 1: Operation Attributes Group 1: Operation Attributes
Expires August 17, 1999
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 3.1.4.1.
Target: Target:
The "printer-uri" (uri) operation attribute which is the target for The "printer-uri" (uri) operation attribute which is the target for
this operation as described in section 3.1.5. this operation as described in section 3.1.5.
Requesting User Name: Requesting User Name:
The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied
skipping to change at page 41, line 57 skipping to change at page 45, line 5
If the Printer object does not distinguish between different sets If the Printer object does not distinguish between different sets
of supported values for each different document format when of supported values for each different document format when
validating jobs in the create and Validate-Job operations, it MUST validating jobs in the create and Validate-Job operations, it MUST
NOT distinguish between different document formats in the Get- NOT distinguish between different document formats in the Get-
Printer-Attributes operation. If the Printer object does Printer-Attributes operation. If the Printer object does
distinguish between different sets of supported values for each distinguish between different sets of supported values for each
different document format specified by the client, this different document format specified by the client, this
specialization applies only to the following Printer object specialization applies only to the following Printer object
attributes: attributes:
Expires November 10, 1999
- 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 4.2),
Expires August 17, 1999
- "pdl-override-supported", - "pdl-override-supported",
- "compression-supported", - "compression-supported",
- "job-k-octets-supported", - "job-k-octets-supported",
- "job-impressions-supported, - "job-impressions-supported,
- "job-media-sheets-supported" - "job-media-sheets-supported"
- "printer-driver-installer", - "printer-driver-installer",
- "color-supported", and - "color-supported", and
- "reference-uri-schemes-supported" - "reference-uri-schemes-supported"
The values of all other Printer object attributes (including The values of all other Printer object attributes (including
skipping to change at page 42, line 47 skipping to change at page 45, line 50
3.2.5.2 Get-Printer-Attributes Response 3.2.5.2 Get-Printer-Attributes Response
The Printer object returns the following sets of attributes as part of The Printer object returns the following sets of attributes as part of
the Get-Printer-Attributes Response: the Get-Printer-Attributes Response:
Group 1: Operation Attributes Group 1: Operation Attributes
Status Message: Status Message:
In addition to the REQUIRED status code returned in every response, In addition to the REQUIRED status code returned in every response,
the response OPTIONALLY includes a "status-message" (text) the response OPTIONALLY includes a "status-message" (text)
operation attribute as described in section 3.1.6. operation attribute as described in sections 13 and 3.1.6.
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.2. attributes as described in section 3.1.4.2.
Group 2: Unsupported Attributes Group 2: Unsupported Attributes
This is a set of Operation attributes supplied by the client (in See section 3.1.7 for details on returning Unsupported Attributes.
the request) that are not supported by the Printer object or that
conflict with one another (see sections 3.2.1.2 and 16). The
response NEED NOT contain the "requested-attributes" operation
Expires August 17, 1999 Expires November 10, 1999
The response NEED NOT 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 IPP object. If
If the Printer object is not returning any Unsupported Attributes the Printer does include unsupported attributes referenced in
in the response, the Printer object SHOULD omit Group 2 rather than "requested-attributes" and such attributes include group names,
sending an empty group. However, a client MUST be able to accept such as 'all', the unsupported attributes MUST NOT include
an empty group. attributes described in the standard but not supported by the
implementation. Issue 23
Group 3: Printer Object Attributes Group 3: Printer Object 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 object ignores (does not respond with) any requested
attribute which is not supported. The Printer object MAY respond attribute which is not supported. The Printer object MAY respond
with a subset of the supported attributes and values, depending on with a subset of the supported attributes and values, depending on
the security policy in force. However, the Printer object MUST the security policy in force. However, the Printer object MUST
respond with the 'unknown' value for any supported attribute respond with the 'unknown' value for any supported attribute
(including all REQUIRED attributes) for which the Printer object (including all REQUIRED attributes) for which the Printer object
skipping to change at page 44, line 5 skipping to change at page 47, line 5
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 3.1.4.1.
Target: Target:
The "printer-uri" (uri) operation attribute which is the target for The "printer-uri" (uri) operation attribute which is the target for
this operation as described in section 3.1.5. this operation as described in section 3.1.5.
Expires August 17, 1999 Expires November 10, 1999
Requesting User Name: Requesting User Name:
The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied
by the client as described in section 8.3. by the client as described in section 8.3.
"limit" (integer(1:MAX)): "limit" (integer(1:MAX)):
The client OPTIONALLY supplies this attribute. The Printer object The client OPTIONALLY supplies this attribute. The Printer object
MUST support this attribute. It is an integer value that indicates MUST support this attribute. It is an integer value that determines
a limit to the number of Job objects returned. The limit is a the maximum number of jobs that a client will receive from the
"stateless limit" in that if the value supplied by the client is Printer even if "which-jobs" or "my-jobs" constrain which jobs are
'N', then only the first 'N' jobs are returned in the Get-Jobs returned. The limit is a "stateless limit" in that if the value
Response. There is no mechanism to allow for the next 'M' jobs supplied by the client is 'N', then only the first 'N' jobs are
after the first 'N' jobs. If the client does not supply this returned in the Get-Jobs Response. There is no mechanism to allow
attribute, the Printer object responds with all applicable jobs. for the next 'M' jobs after the first 'N' jobs. If the client does
not supply this attribute, the Printer object responds with all
applicable jobs. Issue 8
"requested-attributes" (1setOf keyword): "requested-attributes" (1setOf keyword):
The client OPTIONALLY supplies this attribute. The Printer object The client OPTIONALLY supplies this attribute. The Printer object
MUST support this attribute. It is a set of Job attribute names MUST support this attribute. It is a set of Job attribute names
and/or attribute groups names in whose values the requester is and/or attribute groups names in whose values the requester is
interested. This set of attributes is returned for each Job object interested. This set of attributes is returned for each Job object
that is returned. The allowed attribute group names are the same that is returned. The allowed attribute group names are the same
as those defined in the Get-Job-Attributes operation in section as those defined in the Get-Job-Attributes operation in section
3.3.4. If the client does not supply this attribute, the Printer 3.3.4. If the client does not supply this attribute, the Printer
MUST respond as if the client had supplied this attribute with two MUST respond as if the client had supplied this attribute with two
skipping to change at page 44, line 57 skipping to change at page 48, line 5
If a client supplies some other value, the Printer object MUST copy If a client supplies some other value, the Printer object MUST copy
the attribute and the unsupported value to the Unsupported the attribute and the unsupported value to the Unsupported
Attributes response group, reject the request, and return the Attributes response group, reject the request, and return the
'client-error-attributes-or-values-not-supported' status code. 'client-error-attributes-or-values-not-supported' status code.
If the client does not supply this attribute, 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 MUST respond as if the client had supplied the attribute with a
value of 'not-completed'. value of 'not-completed'.
Expires November 10, 1999
"my-jobs" (boolean): "my-jobs" (boolean):
The client OPTIONALLY supplies this attribute. The Printer object The client OPTIONALLY supplies this attribute. The Printer object
MUST support this attribute. It indicates whether all jobs or just MUST support this attribute. It indicates whether jobs from all
users or just the jobs submitted by the requesting user of this
Expires August 17, 1999 request MUST be returned by the Printer object. If the client does
the jobs submitted by the requesting user of this request MUST be not supply this attribute, the Printer object MUST respond as if
returned by the Printer object. If the client does not supply this the client had supplied the attribute with a value of 'false',
attribute, the Printer object MUST respond as if the client had i.e., jobs from all users. The means for authenticating the
supplied the attribute with a value of 'false', i.e., all jobs. requesting user and matching the jobs is described in section 8.
The means for authenticating the requesting user and matching the
jobs is described in section 8.
3.2.6.2 Get-Jobs Response 3.2.6.2 Get-Jobs Response
The Printer object returns all of the Job objects that match the The Printer object returns all of the Job objects up to the number
criteria as defined by the attribute values supplied by the client in specified by the "limit" attribute that match the criteria as defined by
the request. It is possible that no Job objects are returned since the attribute values supplied by the client in the request. It is
there may literally be no Job objects at the Printer, or there may be no possible that no Job objects are returned since there may literally be
Job objects that match the criteria supplied by the client. If the no Job objects at the Printer, or there may be no Job objects that match
client requests any Job attributes at all, there is a set of Job Object the criteria supplied by the client. If the client requests any Job
Attributes returned for each Job object. 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
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'. Issue 24
Group 1: Operation Attributes Group 1: Operation Attributes
Status Message: Status Message:
In addition to the REQUIRED status code returned in every response, In addition to the REQUIRED status code returned in every response,
the response OPTIONALLY includes a "status-message" (text) the response OPTIONALLY includes a "status-message" (text)
operation attribute as described in sections 14 and 3.1.6. operation attribute as described in sections 13 and 3.1.6.
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.2. attributes as described in section 3.1.4.2.
Group 2: Unsupported Attributes Group 2: Unsupported Attributes
This is a set of Operation attributes supplied by the client (in See section 3.1.7 for details on returning Unsupported Attributes.
the request) that are not supported by the Printer object or that
conflict with one another (see sections 3.2.1.2 and the The response NEED NOT contain the "requested-attributes" operation
Implementer's Guide [IPP-IIG]). The response NEED NOT contain the attribute with any supplied values (attribute keywords) that were
"requested-attributes" operation attribute with any supplied values requested by the client but are not supported by the IPP object. If
(attribute keywords) that were requested by the client but are not the Printer does include unsupported attributes referenced in
supported by the IPP object. If the Printer object is not "requested-attributes" and such attributes include group names,
returning any Unsupported Attributes in the response, the Printer such as 'all', the unsupported attributes MUST NOT include
object SHOULD omit Group 2 rather than sending an empty group. attributes described in the standard but not supported by the
However, a client MUST be able to accept an empty group. implementation. Issue 23
Groups 3 to N: Job Object Attributes Groups 3 to N: Job Object Attributes
The Printer object responds with one set of Job Object Attributes The Printer object responds with one set of Job Object Attributes
for each returned Job object. The Printer object ignores (does not for each returned Job object. The Printer object ignores (does not
Expires November 10, 1999
respond with) any requested attribute or value which is not respond with) any requested attribute or value which is not
supported or which is restricted by the security policy in force, supported or which is restricted by the security policy in force,
including whether the requesting user is the user that submitted including whether the requesting user is the user that submitted
the job (job originating user) or not (see section 8). However, the job (job originating user) or not (see section 8). However,
the Printer object MUST respond with the 'unknown' value for any the Printer object MUST respond with the 'unknown' value for any
supported attribute (including all REQUIRED attributes) for which supported attribute (including all REQUIRED attributes) for which
the Printer object does not know the value, unless it would violate the Printer object does not know the value, unless it would violate
the security policy. See the description of the "out-of-band" the security policy. See the description of the "out-of-band"
values in the beginning of Section 4.1. values in the beginning of Section 4.1.
Expires August 17, 1999
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 'completed', 'aborted', or 'canceled' states), then the Jobs
are returned newest to oldest (with respect to actual are returned newest to oldest (with respect to actual
completion time) completion time)
- If the client requests all 'not-completed' Jobs (Jobs in the - If the client requests all 'not-completed' Jobs (Jobs in the
'pending', 'processing', 'pending-held', and 'processing- 'pending', 'processing', 'pending-held', and 'processing-
stopped' states), then Jobs are returned in relative stopped' states), then Jobs are returned in relative
chronological order of expected time to complete (based on chronological order of expected time to complete (based on
skipping to change at page 46, line 35 skipping to change at page 49, line 45
stopped as soon as the implementation permits or is completed, depending stopped as soon as the implementation permits or is completed, depending
on implementation. The Printer object MUST still accept create on implementation. The Printer object MUST still accept create
operations to create new jobs, but MUST prevent any jobs from entering operations to create new jobs, but MUST prevent any jobs from entering
the 'processing' state. 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 in 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 the 'processing' or 'processing-stopped' states as soon as the
implementation permits. If the implementation supports the "printer- implementation permits. If the implementation Issue 30 will take
state-reasons" attribute and the devices will take appreciable time to appreciable time to stop, the IPP Printer adds the 'moving-to-paused'
stop, the IPP Printer adds the 'moving-to-paused' value to the Printer value to the Printer object's "printer-state-reasons" attribute (see
object's "printer-state-reasons" attribute (see section 4.4.11). When section 4.4.12). When the device(s) have all stopped, the IPP Printer
the device(s) have all stopped, the IPP Printer transitions the Printer transitions the Printer object to the 'stopped' state, removes the
object to the 'stopped' state, removes the 'moving-to-paused' value, if 'moving-to-paused' value, if present, and adds the 'paused' value to the
present, and adds the 'paused' value to the Printer object's "printer- 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, if the "job-state-reasons" attribute is supported, adds the state and Issue 30 adds the 'printer-stopped' value to the job's "job-
'printer-stopped' value to the job's "job-state-reasons" attribute. state-reasons" attribute.
Expires November 10, 1999
Note: for any jobs that are 'pending' or 'pending-held', the 'printer- Note: for any jobs that are 'pending' or 'pending-held', the 'printer-
stopped' value of the jobs' "job-state-reasons" attribute also applies. stopped' value of the jobs' "job-state-reasons" attribute also applies.
However, the IPP Printer NEED NOT update those jobs' "job-state-reasons" However, the IPP Printer NEED NOT update those jobs' "job-state-reasons"
attributes and only need return the 'printer-stopped' value when those attributes and only need return the 'printer-stopped' value when those
jobs are queried (so-called "lazy evaluation"). jobs are queried (so-called "lazy evaluation").
Expires August 17, 1999
Whether the Pause-Printer operation affects jobs that were submitted to Whether the Pause-Printer operation affects jobs that were submitted to
the device from other sources than the IPP Printer object in the same 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 way that the Pause-Printer operation affects jobs that were submitted to
the IPP Printer object using IPP, depends on implementation, i.e., on the IPP Printer object using IPP, depends on implementation, i.e., on
whether the IPP protocol is being used as a universal management whether the IPP protocol is being used as a universal management
protocol or just to manage IPP jobs, respectively. protocol or just to manage IPP jobs, respectively.
The IPP Printer MUST accept the request in any state and transition the The IPP Printer MUST accept the request in any state and transition the
Printer to the indicated new "printer-state" before returning as Printer to the indicated new "printer-state" before returning as
follows: follows:
skipping to change at page 47, line 39 skipping to change at page 50, line 45
'moving-to-paused' value in the 'moving-to-paused' value in the
"printer-state-reasons" "printer-state-reasons"
attribute attribute
'processin 'stopped' 'paused' OPTION 2: 'successful-ok'; 'processin 'stopped' 'paused' OPTION 2: 'successful-ok';
g' all device output stopped g' all device output stopped
immediately immediately
'stopped' 'stopped' 'paused' 'successful-ok' 'stopped' 'stopped' 'paused' 'successful-ok'
Access Rights: The requesting user must be an operator or administrator Access Rights: The authenticated user (see section 8.3) performing this
of the Printer object. Otherwise, the IPP Printer MUST reject the operation must be an operator or administrator of the Printer object
(see Sections 1 and 8.5). 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. authenticated', or 'client-error-not-authorized' as appropriate.
3.2.7.1 Pause-Printer Request 3.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" The "attributes-charset" and "attributes-natural-language"
attributes as described in section 3.1.4.1. attributes as described in section 3.1.4.1.
Target: Target:
The "printer-uri" (uri) operation attribute which is the target for The "printer-uri" (uri) operation attribute which is the target for
this operation as described in section 3.1.5. this operation as described in section 3.1.5.
Expires November 10, 1999
Requesting User Name: Requesting User Name:
The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied
by the client as described in section 8.3. by the client as described in section 8.3.
Expires August 17, 1999
3.2.7.2 Pause-Printer Response 3.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
Status Message: Status Message:
In addition to the REQUIRED status code returned in every response, In addition to the REQUIRED status code returned in every response,
the response OPTIONALLY includes a "status-message" (text) the response OPTIONALLY includes a "status-message" (text)
operation attribute as described in section 3.1.6. operation attribute as described in sections 13 and 3.1.6.
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.2. attributes as described in section 3.1.4.2.
Group 2: Unsupported Attributes Group 2: Unsupported Attributes
This is a set of Operation attributes supplied by the client (in See section 3.1.7 for details on returning Unsupported Attributes.
the request) that are not supported by the Printer object or that
conflict with one another (see sections 3.2.1.2 and 16).
3.2.8 Resume-Printer Operation 3.2.8 Resume-Printer Operation
This operation allows a client to resume the Printer object scheduling This operation allows a client to resume the Printer object scheduling
jobs on all its devices. If the Printer object supports the "printer- jobs on all its devices. The Printer object Issue 30 MUST remove the
state-reasons" attribute, it MUST remove the 'paused' and 'moving-to- 'paused' and 'moving-to-paused' values from the Printer object's
paused' values from the Printer object's "printer-state-reasons" "printer-state-reasons" attribute, if present. If there are no other
attribute, if present. If there are no other reasons to keep a device reasons to keep a device paused (such as media-jam), the IPP Printer
paused (such as media-jam), the IPP Printer transitions itself to the transitions itself to the 'processing' or 'idle' states, depending on
'processing' or 'idle' states, depending on whether there are jobs to be whether there are jobs to be processed or not, respectively, and the
processed or not, respectively, and the device(s) resume processing device(s) resume processing jobs.
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 "job- The IPP Printer removes the 'printer-stopped' value from any job's "job-
state-reasons" attributes contained in that Printer. 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 object to the indicated new state as follows:
skipping to change at page 48, line 64 skipping to change at page 52, line 4
'idle' 'idle' 'successful-ok' 'idle' 'idle' 'successful-ok'
'processing 'processing' 'successful-ok' 'processing 'processing' 'successful-ok'
' '
'stopped' 'processing' 'successful-ok'; 'stopped' 'processing' 'successful-ok';
when there are jobs to be when there are jobs to be
processed processed
'stopped' 'idle' 'successful-ok'; 'stopped' 'idle' 'successful-ok';
when there are no jobs to be
Expires August 17, 1999 Expires November 10, 1999
Current New "printer- IPP Printer's response status code Current New "printer- IPP Printer's response status code
"printer- state" and action: "printer- state" and action:
state" state"
when there are no jobs to be
processed. processed.
Access Rights: The requesting user must be an operator or administrator Access Rights: The authenticated user (see section 8.3) performing this
of the Printer object. Otherwise, the IPP Printer MUST reject the operation must be an operator or administrator of the Printer object
(see Sections 1 and 8.5). 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. authenticated', or 'client-error-not-authorized' as 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 3.2.7.1 and 3.2.7.2).
3.2.9 Purge-Jobs Operation 3.2.9 Purge-Jobs Operation
This OPTIONAL operation allows a client to remove all jobs from an IPP This OPTIONAL operation allows a client to remove all jobs from an IPP
skipping to change at page 49, line 45 skipping to change at page 52, line 47
implementation, i.e., on whether the IPP protocol is being used as a implementation, i.e., on whether the IPP protocol is being used as a
universal management protocol or just to manage IPP jobs, respectively. universal management protocol or just to manage IPP jobs, respectively.
Note: if an operator wants to cancel all jobs without clearing out the Note: if an operator wants to cancel all jobs without clearing out the
Job History, the operator uses the Cancel-Job operation on each job Job History, the operator uses the Cancel-Job operation on each job
instead of using the Purge-Job operation. instead of using the Purge-Job operation.
The Printer object MUST accept this operation in any state and The Printer object MUST accept this operation in any state and
transition the Printer object to the 'idle' state. transition the Printer object to the 'idle' state.
Access Rights: The requesting user must be an operator or administrator Access Rights: The authenticated user (see section 8.3) performing this
of the Printer object. Otherwise, the IPP object MUST reject the operation must be an operator or administrator of the Printer object
(see Sections 1 and 8.5). Otherwise, the IPP object MUST reject the
operation and return: client-error-forbidden, client-error-not- operation and return: client-error-forbidden, client-error-not-
authenticated, and client-error-not-authorized as appropriate. authenticated, and client-error-not-authorized as appropriate.
The Purge-Jobs Request and Purge-Jobs Response have the same attribute The Purge-Jobs Request and Purge-Jobs Response have the same attribute
groups and attributes as the Pause-Printer operation (see sections groups and attributes as the Pause-Printer operation (see sections
3.2.7.1 and 3.2.7.2). 3.2.7.1 and 3.2.7.2).
3.3 Job Operations 3.3 Job Operations
All Job operations are directed at Job objects. A client MUST always All Job operations are directed at Job objects. A client MUST always
supply some means of identifying the Job object in order to identify the supply some means of identifying the Job object in order to identify the
correct target of the operation. That job identification MAY either be
a single Job URI or a combination of a Printer URI with a Job ID. The
Expires August 17, 1999 Expires November 10, 1999
correct target of the operation. That job identification MAY either be
a single Job URI or a combination of a Printer URI with a Job ID. The
IPP object implementation MUST support both forms of identification for IPP object implementation MUST support both forms of identification for
every job. every job.
3.3.1 Send-Document Operation 3.3.1 Send-Document Operation
This OPTIONAL operation allows a client to create a multi-document Job This OPTIONAL operation allows a client to create a multi-document Job
object that is initially "empty" (contains no documents). In the object that is initially "empty" (contains no documents). In the
Create-Job response, the Printer object returns the Job object's URI Create-Job response, the Printer object returns the Job object's URI
(the "job-uri" attribute) and the Job object's 32-bit identifier (the (the "job-uri" attribute) and the Job object's 32-bit identifier (the
"job-id" attribute). For each new document that the client desires to "job-id" attribute). For each new document that the client desires to
add, the client uses a Send-Document operation. Each Send-Document add, the client uses a Send-Document operation. Each Send-Document
Request contains the entire stream of document data for one document. Request contains the entire stream of document data for one document.
If the Printer supports this operation but does not support multiple
documents per job, the Printer MUST reject subsequent Send-Document
operations supplied with data and return the 'server-error-multiple-
document-jobs-not-supported'. However, the Printer MUST accept the
first document with a 'true' or 'false' value for the "last-document"
operation attribute (see below), so that clients MAY always submit one
document jobs with a 'false' value for "last-document" in the first
Send-Document and a 'true' for "last-document" in the second Send-
Document (with no data). Issue 34
Since the Create-Job and the send operations (Send-Document or Send-URI Since the Create-Job and the send operations (Send-Document or Send-URI
operations) that follow could occur over an arbitrarily long period of operations) that follow could occur over an arbitrarily long period of
time for a particular job, a client MUST send another send operation time for a particular job, a client MUST send another send operation
within an IPP Printer defined minimum time interval after the receipt of within an IPP Printer defined minimum time interval after the receipt of
the previous request for the job. If a Printer object supports multiple the previous request for the job. If a Printer object supports multiple
document jobs, the Printer object MUST support the "multiple-operation- document jobs, the Printer object MUST support the "multiple-operation-
time-out" attribute (see section 4.4.28). This attribute indicates the time-out" attribute (see section 4.4.31). This attribute indicates the
minimum number of seconds the Printer object will wait for the next send minimum number of seconds the Printer object will wait for the next send
operation before taking some recovery action. operation before taking some recovery action.
An IPP object MUST recover from an errant client that does not supply a An IPP object MUST recover from an errant client that does not supply a
send operation, sometime after the minimum time interval specified by send operation, sometime after the minimum time interval specified by
the Printer object's "multiple-operation-time-out" attribute. Such the Printer object's "multiple-operation-time-out" attribute. Such
recovery MAY include any of the following or other recovery actions: recovery MAY include any of the following or other recovery 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-system' changing the job state to 'aborted', add the 'aborted-by-system'
value to the job's "job-state-reasons" attribute (see section value to the job's "job-state-reasons" attribute (see section
4.3.8), if supported, and clean up all resources associated with 4.3.8), Issue 30 and clean up all resources associated with the
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-possible" the Printer responds with an "client-error-not-possible" or
or "client-error-not-found" depending on whether or not the Job "client-error-not-found" depending on whether or not the Job object
object is still around when the send operation finally arrives. is still around when the send operation finally arrives.
2. Assume that the last send operation received was in fact the last 2. Assume that the last send operation received was in fact the last
document (as if the "last-document" flag had been set to 'true'), document (as if the "last-document" flag had been set to 'true'),
close the Job object, and proceed to process it (i.e., move the close the Job object, and proceed to process it (i.e., move the
Job's state to 'pending'). Job's state to 'pending').
3. Assume that the last send operation received was in fact the last 3. Assume that the last send operation received was in fact the last
document, close the Job, but move it to the 'pending-held' and add document, close the Job, but move it to the 'pending-held' and add
the 'submission-interrupted' value to the job's "job-state-reasons" the 'submission-interrupted' value to the job's "job-state-reasons"
attribute (see section 4.3.8), if supported. This action allows attribute (see section 4.3.8). Issue 30 This action allows the
the user or an operator to determine whether to continue processing
the Job by moving it back to the 'pending' state using the Release- Expires November 10, 1999
Job operation (see section 3.3.6) or to cancel the job using the user or an operator to determine whether to continue processing the
Job by moving it back to the 'pending' state using the Release-Job
operation (see section 3.3.6) or to cancel the job using the
Cancel-Job operation (see section 3.3.3). Cancel-Job operation (see section 3.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 piece whether the implementation spools jobs or not, and/or any other piece
of information available to it. If the choice is to abort the Job of information available to it. If the choice is to abort the Job
Expires August 17, 1999
object, it is possible that the Job object may already have been object, it is possible that the Job object may already have been
processed to the point that some media sheet pages have been printed. processed to the point that some media sheet pages have been printed.
Access Rights: The authenticated user (see section 8.3) performing this
operation must either be the job owner (as determined in the Create-Job
operation) or an operator or administrator of the Printer object (see
Sections 1 and 8.5). Otherwise, the IPP object MUST reject the
operation and return: 'client-error-forbidden', 'client-error-not-
authenticated', or 'client-error-not-authorized' as appropriate. Issue
19
3.3.1.1 Send-Document Request 3.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" The "attributes-charset" and "attributes-natural-language"
attributes as described in section 3.1.4.1. attributes as described in section 3.1.4.1.
skipping to change at page 51, line 41 skipping to change at page 54, line 57
MUST support this attribute. It contains the client supplied MUST support this attribute. It contains the client supplied
document name. The document name MAY be different than the Job document name. The document name MAY be different than the Job
name. It might be helpful, but NEED NOT be unique across multiple name. It might be helpful, but NEED NOT be unique across multiple
documents in the same Job. Typically, the client software documents in the same Job. Typically, the client software
automatically supplies the document name on behalf of the end user automatically supplies the document name on behalf of the end user
by using a file name or an application generated name. See the by using a file name or an application generated name. See the
description of the "document-name" operation attribute in the description of the "document-name" operation attribute in the
Print-Job Request (section 3.2.1.1) for more information about this Print-Job Request (section 3.2.1.1) for more information about this
attribute. attribute.
"compression" (type3 keyword)
See the description of "compression" for the Print-Job operation in
Section 3.2.1.1.
Expires November 10, 1999
"document-format" (mimeMediaType) : "document-format" (mimeMediaType) :
The client OPTIONALLY supplies this attribute. The Printer object See the description of "document-format" for the Print-Job
MUST support this attribute. The value of this attribute operation in Section 3.2.1.1. Issue 11
identifies the format of the supplied document data. If the client
does not supply this attribute, the Printer object assumes that the
document data is in the format defined by the Printer object's
"document-format-default" attribute. 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.
"document-natural-language" (naturalLanguage): "document-natural-language" (naturalLanguage):
The client OPTIONALLY supplies this attribute. The Printer object The client OPTIONALLY supplies this attribute. The Printer object
OPTIONALLY supports this attribute. This attribute specifies the OPTIONALLY supports this attribute. This attribute specifies the
natural language of the document for those document-formats that natural language of the document for those document-formats that
require a specification of the natural language in order to image require a specification of the natural language in order to image
the document unambiguously. There are no particular values the document unambiguously. There are no particular values
required for the Printer object to support. required for the Printer object to support.
Expires August 17, 1999
"compression" (type3 keyword)
The client OPTIONALLY supplies this attribute. The Printer object
OPTIONALLY supports this attribute and the "compression-supported"
attribute (see section 4.4.29). The client supplied "compression"
operation attribute identifies the compression algorithm used on
the document data. If the client omits this attribute, the Printer
object MUST assume that the data is not compressed. If the client
supplies the attribute and the Printer object supports the
attribute, the Printer object MUST use the corresponding
decompression algorithm on the document data. 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 copy the attribute and its value to the Unsupported
Attributes response group, reject the request, and return the
'client-error-attributes-or-values-not-supported' status code.
"last-document" (boolean): "last-document" (boolean):
The client MUST supply this attribute. The Printer object MUST The client MUST supply this attribute. The Printer object MUST
support this attribute. It is a boolean flag that is set to 'true' support this attribute. It is a boolean flag that is set to 'true'
if this is the last document for the Job, 'false' otherwise. if this is the last document for the Job, 'false' otherwise.
Group 2: Document Content Group 2: Document Content
The client MUST supply the document data if the "last-document" The client MUST supply the document data if the "last-document"
flag is set to 'false'. However, since a client might not know flag is set to 'false'. However, since a client might not know
that the previous document sent with a Send-Document (or Send-URI) that the previous document sent with a Send-Document (or Send-URI)
skipping to change at page 52, line 49 skipping to change at page 55, line 44
3.3.1.2 Send-Document Response 3.3.1.2 Send-Document Response
The following sets of attributes are part of the Send-Document Response: The following sets of attributes are part of the Send-Document Response:
Group 1: Operation Attributes Group 1: Operation Attributes
Status Message: Status Message:
In addition to the REQUIRED status code returned in every response, In addition to the REQUIRED status code returned in every response,
the response OPTIONALLY includes a "status-message" (text) the response OPTIONALLY includes a "status-message" (text)
operation attribute as described in sections 14 and 3.1.6. operation attribute as described in sections 13 and 3.1.6.
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.2. attributes as described in section 3.1.4.2.
Group 2: Unsupported Attributes Group 2: Unsupported Attributes
This is a set of Operation attributes supplied by the client (in See section 3.1.7 for details on returning Unsupported Attributes.
the request) that are not supported by the Printer object or that
Expires August 17, 1999
conflict with one another (see sections 3.2.1.2 and the
Implementer's Guide [IPP-IIG]). If the Printer object is not
returning any Unsupported Attributes in the response, the Printer
object SHOULD omit Group 2 rather than sending an empty group.
However, a client MUST be able to accept an empty group.
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 3.2.1.2).
Expires November 10, 1999
3.3.2 Send-URI Operation 3.3.2 Send-URI Operation
This OPTIONAL operation is identical to the Send-Document operation (see This OPTIONAL operation is identical to the Send-Document operation (see
section 3.3.1) except that a client MUST supply a URI reference section 3.3.1) except that a client MUST supply a URI reference
("document-uri" operation attribute) rather than the document data ("document-uri" operation attribute) rather than the document data
itself. If a Printer object supports this operation, clients can use itself. If a Printer object supports this operation, clients can use
both Send-URI or Send-Document operations to add new documents to an both Send-URI or Send-Document operations to add new documents to an
existing multi-document Job object. However, if a client needs to existing multi-document Job object. However, if a client needs to
indicate that the previous Send-URI or Send-Document was the last indicate that the previous Send-URI or Send-Document was the last
document, the client MUST use the Send-Document operation with no document, the client MUST use the Send-Document operation with no
skipping to change at page 53, line 45 skipping to change at page 56, line 35
operation. operation.
3.3.3 Cancel-Job Operation 3.3.3 Cancel-Job Operation
This REQUIRED operation allows a client to cancel a Print Job from the 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, or 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 Cancel-Job aborted. Since a Job might already be printing by the time a Cancel-Job
is received, some media sheet pages might be printed before the job is is received, some media sheet pages might be printed before the job is
actually terminated. actually terminated.
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- IPP object's response status
state" state" code and action:
'pending' 'canceled' 'successful-ok'
'pending- 'canceled' 'successful-ok'
held'
'processing' 'canceled' 'successful-ok'
'processing' 'processing' 'successful-ok' See Note 1
'processing' 'processing' 'client-error-not-possible' See
Note 2
'processing- 'canceled' 'successful-ok'
stopped'
'processing- 'processing- 'successful-ok' See Note 1
stopped' stopped'
'processing- 'processing- 'client-error-not-possible' See
stopped' stopped' Note 2
'completed' 'completed' 'client-error-not-possible'
'canceled' 'canceled' 'client-error-not-possible'
'aborted' 'aborted' 'client-error-not-possible'
Expires November 10, 1999
Note 1: If the implementation requires some measurable time to 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).
Note 2: If the Job object already has the 'processing-to-stop-point'
value in its "job-state-reasons" attribute, then the Printer object MUST
reject a Cancel-Job operation.
Access Rights: The authenticated user (see section 8.3) performing this
operation must either be the job owner or an operator or administrator
of the Printer object (see Sections 1 and 8.5). 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 3.3.3.1 Cancel-Job Request
The following groups of attributes are part of the Cancel-Job Request: The following groups of attributes are part of the Cancel-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. attributes as described in section 3.1.4.1.
Target: Target:
Either (1) the "printer-uri" (uri) plus "job-id" Either (1) the "printer-uri" (uri) plus "job-id"
(integer(1:MAX))or (2) the "job-uri" (uri) operation attribute(s) (integer(1:MAX))or (2) the "job-uri" (uri) operation attribute(s)
Expires August 17, 1999
which define the target for this operation as described in section which define the target for this operation as described in section
3.1.5. 3.1.5.
Requesting User Name: Requesting User Name:
The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied
by the client as described in section 8.3. by the client as described in section 8.3.
"message" (text(127)): "message" (text(127)):
The client OPTIONALLY supplies this attribute. The Printer object The client OPTIONALLY supplies this attribute. The Printer object
OPTIONALLY supports this attribute. It is a message to the OPTIONALLY supports this attribute. It is a message to the
skipping to change at page 54, line 30 skipping to change at page 58, line 5
message from the client to the operator along with the operation message from the client to the operator along with the operation
request. It is an implementation decision of how or where to request. It is an implementation decision of how or where to
display this message to the operator (if at all). display this message to the operator (if at all).
3.3.3.2 Cancel-Job Response 3.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
Expires November 10, 1999
Status Message: Status Message:
In addition to the REQUIRED status code returned in every response, In addition to the REQUIRED status code returned in every response,
the response OPTIONALLY includes a "status-message" (text) the response OPTIONALLY includes a "status-message" (text)
operation attribute as described in sections 14 and 3.1.6. operation attribute as described in sections 13 and 3.1.6.
If the job is already in the 'completed', 'aborted', or 'canceled'
state, or the 'process-to-stop-point' value is set in the Job's
"job-state-reasons" attribute, the Printer object MUST reject the
request and return the 'client-error-not-possible' error status
code.
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.2. attributes as described in section 3.1.4.2.
Group 2: Unsupported Attributes Group 2: Unsupported Attributes
This is a set of Operation attributes supplied by the client (in See section 3.1.7 for details on returning Unsupported Attributes.
the request) that are not supported by the Printer object or that
conflict with one another (see section 3.2.1.2 and the
Implementer's Guide [IPP-IIG]). If the Printer object is not
returning any Unsupported Attributes in the response, the Printer
object SHOULD omit Group 2 rather than sending an empty group.
However, a client MUST be able to accept an empty group.
Once a successful response has been sent, the implementation guarantees Once a successful response has been sent, the implementation guarantees
that the Job will eventually end up in the 'canceled' state. Between the that the Job will eventually end up in the 'canceled' state. Between the
time of the Cancel-Job operation is accepted and when the job enters the time of the Cancel-Job operation is accepted and when the job enters the
Expires August 17, 1999
'canceled' job-state (see section 4.3.7), the "job-state-reasons" 'canceled' job-state (see section 4.3.7), the "job-state-reasons"
attribute SHOULD contain the ' processing-to-stop-point ' value which attribute SHOULD contain the ' processing-to-stop-point ' value which
indicates to later queries that although the Job might still be indicates to later queries that although the Job might still be
'processing', it will eventually end up in the 'canceled' state, not the 'processing', it will eventually end up in the 'canceled' state, not the
'completed' state. 'completed' state.
3.3.4 Get-Job-Attributes Operation 3.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 object and it is almost identical to the Get-
Printer-Attributes operation (see section 3.2.5). The only differences Printer-Attributes operation (see section 3.2.5). The only differences
are that the operation is directed at a Job object rather than a Printer are that the operation is directed at a Job object rather than a Printer
object, there is no "document-format" operation attribute used when object, there is no "document-format" operation attribute used when
querying a Job object, and the returned attribute group is a set of Job querying a Job object, and the returned attribute group is a set of Job
object attributes rather than a set of Printer object attributes. object attributes rather than a set of Printer object attributes.
For Jobs, the possible names of attribute groups are: For Jobs, the possible names of attribute groups are:
- 'job-template': all of the Job Template attributes that apply to a - 'job-template': the subset of the Job Template attributes that
Job object (the first column of the table in Section 4.2). apply to a Job object (the first column of the table in Section
- 'job-description': all of the Job Description attributes specified 4.2) that the implementation supports for Job objects.
in Section 4.3. - 'job-description': the subset of the Job Description attributes
- 'all': the special group 'all' that includes all supported specified in Section 4.3 that the implementation supports for Job
attributes. objects.
- 'all': the special group 'all' that includes all attributes that
the implementation supports for Job objects. Issue 23
Since a client MAY request specific attributes or named groups, there is Since a client MAY request specific attributes or named groups, there is
a potential that there is some overlap. For example, if a client a potential that there is some overlap. For example, if a client
requests, 'job-name' and 'job-description', the client is actually 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 response Printer object NEED NOT return the attribute only once in the response
even if it is requested multiple times. The client SHOULD NOT request even if it is requested multiple times. The client SHOULD NOT request
the same attribute in multiple ways. the same attribute in multiple ways.
Expires November 10, 1999
It is NOT REQUIRED that a Job object support all attributes belonging to It is NOT REQUIRED that a Job object support all attributes belonging to
a group (since some attributes are OPTIONAL). However it is REQUIRED a group (since some attributes are OPTIONAL). However it is REQUIRED
that each Job object support all group names. that each Job object support all group names.
3.3.4.1 Get-Job-Attributes Request 3.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 object:
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 3.1.4.1.
Target: Target:
Either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX)) Either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX))
or (2) the "job-uri" (uri) operation attribute(s) which define the or (2) the "job-uri" (uri) operation attribute(s) which define the
target for this operation as described in section 3.1.5. target for this operation as described in section 3.1.5.
Expires August 17, 1999
Requesting User Name: Requesting User Name:
The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied
by the client as described in section 8.3. by the client as described in section 8.3.
"requested-attributes" (1setOf keyword) : "requested-attributes" (1setOf keyword) :
The client OPTIONALLY supplies this attribute. The IPP object MUST The client OPTIONALLY supplies this attribute. The IPP object MUST
support this attribute. It is a set of attribute names and/or support this attribute. It is a set of attribute names and/or
attribute group names in whose values the requester is interested. attribute group names in whose values the requester is interested.
If the client omits this attribute, the IPP object MUST respond as If the client omits this attribute, the IPP object MUST respond as
if this attribute had been supplied with a value of 'all'. if this attribute had been supplied with a value of 'all'.
skipping to change at page 56, line 27 skipping to change at page 59, line 48
3.3.4.2 Get-Job-Attributes Response 3.3.4.2 Get-Job-Attributes Response
The Printer object returns the following sets of attributes as part of The Printer object returns the following sets of attributes as part of
the Get-Job-Attributes Response: the Get-Job-Attributes Response:
Group 1: Operation Attributes Group 1: Operation Attributes
Status Message: Status Message:
In addition to the REQUIRED status code returned in every response, In addition to the REQUIRED status code returned in every response,
the response OPTIONALLY includes a "status-message" (text) the response OPTIONALLY includes a "status-message" (text)
operation attribute as described in sections 14 and 3.1.6. operation attribute as described in sections 13 and 3.1.6.
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.2. The "attributes- attributes as described in section 3.1.4.2. The "attributes-
natural-language" MAY be the natural language of the Job object, natural-language" MAY be the natural language of the Job object,
rather than the one requested. rather than the one requested.
Group 2: Unsupported Attributes Group 2: Unsupported Attributes
This is a set of Operation attributes supplied by the client (in See section 3.1.7 for details on returning Unsupported Attributes.
the request) that are not supported by the Printer object or that
conflict with one another (see sections 3.2.1.2 and the Expires November 10, 1999
Implementer's Guide [IPP-IIG]). The response NEED NOT contain the The response NEED NOT contain the "requested-attributes" operation
"requested-attributes" operation attribute with any supplied values attribute with any supplied values (attribute keywords) that were
(attribute keywords) that were requested by the client but are not requested by the client but are not supported by the IPP object. If
supported by the IPP object. If the Printer object is not the Printer does include unsupported attributes referenced in
returning any Unsupported Attributes in the response, the Printer "requested-attributes" and such attributes include group names,
object SHOULD omit Group 2 rather than sending an empty group. such as 'all', the unsupported attributes MUST NOT include
However, a client MUST be able to accept an empty group. attributes described in the standard but not supported by the
implementation. Issue 23
Group 3: Job Object Attributes Group 3: Job Object 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 IPP object ignores (does not respond with) any requested
attribute or value which is not supported or which is restricted by attribute or value which is not supported or which is restricted by
the security policy in force, including whether the requesting user the security policy in force, including whether the requesting user
is the user that submitted the job (job originating user) or not is the user that submitted the job (job originating user) or not
(see section 8). However, the IPP object MUST respond with the (see section 8). However, the IPP object MUST respond with the
'unknown' value for any supported attribute (including all REQUIRED 'unknown' value for any supported attribute (including all REQUIRED
Expires August 17, 1999
attributes) for which the IPP object does not know the value, attributes) for which the IPP object does not know the value,
unless it would violate the security policy. See the description unless it would violate the security policy. See the description
of the "out-of-band" values in the beginning of Section 4.1. of the "out-of-band" values in the beginning of Section 4.1.
3.3.5 Hold-Job Operation 3.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
skipping to change at page 57, line 48 skipping to change at page 61, line 5
'processing- 'processing- 'client-error-not-possible' 'processing- 'processing- 'client-error-not-possible'
stopped' stopped' stopped' stopped'
'completed' 'completed' 'client-error-not-possible' 'completed' 'completed' 'client-error-not-possible'
'canceled' 'canceled' 'client-error-not-possible' 'canceled' 'canceled' 'client-error-not-possible'
'aborted' 'aborted' 'client-error-not-possible' 'aborted' 'aborted' 'client-error-not-possible'
Note 1: If the OPTIONAL "job-state-reasons" attribute is supported and Expires November 10, 1999
if the implementation supports multiple reasons for a job to be in the
'pending-held' state, the IPP object MUST add the 'job-hold-until- Note 1: If the implementation supports multiple reasons for a job to be
specified' value to the job's "job-state-reasons" attribute. in the 'pending-held' state, the IPP object MUST add the 'job-hold-
until-specified' value to the job's "job-state-reasons" attribute.
Note 2: If the IPP object supports the "job-hold-until" operation Note 2: If the IPP object supports the "job-hold-until" operation
attribute, but the specified time period has already started (or is the 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 '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 object MUST make the job be a candidate for processing immediately (see
Section 4.2.2) by putting the job in the 'pending' state. 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 is Note: In order to keep the Hold-Job operation simple, such a request is
rejected when the job is in the 'processing' or 'processing-stopped' rejected when the job is in the 'processing' or 'processing-stopped'
states. If an operation is needed to hold jobs while in these states, 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 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 Hold-Job operation. Then it is clear to clients by querying the Printer
object's "operations-supported" (see Section 4.4.13) and the Job 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 object's "job-state" (see Section 4.3.7) attributes which operations are
possible. possible.
Expires August 17, 1999 Access Rights: The authenticated user (see section 8.3) performing this
operation must either be the job owner or an operator or administrator
Access Rights: The requesting user must either be the submitter of the of the Printer object (see Sections 1 and 8.5). Otherwise, the IPP
job or an operator or administrator of the Printer object (see Section object MUST reject the operation and return: 'client-error-forbidden',
1). Otherwise, the IPP object MUST reject the operation and return: 'client-error-not-authenticated', or 'client-error-not-authorized' as
'client-error-forbidden', 'client-error-not-authenticated', or 'client- appropriate.
error-not-authorized' as appropriate.
3.3.5.1 Hold-Job Request 3.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 Group request (see section 3.3.3.1), with the addition of the following Group
1 Operation attribute: 1 Operation attribute:
"job-hold-until" (type3 keyword | name(MAX)): "job-hold-until" (type3 keyword | name(MAX)):
The client OPTIONALLY supplies this Operation attribute. The IPP The client OPTIONALLY supplies this Operation attribute. The IPP
object MUST support this operation attribute in a Hold-Job request, object MUST support this operation attribute in a Hold-Job request,
skipping to change at page 58, line 39 skipping to change at page 61, line 59
If supplied and supported as specified in the Printer's "job-hold- If supplied and supported as specified in the Printer's "job-hold-
until-supported" attribute, the IPP object copies the supplied until-supported" attribute, the IPP object copies the supplied
operation attribute to the Job object, replacing the job's previous operation attribute to the Job object, replacing the job's previous
"job-hold-until" attribute, if present, and makes the job a "job-hold-until" attribute, if present, and makes the job a
candidate for scheduling during the supplied named time period. candidate for scheduling during the supplied named time period.
If supplied, but either the "job-hold-until" Operation attribute If supplied, but either the "job-hold-until" Operation attribute
itself or the value supplied is not supported, the IPP object itself or the value supplied is not supported, the IPP object
accepts the request, returns the unsupported attribute or value in accepts the request, returns the unsupported attribute or value in
the Unsupported Attributes Group according to section 3.2.1.2, the Unsupported Attributes Group according to section 3.1.7,
returns the 'successful-ok-ignored-or-substituted-attributes, and returns the 'successful-ok-ignored-or-substituted-attributes, and
Expires November 10, 1999
holds the job indefinitely until a client performs a subsequent holds the job indefinitely until a client performs a subsequent
Release-Job operation. Release-Job operation.
If the client (1) supplies a value that specifies a time period If the client (1) supplies a value that specifies a time period
that has already started or the 'no-hold' value (meaning don't hold that has already started or the 'no-hold' value (meaning don't hold
the job) and (2) the IPP object supports the "job-hold-until" the job) and (2) the IPP object supports the "job-hold-until"
operation attribute and there are no other reasons to hold the job, operation attribute and there are no other reasons to hold the job,
the IPP object MUST accept the operation and make the job be a the IPP object MUST accept the operation and make the job be a
candidate for processing immediately (see Section 4.2.2). candidate for processing immediately (see Section 4.2.2).
If the client does not supply a "job-hold-until" Operation If the client does not supply a "job-hold-until" Operation
attribute in the request, the IPP object MUST populate the job attribute in the request, the IPP object MUST populate the job
object with a "job-hold-until" attribute with the 'indefinite' object with a "job-hold-until" attribute with the 'indefinite'
value (if IPP object supports the "job-hold-until" attribute) and value (if IPP object supports the "job-hold-until" attribute) and
hold the job indefinitely, until a client performs a Release-Job hold the job indefinitely, until a client performs a Release-Job
operation. operation.
Expires August 17, 1999
3.3.5.2 Hold-Job Response 3.3.5.2 Hold-Job Response
The groups and attributes are the same as for a Cancel-Job response (see The groups and attributes are the same as for a Cancel-Job response (see
section 3.3.3.2). section 3.3.3.2).
3.3.6 Release-Job Operation 3.3.6 Release-Job Operation
This OPTIONAL operation allows a client to release a previously held job This OPTIONAL operation allows a client to release a previously held job
so that it is again eligible for scheduling. If the Hold-Job operation so that it is again eligible for scheduling. If the Hold-Job operation
is supported, then the Release-Job operation MUST be supported, and is supported, then the Release-Job operation MUST be supported, and
vice-versa. vice-versa.
This operation removes the "job-hold-until" job attribute, if present, This operation removes the "job-hold-until" job attribute, if present,
from the job object that had been supplied in the create or most recent from the job object that had been supplied in the create or most recent
Hold-Job or Restart-Job operation and remove its effect on the job. If Hold-Job or Restart-Job operation and remove its effect on the job.
the OPTIONAL "job-state-reasons" attribute is supported, the IPP object Issue 30 The IPP object MUST remove the 'job-hold-until-specified' value
MUST remove the 'job-hold-until-specified' value from the job's "job- from the job's "job-state-reasons" attribute, if present. See section
state-reasons" attribute, if present. See section 4.3.8. 4.3.8.
The IPP object MUST accept or reject the request based on the job's 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 current state and transition the job to the indicated new state as
follows: follows:
Current "job- New "job- IPP object's response status Current "job- New "job- IPP object's response status
state" state" code and action: state" state" code and action:
'pending' 'pending' 'successful-ok' No effect on 'pending' 'pending' 'successful-ok' No effect on
the job. the job.
skipping to change at page 59, line 48 skipping to change at page 63, line 5
'pending- 'pending' 'successful-ok' 'pending- 'pending' 'successful-ok'
held' held'
'processing' 'processing' 'successful-ok' No effect on 'processing' 'processing' 'successful-ok' No effect on
the job. the job.
'processing- 'processing- 'successful-ok' No effect on 'processing- 'processing- 'successful-ok' No effect on
stopped' stopped' the job. stopped' stopped' the job.
Expires November 10, 1999
Current "job- New "job- IPP object's response status
state" state" code and action:
'completed' 'completed' 'client-error-not-possible' 'completed' 'completed' 'client-error-not-possible'
'canceled' 'canceled' 'client-error-not-possible' 'canceled' 'canceled' 'client-error-not-possible'
'aborted' 'aborted' 'client-error-not-possible' 'aborted' 'aborted' 'client-error-not-possible'
Note 1: If there are other reasons to keep the job in the 'pending- Note 1: If there are other reasons to keep the job in the 'pending-
held' state, such as 'resources-are-not-ready', the job remains in the held' state, such as 'resources-are-not-ready', the job remains in the
'pending-held' state. Thus the 'pending-held' state is not just for 'pending-held' state. Thus the 'pending-held' state is not just for
jobs that have the 'job-hold-until' applied to them, but are for any 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 reason to keep the job from being a candidate for scheduling and
processing, such as 'resources-are-not-ready'. See the "job-hold-until" processing, such as 'resources-are-not-ready'. See the "job-hold-until"
attribute (section 4.2.2). attribute (section 4.2.2).
Access Rights: The requesting user must either be the submitter of the Access Rights: The authenticated user (see section 8.3) performing this
job or an operator or administrator of the Printer object. Otherwise, operation must either be the job owner or an operator or administrator
the IPP object MUST reject the operation and return: 'client-error- of the Printer object (see Sections 1 and 8.5). Otherwise, the IPP
forbidden', 'client-error-not-authenticated', or 'client-error-not- object MUST reject the operation and return: 'client-error-forbidden',
authorized' as appropriate. 'client-error-not-authenticated', or 'client-error-not-authorized' as
appropriate.
Expires August 17, 1999
The Release-Job Request and Release-Job Response have the same attribute The Release-Job Request and Release-Job Response have the same attribute
groups and attributes as the Cancel-Job operation (see section 3.3.3.1 groups and attributes as the Cancel-Job operation (see section 3.3.3.1
and 3.3.3.2). and 3.3.3.2).
3.3.7 Restart-Job Operation 3.3.7 Restart-Job Operation
This OPTIONAL operation allows a client to restart a job that is This OPTIONAL operation allows a client to restart a job that is
retained in the queue after processing has completed (see section retained in the queue after processing has completed (see section
4.3.7.1). 4.3.7.1).
skipping to change at page 60, line 43 skipping to change at page 64, line 5
Current "job- New "job- IPP object's response status Current "job- New "job- IPP object's response status
state" state" code and action: state" state" code and action:
'pending' 'pending' 'client-error-not-possible'. 'pending' 'pending' 'client-error-not-possible'.
'pending- 'pending- 'client-error-not-possible'. 'pending- 'pending- 'client-error-not-possible'.
held' held' held' held'
'processing' 'processing' 'client-error-not-possible'. 'processing' 'processing' 'client-error-not-possible'.
'processing- Expires November 10, 1999
stopped'
Current "job- New "job- IPP object's response status
state" state" code and action:
'processing- 'processing- 'client-error-not-possible'.
stopped' stopped'
'completed' 'pending' 'successful-ok' - job is started 'completed' 'pending' 'successful-ok' - job is started
over. over.
'completed' 'completed' 'client-error-not-possible' - 'completed' 'completed' 'client-error-not-possible' -
see Note 1 see Note 1
'canceled' 'pending' 'successful-ok' - job is started 'canceled' 'pending' 'successful-ok' - job is started
over. over.
'canceled' 'canceled' 'client-error-not-possible' - 'canceled' 'canceled' 'client-error-not-possible' -
see Note 1 see Note 1
'aborted' 'pending' 'successful-ok' - job is started 'aborted' 'pending' 'successful-ok' - job is started
over. over.
'aborted' 'aborted' 'client-error-not-possible' - 'aborted' 'aborted' 'client-error-not-possible' -
see Note 1 see Note 1
Expires August 17, 1999
Note 1: If the Job Retention Period has expired for the job in this Note 1: If the Job Retention Period has expired for the job in this
state, then the IPP object rejects the operation. See section 4.3.7.1. state, then the IPP object rejects the operation. See section 4.3.7.1.
Note: In order to prevent a user from inadvertently restarting a job in 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 the the middle, the Restart-Job request is rejected when the job is in the
'processing' or 'processing-stopped' states. If in the future an '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 that Restart-Job operation, so that it is clear that the user intended that
the current job not be completed. the current job not be completed.
Access Rights: The requesting user must either be the submitter of the Access Rights: The authenticated user (see section 8.3) performing this
job or an operator or administrator of the Printer object. Otherwise, operation must either be the job owner or an operator or administrator
the IPP object MUST reject the operation and return: 'client-error- of the Printer object (see Sections 1 and 8.5). Otherwise, the IPP
forbidden', 'client-error-not-authenticated', or 'client-error-not- object MUST reject the operation and return: 'client-error-forbidden',
authorized' as appropriate. 'client-error-not-authenticated', or 'client-error-not-authorized' as
appropriate.
3.3.7.1 Restart-Job Request 3.3.7.1 Restart-Job Request
The groups and attributes are the same as for a Cancel-Job request (see 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 Operation section 3.3.3.1), with the addition of the following Group 1 Operation
attribute: attribute:
"job-hold-until" (type3 keyword | name(MAX)): "job-hold-until" (type3 keyword | name(MAX)):
The client OPTIONALLY supplies this attribute. The IPP object MUST The client OPTIONALLY supplies this attribute. The IPP object MUST
support this Operation attribute in a Restart-Job request, if it support this Operation attribute in a Restart-Job request, if it
supports the "job-hold-until" Job Template attribute in create supports the "job-hold-until" Job Template attribute in create
operations. See section 4.2.2. Otherwise, the IPP object NEED NOT operations. See section 4.2.2. Otherwise, the IPP object NEED NOT
support the "job-hold-until" Operation attribute in a Restart-Job support the "job-hold-until" Operation attribute in a Restart-Job
request. request.
If supplied and supported as specified in the Printer's "job-hold- If supplied and supported as specified in the Printer's "job-hold-
until-supported" attribute, the IPP object copies the supplied until-supported" attribute, the IPP object copies the supplied
Operation attribute to the Job object, replacing the job's previous Operation attribute to the Job object, replacing the job's previous
"job-hold-until" attribute, if present, and makes the job a "job-hold-until" attribute, if present, and makes the job a
Expires November 10, 1999
candidate for scheduling during the supplied named time period. candidate for scheduling during the supplied named time period.
See section 4.2.2. See section 4.2.2.
If supplied, but the value is not supported, the IPP object accepts If supplied, but the value is not supported, the IPP object accepts
the request, returns the unsupported attribute or value in the the request, returns the unsupported attribute or value in the
Unsupported Attributes Group according to section 3.2.1.2, returns Unsupported Attributes Group according to section 3.1.7, returns
the 'successful-ok-ignored-or-substituted-attributes' status code, the 'successful-ok-ignored-or-substituted-attributes' status code,
and holds the job indefinitely until a client performs a subsequent and holds the job indefinitely until a client performs a subsequent
Release-Job operation. Release-Job operation.
If supplied, but the "job-hold-until" Operation attribute itself is If supplied, but the "job-hold-until" Operation attribute itself is
not supported, the IPP object accepts the request, returns the not supported, the IPP object accepts the request, returns the
unsupported attribute with the out-of-band 'unsupported' value in unsupported attribute with the out-of-band 'unsupported' value in
the Unsupported Attributes Group according to section 3.2.1.2, the Unsupported Attributes Group according to section 3.1.7,
returns the 'successful-ok-ignored-or-substituted-attributes' returns the 'successful-ok-ignored-or-substituted-attributes'
status code, and restarts the job, i.e., ignores the "job-hold- status code, and restarts the job, i.e., ignores the "job-hold-
until" attribute. until" attribute.
Expires August 17, 1999
If the client (1) supplies a value that specifies a time period If the client (1) supplies a value that specifies a time period
that has already started or the 'no-hold' value (meaning don't hold that has already started or the 'no-hold' value (meaning don't hold
the job) and (2) the IPP object supports the "job-hold-until" the job) and (2) the IPP object supports the "job-hold-until"
operation attribute and there are no other reasons to hold the job, operation attribute and there are no other reasons to hold the job,
the IPP object makes the job a candidate for processing immediately the IPP object makes the job a candidate for processing immediately
(see Section 4.2.2). (see Section 4.2.2).
If the client does not supply a "job-hold-until" operation If the client does not supply a "job-hold-until" operation
attribute in the request, the IPP object removes the "job-hold- attribute in the request, the IPP object removes the "job-hold-
until" attribute, if present, from the job. If there are no other until" attribute, if present, from the job. If there are no other
skipping to change at page 62, line 39 skipping to change at page 66, line 5
This section describes the attributes with their corresponding attribute This section describes the attributes with their corresponding attribute
syntaxes and values that are part of the IPP model. The sections below syntaxes and values that are part of the IPP model. The sections below
show the objects and their associated attributes which are included show the objects and their associated attributes which are included
within the scope of this protocol. Many of these attributes are derived within the scope of this protocol. Many of these attributes are derived
from other relevant specifications: from other relevant specifications:
- Document Printing Application (DPA) [ISO10175] - Document Printing Application (DPA) [ISO10175]
- RFC 1759 Printer MIB [RFC1759] - RFC 1759 Printer MIB [RFC1759]
Expires November 10, 1999
Each attribute is uniquely identified in this document using a "keyword" Each attribute is uniquely identified in this document using a "keyword"
(see section 13.2.1) which is the name of the attribute. The keyword is (see section 12.2.1) which is the name of the attribute. The keyword is
included in the section header describing that attribute. included in the section header describing that attribute.
Note: Not only are keywords used to identify attributes, but one of the Note: Not only are keywords used to identify attributes, but one of the
attribute syntaxes described below is "keyword" so that some attributes attribute syntaxes described below is "keyword" so that some attributes
have keyword values. Therefore, these attributes are defined as having have keyword values. Therefore, these attributes are defined as having
an attribute syntax that is a set of keywords. an attribute syntax that is a set of keywords.
4.1 Attribute Syntaxes 4.1 Attribute Syntaxes
This section defines the basic attribute syntax types that all clients This section defines the basic attribute syntax types that all clients
and IPP objects MUST be able to accept in responses and accept in and IPP objects MUST be able to accept in responses and accept in
requests, respectively. Each attribute description in sections 3 and requests, respectively. Each attribute description in sections 3 and
3.3.5 includes the name of attribute syntax(es) in the heading (in 3.3.5 includes the name of attribute syntax(es) in the heading (in
parentheses). A conforming implementation of an attribute MUST include parentheses). A conforming implementation of an attribute MUST include
Expires August 17, 1999
the semantics of the attribute syntax(es) so identified. Section 6.3 the semantics of the attribute syntax(es) so identified. Section 6.3
describes how the protocol can be extended with new attribute syntaxes. describes how the protocol can be extended 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 request) addition, the value of an attribute in a response (but not in a request)
MAY be one of the "out-of-band" values. Standard "out-of-band" values MAY be one of the "out-of-band" values whose special encoding rules are
are: defined in the "Encoding and Transport" specification [IPP-PRO].
Standard "out-of-band" values are: Issues 12 and 15
'unknown': The attribute is supported by the IPP object, but the 'unknown': The attribute is supported by the IPP object, but the
value is unknown to the IPP object for some reason. value is unknown to the IPP object for some reason.
'unsupported': The attribute is unsupported by the IPP object. This 'unsupported': The attribute is unsupported by the IPP object. This
value MUST be returned only as the value of an attribute in the value MUST be returned only as the value of an attribute in the
Unsupported Attributes Group. Unsupported Attributes Group.
'no-value': The attribute is supported by the Printer object, but the 'no-value': The attribute is supported by the Printer object, but the
administrator has not yet configured a value. administrator has not yet configured a value.
The "Encoding and Transport" specification [IPP-PRO] defines mechanisms All attributes in a request MUST have one or more values as defined in
for passing "out-of-band" values. All attributes in a request MUST have Sections 4.2 to 4.4. Thus clients MUST NOT supply attributes with "out-
one or more values as defined in Sections 4.2 to 4.4. Thus clients MUST of-band" values. All attributes in a response MUST have one or more
NOT supply attributes with "out-of-band" values. All attributes in a values as defined in Sections 4.2 to 4.4 or a single "out-of-band"
response MUST have one or more values as defined in Sections 4.2 to 4.4 value.
or a single "out-of-band" value.
Most attributes are defined to have a single attribute syntax. However, Most attributes are defined to have a single attribute syntax. However,
a few attributes (e.g., "job-sheet", "media", "job-hold-until") are a few attributes (e.g., "job-sheet", "media", "job-hold-until") are
defined to have several attribute syntaxes, depending on the value. defined to have several attribute syntaxes, depending on the value.
These multiple attribute syntaxes are separated by the "|" character in These multiple attribute syntaxes are separated by the "|" character in
the sub-section heading to indicate the choice. Since each value MUST the sub-section heading to indicate the choice. Since each value MUST
be tagged as to its attribute syntax in the protocol, a single-valued be tagged as to its attribute syntax in the protocol, a single-valued
attribute instance may have any one of its attribute syntaxes and a attribute instance may have any one of its attribute syntaxes and a
multi-valued attribute instance may have a mixture of its defined multi-valued attribute instance may have a mixture of its defined
attribute syntaxes. attribute syntaxes.
Expires November 10, 1999
4.1.1 'text' 4.1.1 '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 the more characters encoded in a maximum of 1023 ('MAX') octets. MAX is the
maximum length for each value of any text attribute. However, if an maximum length for each value of any text attribute. However, if an
attribute will always contain values whose maximum length is much less attribute will always contain values whose maximum length is much less
than MAX, the definition of that attribute will include a qualifier that than MAX, the definition of that attribute will include a qualifier that
defines the maximum length for values of that attribute. For example: defines the maximum length for values of that attribute. For example:
the "printer-location" attribute is specified as "printer-location the "printer-location" attribute is specified as "printer-location
(text(127))". In this case, text values for "printer-location" MUST NOT (text(127))". In this case, text values for "printer-location" MUST NOT
exceed 127 octets; if supplied with a longer text string via some exceed 127 octets; if supplied with a longer text string via some
external interface (other than the protocol), implementations are free external interface (other than the protocol), implementations are free
to truncate to this shorter length limitation. to truncate to this shorter length limitation.
Expires August 17, 1999
In this specification, all text attributes are defined using the 'text' In this specification, 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 | textWithLanguage'. interpretation of 'text' is: 'textWithoutLanguage | textWithLanguage'.
That is, for any attribute defined in this specification using the That is, for any attribute defined in this specification using the
'text' attribute syntax, all IPP objects and clients MUST support both 'text' attribute syntax, all IPP objects and clients MUST support both
the 'textWithoutLanguage' and 'textWithLanguage' attribute syntaxes. the 'textWithoutLanguage' and 'textWithLanguage' attribute syntaxes.
However, in actual usage and protocol execution, objects and clients However, in actual usage and protocol execution, objects and clients
accept and return only one of the two syntax per attribute. The syntax accept and return only one of the two syntax per attribute. The syntax
'text' never appears "on-the-wire". 'text' never appears "on-the-wire".
Both 'textWithoutLanguage' and 'textWithLanguage' are needed to support Both 'textWithoutLanguage' and 'textWithLanguage' are needed to support
the real world needs of interoperability between sites and systems that the real world needs of interoperability between sites and systems that
use different natural languages as the basis for human communication. use different natural languages as the basis for human communication.
Generally, one natural language applies to all text attributes in a Generally, one natural language applies to all text attributes in a
given request or response. The language is indicated by the "attributes- given request or response. The language is indicated by the "attributes-
natural-language" operation attribute defined in section 3.1.4 or natural-language" operation attribute defined in section 3.1.4 or
"attributes-natural-language" job attribute defined in section 4.3.24, "attributes-natural-language" job attribute defined in section 4.3.18,
and there is no need to identify the natural language for each text and there is no need to identify the natural language for each text
string on a value-by-value basis. In these cases, the attribute syntax string on a value-by-value basis. In these cases, the attribute syntax
'textWithoutLanguage' is used for text attributes. In other cases, the 'textWithoutLanguage' is used for text attributes. In other cases, the
client needs to supply or the Printer object needs to return a text client needs to supply or the Printer object needs to return a text
value in a natural language that is different from the rest of the text value in a natural language that is different from the rest of the text
values in the request or response. In these cases, the client or values in the request or response. In these cases, the client or
Printer object uses the attribute syntax 'textWithLanguage' for text Printer object uses the attribute syntax 'textWithLanguage' for text
attributes (this is the Natural Language Override mechanism described in attributes (this is the Natural Language Override mechanism described in
section 3.1.4). section 3.1.4).
skipping to change at page 64, line 47 skipping to change at page 68, line 5
4.1.1.1 'textWithoutLanguage' 4.1.1.1 'textWithoutLanguage'
The 'textWithoutLanguage' syntax indicates a value that is sequence of The 'textWithoutLanguage' syntax indicates a value that is sequence of
zero or more characters. Text strings are encoded using the rules of zero or more characters. Text strings are encoded using the rules of
some charset. The Printer object MUST support the UTF-8 charset some charset. The Printer object MUST support the UTF-8 charset
[RFC2279] and MAY support additional charsets to represent 'text' [RFC2279] and MAY support additional charsets to represent 'text'
values, provided that the charsets are registered with IANA [IANA-CS]. values, provided that the charsets are registered with IANA [IANA-CS].
See Section 4.1.7 for the specification of the 'charset' attribute See Section 4.1.7 for the specification of the 'charset' attribute
syntax, including restricted semantics and examples of charsets. syntax, including restricted semantics and examples of charsets.
Expires November 10, 1999
4.1.1.2 'textWithLanguage' 4.1.1.2 'textWithLanguage'
The 'textWithLanguage' attribute syntax is a compound attribute syntax The 'textWithLanguage' attribute syntax is a compound attribute syntax
consisting of two parts: a 'textWithoutLanguage' part plus an additional consisting of two parts: a 'textWithoutLanguage' part plus an additional
'naturalLanguage' (see section 4.1.8) part that overrides the natural 'naturalLanguage' (see section 4.1.8) part that overrides the natural
language in force. The 'naturalLanguage' part explicitly identifies the language in force. The 'naturalLanguage' part explicitly identifies the
natural language that applies to the text part of that value and that natural language that applies to the text part of that value and that
value alone. For any give text attribute, the 'textWithoutLanguage' value alone. For any give text attribute, the 'textWithoutLanguage'
part is limited to the maximum length defined for that attribute, but part is limited to the maximum length defined for that attribute, but
the 'naturalLanguage' part is always limited to 63 octets. Using the the 'naturalLanguage' part is always limited to 63 octets. Using the
'textWithLanguage' attribute syntax rather than the normal 'textWithLanguage' attribute syntax rather than the normal
'textWithoutLanguage' syntax is the so-called Natural Language Override 'textWithoutLanguage' syntax is the so-called Natural Language Override
mechanism and MUST be supported by all IPP objects and clients. mechanism and MUST be supported by all IPP objects and clients.
Expires August 17, 1999
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 specify 'textWithLanguage' attribute syntax MUST be used to explicitly specify
each attribute value whose natural language needs to be overridden. each attribute value whose natural language needs to be overridden.
Other values in a multi-valued 'text' attribute in a request or a Other values in a multi-valued 'text' attribute in a request or a
response revert to the natural language of the operation attribute. response revert to the natural language of the operation attribute.
In a create request, the Printer object MUST accept and store with the In a create request, the Printer object MUST accept and store with the
Job object any natural language in the "attributes-natural-language" Job object any natural language in the "attributes-natural-language"
operation attribute, whether the Printer object supports that natural operation attribute, whether the Printer object supports that natural
language or not. Furthermore, the Printer object MUST accept and store language or not. Furthermore, the Printer object MUST accept and store
skipping to change at page 65, line 47 skipping to change at page 69, line 4
never translated from one natural language to another. The 'name' never translated from one natural language to another. The 'name'
attribute syntax is essentially the same as 'text', including the attribute syntax is essentially the same as 'text', including the
REQUIRED support of UTF-8 except that the sequence of characters is REQUIRED support of UTF-8 except that the sequence of characters is
limited so that its encoded form MUST NOT exceed 255 (MAX) octets. 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 objects 'nameWithoutLanguage' or 'nameWithLanguage'. That is, all IPP objects
and clients MUST support both the 'nameWithoutLanguage' and 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, objects and clients accept and return only one of
Expires November 10, 1999
the two syntax per attribute. The syntax 'name' never appears "on-the- the two syntax per attribute. The syntax 'name' never appears "on-the-
wire". wire".
Note: Only the 'text' and 'name' attribute syntaxes permit the Natural Note: 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 attributes Some attributes are defined as 'type3 keyword | name'. These attributes
support values that are either type3 keywords or names. This dual- support values that are either type3 keywords or names. This dual-
syntax mechanism enables a site administrator to extend these attributes syntax mechanism enables a site administrator to extend these attributes
to legally include values that are locally defined by the site to legally include values that are locally defined by the site
administrator. Such names are not registered with IANA. administrator. Such names are not registered with IANA.
Expires August 17, 1999
4.1.2.1 'nameWithoutLanguage' 4.1.2.1 'nameWithoutLanguage'
The nameWithoutLanguage' syntax indicates a value that is sequence of The nameWithoutLanguage' syntax indicates a value that is sequence of
zero or more characters so that its encoded form does not exceed MAX zero or more characters so that its encoded form does not exceed MAX
octets. octets.
4.1.2.2 'nameWithLanguage' 4.1.2.2 'nameWithLanguage'
The 'nameWithLanguage' attribute syntax is a compound attribute syntax The 'nameWithLanguage' attribute syntax is a compound attribute syntax
consisting of two parts: a 'nameWithoutLanguage' part plus an additional consisting of two parts: a 'nameWithoutLanguage' part plus an additional
skipping to change at page 66, line 49 skipping to change at page 70, line 5
is checked to see if the value is among the values of the Printer is checked to see if the value is among the values of the Printer
object's corresponding "xxx-supported" attribute), the following match object's corresponding "xxx-supported" attribute), the following match
rules apply: 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 (1) the name parts match and (2) the Associated Natural-Language if (1) the name parts match and (2) the Associated Natural-Language
parts (see section 3.1.4.1) match. The matching rules are: parts (see section 3.1.4.1) match. The matching rules are:
Expires November 10, 1999
a. the name parts match if the two names are identical a. the name parts match if the two names are identical
character by character, except it is RECOMMENDED that case be character by character, except it is RECOMMENDED that case be
ignored. For example: 'Ajax-letter-head-white' MUST match ignored. For example: 'Ajax-letter-head-white' MUST match
'Ajax-letter-head-white' and SHOULD match 'ajax-letter-head- 'Ajax-letter-head-white' and SHOULD match 'ajax-letter-head-
white' and 'AJAX-LETTER-HEAD-WHITE'. white' and 'AJAX-LETTER-HEAD-WHITE'.
b. the Associated Natural-Language parts match if the shorter b. 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 [RFC1766] 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'.
Expires August 17, 1999
4.1.3 'keyword' 4.1.3 'keyword'
The 'keyword' attribute syntax is a sequence of characters, length: 1 to The 'keyword' attribute syntax is a sequence of characters, length: 1 to
255, containing only the US-ASCII [ASCII] encoded values for lowercase 255, containing only the US-ASCII [ASCII] encoded values for lowercase
letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"), dot ("."), and letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"), dot ("."), and
underscore ("_"). The first character MUST be a lowercase letter. underscore ("_"). The first character MUST be a lowercase letter.
Furthermore, keywords MUST be in U.S. English. 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
skipping to change at page 67, line 50 skipping to change at page 71, line 5
each attribute. Section 6.1 describes how the protocol can be extended each attribute. Section 6.1 describes how the protocol can be extended
with new keyword values. Examples of attribute name keywords: with new keyword values. Examples of attribute name keywords:
"job-name" "job-name"
"attributes-charset" "attributes-charset"
Note: This document uses "type1", "type2", and "type3" prefixes to the Note: This document uses "type1", "type2", and "type3" prefixes to 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 6.1).
Expires November 10, 1999
4.1.4 'enum' 4.1.4 '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 values This syntax type is used for attributes for which there are enum values
assigned by other standards, such as SNMP MIBs. A number of attribute assigned by other standards, such as SNMP MIBs. A number of attribute
enum values in this specification are also used for corresponding enum values in this specification are also used for corresponding
attributes in other standards [RFC1759]. This syntax type is not used attributes in other standards [RFC1759]. This syntax type is not used
Expires August 17, 1999
for attributes to which the administrator may assign values. Section for attributes to which the administrator may assign values. Section
6.1 describes how the protocol can be extended with new enum values. 6.1 describes how the protocol can be extended with new enum values.
Enum values are for use in the protocol. A user interface will provide Enum values are for use in the protocol. A user interface will provide
a mapping between protocol enum values and displayable user-friendly a mapping between protocol enum values and displayable user-friendly
words and phrases which are localized to the natural language of the words and phrases which are localized to the natural language of the
user. While the enum symbols specified in this document MAY be user. While the enum symbols specified in this document MAY be
displayed to users whose natural language is U.S. English, they 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 users, since the mapped to other U.S. English words for U.S. English users, since the
user interface is outside the scope of this document. user interface is outside the scope of this document.
skipping to change at page 68, line 46 skipping to change at page 71, line 56
4.1.6 'uriScheme' 4.1.6 '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 RFC representing a URI scheme according to RFC 2396 [RFC2396]. Though RFC
2396 requires that the values be case-insensitive, IPP requires all 2396 requires that the values be case-insensitive, IPP requires all
lower case values in IPP attributes to simplify comparing by IPP clients lower case values in IPP attributes to simplify comparing by IPP clients
and Printer objects. Standard values for this syntax type are the and Printer objects. Standard values for this syntax type are the
following keywords: following keywords:
'http': for HTTP schemed URIs (e.g., "http:.") 'http': for HTTP schemed URIs (e.g., "http:...")
'https': for use with HTTPS schemed URIs (e.g., "https:...") (not on 'https': for use with HTTPS schemed URIs (e.g., "https:...") (not on
IETF standards track) IETF standards track)
'ftp': for FTP schemed URIs (e.g., "ftp:...") 'ftp': for FTP schemed URIs (e.g., "ftp:...")
'mailto': for SMTP schemed URIs (e.g., "mailto:...") 'mailto': for SMTP schemed URIs (e.g., "mailto:...")
Expires November 10, 1999
'file': for file schemed URIs (e.g., "file:...") 'file': for file schemed URIs (e.g., "file:...")
A Printer object MAY support any URI 'scheme' that has been registered A Printer object MAY support any URI 'scheme' that has been registered
with IANA [IANA-MT]. The maximum length of URI 'scheme' values used to with IANA [IANA-MT]. The maximum length of URI 'scheme' values used to
represent IPP attribute values is 63 octets. represent IPP attribute values is 63 octets.
Expires August 17, 1999
4.1.7 'charset' 4.1.7 'charset'
The 'charset' attribute syntax is a standard identifier for a charset. The 'charset' attribute syntax is a standard identifier for a charset.
A charset is a coded character set and encoding scheme. Charsets are A charset is a coded character set and encoding scheme. Charsets are
used for labeling certain document contents and 'text' and 'name' used for labeling certain document contents and 'text' and 'name'
attribute values. The syntax and semantics of this attribute syntax are attribute values. The syntax and semantics of this attribute syntax are
specified in RFC 2046 [RFC2046] and contained in the IANA character-set specified in RFC 2046 [RFC2046] and contained in the IANA character-set
Registry [IANA-CS] according to the IANA procedures [RFC2278]. Though Registry [IANA-CS] according to the IANA procedures [RFC2278]. Though
RFC 2046 requires that the values be case-insensitive US-ASCII, IPP RFC 2046 requires that the values be case-insensitive US-ASCII, IPP
requires all lower case values in IPP attributes to simplify comparing requires all lower case values in IPP attributes to simplify comparing
skipping to change at page 69, line 53 skipping to change at page 73, line 4
values that may be used, such as REQUIRED values that MUST be supported values that may be used, such as REQUIRED values that MUST be supported
or additional restrictions, such as requiring that the charset have US- or additional restrictions, such as requiring that the charset have US-
ASCII as a subset charset. ASCII as a subset charset.
4.1.8 'naturalLanguage' 4.1.8 '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 syntax natural language and optionally a country. The values for this syntax
type are defined by RFC 1766 [RFC1766]. Though RFC 1766 requires that type are defined by RFC 1766 [RFC1766]. Though RFC 1766 requires that
the values be case-insensitive US-ASCII, IPP requires all lower case to the values be case-insensitive US-ASCII, IPP requires all lower case to
Expires November 10, 1999
simplify comparing by IPP clients and Printer objects. Examples simplify comparing by IPP clients and Printer objects. Examples
include: include:
'en': for English 'en': for English
'en-us': for US English 'en-us': for US English
'fr': for French 'fr': for French
'de': for German 'de': for German
Expires August 17, 1999
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' 4.1.9 '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 2048 [RFC2048] for
identifying a document format. The value MAY include a charset identifying a document format. The value MAY include a charset
parameter, depending on the specification of the Media Type in the IANA parameter, depending on the specification of the Media Type in the IANA
skipping to change at page 70, line 38 skipping to change at page 73, line 46
[52, 56]. [52, 56].
'text/plain; charset=ISO-8859-1': A plain text document in ISO 8859- 'text/plain; charset=ISO-8859-1': A plain text document in ISO 8859-
1 (Latin 1) [ISO8859-1]. 1 (Latin 1) [ISO8859-1].
'text/plain; charset=utf-8': A plain text document in ISO 10646 'text/plain; charset=utf-8': A plain text document in ISO 10646
represented as UTF-8 [RFC2279] represented as UTF-8 [RFC2279]
'application/postscript': A PostScript document [RFC2046] 'application/postscript': A PostScript document [RFC2046]
'application/vnd.hp-PCL': A PCL document [IANA-MT] (charset escape 'application/vnd.hp-PCL': A PCL document [IANA-MT] (charset escape
sequence embedded in the document data) sequence embedded in the document data)
'application/pdf': Portable Document Format - see IANA MIME Media 'application/pdf': Portable Document Format - see IANA MIME Media
Type registry Type registry
'application/octet-stream': (REQUIRED) Auto-sense - see below 'application/octet-stream': Auto-sense - see below
4.1.9.1 Application/octet-stream -- Auto-Sensing the document format
One special type is 'application/octet-stream'. If the Printer object One special type is 'application/octet-stream'. If the Printer object
supports this value, the Printer object MUST be capable of auto-sensing supports this value, the Printer object MUST be capable of auto-sensing
the format of the document data. If the Printer object's default value the format of the document data, either as part of the create operation
attribute "document-format-default" is set to 'application/octet- and/or at document processing time. During auto-sensing, a Printer may
stream', the Printer object not only supports auto-sensing of the determine that the document-data has a format that the Printer doesn't
document format, but will depend on the result of applying its auto- recognize. If the Printer determines this problem before returning an
sensing when the client does not supply the "document-format" attribute. operation response, it rejects the request and returns the 'client-
If the client supplies a document format value, the Printer MUST rely on error-document-format-not-supported' status code. If the Printer
the supplied attribute, rather than trust its auto-sensing algorithm. determines this problem after accepting the request and returning an
To summarize: operation response with one of the successful status codes, the Printer
Expires November 10, 1999
adds the 'unsupported-document-format' value to the job's "job-state-
reasons" attribute. Issue 9 and Issue 10
If the Printer object's default value attribute "document-format-
default" is set to 'application/octet-stream', the Printer object not
only supports auto-sensing of the document format, but will depend on
the result of applying its auto-sensing when the client does not supply
the "document-format" attribute. If the client supplies a document
format value, the Printer MUST rely on the supplied attribute, rather
than trust its auto-sensing algorithm. To summarize:
1. If the client does not supply a document format value, the Printer 1. If the client does not supply a document format value, the Printer
MUST rely on its default value setting (which may be MUST rely on its default value setting (which may be
'application/octet-stream' indicating an auto-sensing mechanism). 'application/octet-stream' indicating an auto-sensing mechanism).
2. If the client supplies a value other than 'application/octet- 2. If the client supplies a value other than 'application/octet-
stream', the client is supplying valid information about the format stream', the client is supplying valid information about the format
of the document data and the Printer object MUST trust the client of the document data and the Printer object MUST trust the client
supplied value more than the outcome of applying an automatic supplied value more than the outcome of applying an automatic
format detection mechanism. For example, the client may be format detection mechanism. For example, the client may be
requesting the printing of a PostScript file as a 'text/plain' requesting the printing of a PostScript file as a 'text/plain'
Expires August 17, 1999
document. The Printer object MUST print a text representation of document. The Printer object MUST print a text representation of
the PostScript commands rather than interpret the stream of the PostScript commands rather than interpret the stream of
PostScript commands and print the result. PostScript commands and print the result.
3. If the client supplies a value of 'application/octet-stream', the 3. If the client supplies a value of 'application/octet-stream', the
client is indicating that the Printer object MUST use its auto- client is indicating that the Printer object MUST use its auto-
sensing mechanism on the client supplied document data whether sensing mechanism on the client supplied document data whether
auto-sensing is the Printer object's default or not. auto-sensing is the Printer object's default or not.
Note: Since the auto-sensing algorithm is probabilistic, if the client Note: Since the auto-sensing algorithm is probabilistic, if the client
requests both auto-sensing ("document-format" set to 'application/octet- requests both auto-sensing ("document-format" set to 'application/octet-
skipping to change at page 71, line 36 skipping to change at page 75, line 5
The 'octetString' attribute syntax is a sequence of octets encoded in a The 'octetString' attribute syntax is a sequence of octets encoded in a
maximum of 1023 octets which is indicated in sub-section headers using maximum of 1023 octets which is indicated in sub-section headers using
the notation: octetString(MAX). This syntax type is used for opaque the notation: octetString(MAX). This syntax type is used for opaque
data. data.
4.1.11 'boolean' 4.1.11 'boolean'
The 'boolean' attribute syntax has only two values: 'true' and 'false'. The 'boolean' attribute syntax has only two values: 'true' and 'false'.
Expires November 10, 1999
4.1.12 'integer' 4.1.12 'integer'
The 'integer' attribute syntax is an integer value that is in the range The 'integer' attribute syntax is an integer value that is in the range
from -2**31 (MIN) to 2**31 - 1 (MAX). Each individual attribute may from -2**31 (MIN) to 2**31 - 1 (MAX). Each individual attribute may
specify the range constraint explicitly in sub-section headers if the specify the range constraint explicitly in sub-section headers if the
range is different from the full range of possible integer values. For range is different from the full range of possible integer values. For
example: job-priority (integer(1:100)) for the "job-priority" example: job-priority (integer(1:100)) for the "job-priority"
attribute. However, the enforcement of that additional constraint is up attribute. However, the enforcement of that additional constraint is up
to the IPP objects, not the protocol. to the IPP objects, not the protocol.
4.1.13 'rangeOfInteger' 4.1.13 '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. If specifies the lower bound and the second specifies the upper bound. If
a range constraint is specified in the header description for an 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 value), (i.e., 'X:Y' indicating X as a minimum value and Y as a maximum value),
then the constraint applies to both integers. then the constraint applies to both integers.
Expires August 17, 1999
4.1.14 'dateTime' 4.1.14 '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 1903 representation of the "DateAndTime" syntax as defined in RFC 1903
[RFC1903]. RFC 1903 also identifies an 8 octet representation of a [RFC1903]. RFC 1903 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. language and date format of the user.
skipping to change at page 72, line 40 skipping to change at page 76, line 4
object in the Printer MIB (namely, '3' indicates dots per inch and '4' object in the Printer MIB (namely, '3' indicates dots per inch and '4'
indicates dots per centimeter). All three values MUST be present even indicates dots per centimeter). All three values MUST be present even
if the first two values are the same. Example: '300', '600', '3' if the first two values are the same. Example: '300', '600', '3'
indicates a 300 dpi cross-feed direction resolution, a 600 dpi feed indicates a 300 dpi cross-feed direction resolution, a 600 dpi feed
direction resolution, since a '3' indicates dots per inch (dpi). direction resolution, since a '3' indicates dots per inch (dpi).
4.1.16 '1setOf X' 4.1.16 '1setOf X'
The '1setOf X' attribute syntax is 1 or more values of attribute syntax The '1setOf X' attribute syntax is 1 or more values of attribute syntax
type X. This syntax type is used for multi-valued attributes. The type X. This syntax type is used for multi-valued attributes. The
Expires November 10, 1999
syntax type is called '1setOf' rather than just 'setOf' as a reminder 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 size 0). Sets that the set of values MUST NOT be empty (i.e., a set of size 0). Sets
are normally unordered. However each attribute description of this type are normally unordered. However each attribute description of this type
may specify that the values MUST be in a certain order for that may specify that the values MUST be in a certain order for that
attribute. attribute.
4.2 Job Template Attributes 4.2 Job Template Attributes
Job Template attributes describe job processing behavior. Support for Job Template attributes describe job processing behavior. Support for
Job Template attributes by a Printer object is OPTIONAL (see section Job Template attributes by a Printer object is OPTIONAL (see section
13.2.3 for a description of support for OPTIONAL attributes). Also, 12.2.3 for a description of support for OPTIONAL attributes). Also,
clients OPTIONALLY supply Job Template attributes in create requests. clients OPTIONALLY supply Job Template attributes in create 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 a 1. If the Printer object supports "xxx" then it MUST support both a
"xxx-default" attribute (unless there is a "No" in the table below) "xxx-default" attribute (unless there is a "No" in the table below)
and a "xxx-supported" attribute. If the Printer object doesn't and a "xxx-supported" attribute. If the Printer object doesn't
Expires August 17, 1999
support "xxx", then it MUST support neither an "xxx-default" support "xxx", then it MUST support neither an "xxx-default"
attribute nor an "xxx-supported" attribute, and it MUST treat an attribute nor an "xxx-supported" attribute, and it MUST treat an
attribute "xxx" supplied by a client as unsupported. An attribute attribute "xxx" supplied by a client as unsupported. An attribute
"xxx" may be supported for some document formats and not supported "xxx" may be supported for some document formats and not supported
for other document formats. For example, it is expected that a for other document formats. For example, it is expected that a
Printer object would only support "orientation-requested" for some Printer object would only support "orientation-requested" for some
document formats (such as 'text/plain' or 'text/html') but not document formats (such as 'text/plain' or 'text/html') but not
others (such as 'application/postscript'). others (such as 'application/postscript').
2. "xxx" is OPTIONALLY supplied by the client in a create request. 2. "xxx" is OPTIONALLY supplied by the client in a create request.
skipping to change at page 73, line 42 skipping to change at page 77, line 5
what xxx-related behaviors are supported by inspecting the returned what xxx-related behaviors are supported by inspecting the returned
values of the "xxx-supported" attribute. values of the "xxx-supported" attribute.
Note: The "xxx" in each "xxx-supported" attribute name is singular, Note: The "xxx" in each "xxx-supported" attribute name is singular,
even though an "xxx-supported" attribute usually has more than one even though an "xxx-supported" attribute usually has more than one
value, such as "job-sheet-supported", unless the "xxx" Job Template value, such as "job-sheet-supported", unless the "xxx" Job Template
attribute is plural, such as "finishings" or "sides". In such attribute is plural, such as "finishings" or "sides". In such
cases the "xxx-supported" attribute names are: "finishings- cases the "xxx-supported" attribute names are: "finishings-
supported" and "sides-supported". supported" and "sides-supported".
Expires November 10, 1999
4. The "xxx-default" default value attribute describes what will be 4. The "xxx-default" default value attribute describes what will 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 IPP information is supplied by the client (either explicitly as an IPP
attribute in the create request or implicitly as an embedded attribute in the create request or implicitly as an embedded
instruction within the document data). instruction within the document data).
If an application wishes to present an end user with a list of supported If an application wishes to present an end user with a list of supported
values from which to choose, the application SHOULD query the Printer values from which to choose, the application SHOULD query the Printer
object for its supported value attributes. The application SHOULD also object for its supported value attributes. The application SHOULD also
query the default value attributes. If the application then limits query the default value attributes. If the application then limits
selectable values to only those value that are supported, the selectable values to only those value that are supported, the
application can guarantee that the values supplied by the client in the application can guarantee that the values supplied by the client in the
create request all fall within the set of supported values at the create request all fall within the set of supported values at the
Printer. When querying the Printer, the client MAY enumerate each Printer. When querying the Printer, the client MAY enumerate each
attribute by name in the Get-Printer-Attributes Request, or the client attribute by name in the Get-Printer-Attributes Request, or the client
MAY just name the "job-template" group in order to get the complete set MAY just name the "job-template" group in order to get the complete set
of supported attributes (both supported and default attributes). of supported attributes (both supported and default attributes).
Expires August 17, 1999
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 'staple', 'punch', and/or
'cover'. A client can query the Printer object for the "finishings- 'cover'. A client can query the Printer object for the "finishings-
supported" attribute and the "finishings-default" attribute. The supported" attribute and the "finishings-default" attribute. The
supported attribute contains a set of supported values. The default supported attribute contains a set of supported values. The default
value attribute contains the finishing value(s) that will be used for a value attribute contains the finishing value(s) that will be used for a
new Job if the client does not supply a "finishings" attribute in the new Job if the client does not supply a "finishings" attribute in the
create request and the document data does not contain any corresponding create request and the document data does not contain any corresponding
finishing instructions. If the client does supply the "finishings" finishing instructions. If the client does supply the "finishings"
attribute in the create request, the IPP object validates the value or attribute in the create request, the IPP object validates the value or
values to make sure that they are a subset of the supported values values to make sure that they are a subset of the supported values
identified in the Printer object's "finishings-supported" attribute. identified in the Printer object's "finishings-supported" attribute.
See section 3.2.1.2. See section 3.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 in Attribute") shows the name and syntax for each Job Template attribute in
the Job object. These are the attributes that can optionally be supplied the Job object. These are the attributes that can optionally be supplied
by the client in a create request. The last two columns (labeled by the client in a create request. The last two columns (labeled
"Printer: Default Value Attribute" and "Printer: Supported Values "Printer: Default Value Attribute" and "Printer: Supported Values
Attribute") shows the name and syntax for each Job Template attribute in Attribute") shows the name and syntax for each Job Template attribute in
the Printer object (the default value attribute and the supported values the Printer object (the default value attribute and the supported values
attribute). A "No" in the table means the Printer MUST NOT support the attribute). A "No" in the table means the Printer MUST NOT support the
attribute (that is, the attribute is simply not applicable). For attribute (that is, the attribute is simply not applicable). For
brevity in the table, the 'text' and 'name' entries do not show the brevity in the table, the 'text' and 'name' entries do not show the
maximum length for each attribute. maximum length for each attribute.
Expires August 17, 1999 Expires November 10, 1999
+===================+======================+======================+ +===================+======================+======================+
| Job Attribute |Printer: Default Value| Printer: Supported | | Job Attribute |Printer: Default Value| Printer: Supported |
| | Attribute | Values Attribute | | | 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 | | (type3 keyword | | default | supported |
| name) | (type3 keyword | |(1setOf | | name) | (type3 keyword | |(1setOf ( |
| | name) | type3 keyword | name)| | | name) |type3 keyword | name))|
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| job-sheets | job-sheets-default |job-sheets-supported | | job-sheets | job-sheets-default |job-sheets-supported |
| (type3 keyword | | (type3 keyword | |(1setOf | | (type3 keyword | | (type3 keyword | |(1setOf ( |
| name) | name) | type3 keyword | name)| | name) | name) |type3 keyword | name))|
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
|multiple-document- |multiple-document- |multiple-document- | |multiple-document- |multiple-document- |multiple-document- |
| handling | handling-default |handling-supported | | handling | handling-default |handling-supported |
| (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| | (type2 keyword) | (type2 keyword) |(1setOf type2 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 |
skipping to change at page 75, line 52 skipping to change at page 78, line 52
| (integer (1:MAX)) | (integer (1:MAX)) |(1setOf integer | | (integer (1:MAX)) | (integer (1:MAX)) |(1setOf integer |
| | | (1:MAX) | | | | | (1:MAX) | |
| | | rangeOfInteger | | | | rangeOfInteger |
| | | (1:MAX)) | | | | (1:MAX)) |
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| orientation- |orientation-requested-|orientation-requested-| | orientation- |orientation-requested-|orientation-requested-|
| requested | default | supported | | requested | default | supported |
| (type2 enum) | (type2 enum) | (1setOf type2 enum) | | (type2 enum) | (type2 enum) | (1setOf type2 enum) |
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| media | media-default | media-supported | | media | media-default | media-supported |
| (type3 keyword | | (type3 keyword | |(1setOf | | (type3 keyword | | (type3 keyword | |(1setOf ( |
| name) | name) | type3 keyword | name)| | name) | name) |type3 keyword | name))|
| | | | | | | |
| | | media-ready | | | | media-ready |
| | |(1setOf | | | |(1setOf ( |
| | | type3 keyword | name)| | | |type3 keyword | name))|
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| printer-resolution| printer-resolution- | printer-resolution- | | printer-resolution| printer-resolution- | printer-resolution- |
Expires August 17, 1999
| (resolution) | default | supported | | (resolution) | default | supported |
Expires November 10, 1999
| | (resolution) |(1setOf resolution) | | | (resolution) |(1setOf resolution) |
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| print-quality | print-quality-default| print-quality- | | print-quality | print-quality-default| print-quality- |
| (type2 enum) | (type2 enum) | supported | | (type2 enum) | (type2 enum) | supported |
| | |(1setOf type2 enum) | | | |(1setOf type2 enum) |
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
4.2.1 job-priority (integer(1:100)) 4.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
skipping to change at page 77, line 5 skipping to change at page 80, line 5
of values is: 25 and 75; if n = 3, the sequence of values is: 17, 50 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, 35, 45, 55, 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 is: 1, 2, 3, . 65, 75, 85, and 95; if n = 100, the sequence of values is: 1, 2, 3, .
100. 100.
If the value of the Printer object's "job-priority-supported" is 10 and If the value of the Printer object's "job-priority-supported" is 10 and
the client supplies values in the range 1 to 10, the Printer object maps the client supplies values in the range 1 to 10, the Printer object maps
them to 5, in the range 11 to 20, the Printer object maps them to 15, them to 5, in the range 11 to 20, the Printer object maps them to 15,
etc. etc.
Expires August 17, 1999 Expires November 10, 1999
4.2.2 job-hold-until (type3 keyword | name (MAX)) 4.2.2 job-hold-until (type3 keyword | name (MAX))
This attribute specifies the named time period during which the Job MUST This attribute specifies the named time period during which the Job MUST
become a candidate for printing. 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 'no-hold': immediately, if there are not other reasons to hold the
job job
skipping to change at page 78, line 5 skipping to change at page 81, line 5
4.2.3 job-sheets (type3 keyword | name(MAX)) 4.2.3 job-sheets (type3 keyword | name(MAX))
This attribute determines which job start/end sheet(s), if any, MUST be This attribute determines which job start/end sheet(s), if any, MUST be
printed with a job. printed with a job.
Standard keyword values are: Standard keyword values are:
'none': no job sheet is printed 'none': no job sheet is printed
Expires August 17, 1999 Expires November 10, 1999
'standard': one or more site specific standard job sheets are '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, e.g. a single start sheet or both start and end sheet is
printed printed
An administrator MAY define additional values using the 'name' or An administrator MAY define additional values using the 'name' or
'keyword' attribute syntax, depending on implementation. 'keyword' attribute syntax, depending on implementation.
Note: The effect of this attribute on jobs with multiple documents MAY Note: The effect of this attribute on jobs with multiple documents MAY
be affected by the "multiple-document-handling" job attribute (section be affected by the "multiple-document-handling" job attribute (section
4.2.4), depending on the job sheet semantics. 4.2.4), depending on the job sheet semantics.
4.2.4 multiple-document-handling (type2 keyword) 4.2.4 multiple-document-handling (type2 keyword)
This attribute is relevant only if a job consists of two or more This attribute is relevant only if a job consists of two or more
documents. The attribute controls finishing operations and the placement documents. This attribute MUST be supported if the Printer supports
of one or more print-stream pages into impressions and onto media multiple documents per job (see sections 3.2.4 and 3.3.1). Issue 34 The
sheets. When the value of the "copies" attribute exceeds 1, it also attribute controls finishing operations and the placement of one or more
controls the order in which the copies that result from processing the print-stream pages into impressions and onto media sheets. When the
documents are produced. For the purposes of this explanations, if "a" value of the "copies" attribute exceeds 1, it also controls the order in
represents an instance of document data, then the result of processing which the copies that result from processing the documents are produced.
the data in document "a" is a sequence of media sheets represented by For the purposes of this explanations, if "a" represents an instance of
"a(*)". document data, then the result of processing the data in document "a" is
a sequence of media sheets represented by "a(*)".
Standard keyword values are: Standard keyword values are:
'single-document': If a Job object has multiple documents, say, the 'single-document': If a Job object has multiple documents, say, the
document data is called a and b, then the result of processing all document data is called a and b, then the result of processing all
the document data (a and then b) MUST be treated as a single the document data (a and then b) MUST be treated as a single
sequence of media sheets for finishing operations; that is, sequence of media sheets for finishing operations; that is,
finishing would be performed on the concatenation of the sequences finishing would be performed on the concatenation of the sequences
a(*),b(*). The Printer object MUST NOT force the data in each a(*),b(*). The Printer object MUST NOT force the data in each
document instance to be formatted onto a new print-stream page, nor document instance to be formatted onto a new print-stream page, nor
skipping to change at page 79, line 5 skipping to change at page 82, line 5
sheet. If more than one copy is made, the ordering of the sets of sheet. If more than one copy is made, the ordering of the sets of
media sheets resulting from processing the document data MUST be media sheets resulting from processing the document data MUST be
a(*), a(*), ..., b(*), b(*) ... . a(*), a(*), ..., b(*), b(*) ... .
'separate-documents-collated-copies': If a Job object has multiple 'separate-documents-collated-copies': If a Job object has multiple
documents, say, the document data is called a and b, then the documents, say, the document data is called a and b, then the
result of processing the data in each document instance MUST be result of processing the data in each document instance MUST be
treated as a single sequence of media sheets for finishing treated as a single sequence of media sheets for finishing
operations; that is, the sets a(*) and b(*) would each be finished operations; that is, the sets a(*) and b(*) would each be finished
separately. The Printer object MUST force each copy of the result separately. The Printer object MUST force each copy of the result
Expires August 17, 1999 Expires November 10, 1999
of processing the data in a single document to start on a new media of processing the data in a single document to start on a new media
sheet. If more than one copy is made, the ordering of the sets of sheet. If more than one copy is made, the ordering of the sets of
media sheets resulting from processing the document data MUST be media sheets resulting from processing the document data MUST be
a(*), b(*), a(*), b(*), ... . a(*), b(*), a(*), b(*), ... .
'single-document-new-sheet': Same as 'single-document', except that 'single-document-new-sheet': Same as 'single-document', except that
the Printer object MUST ensure that the first impression of each the Printer object MUST ensure that the first impression of each
document instance in the job is placed on a new media sheet. This document instance in the job is placed on a new media sheet. This
value allows multiple documents to be stapled together with a value allows multiple documents to be stapled together with a
single staple where each document starts on a new sheet. single staple where each document starts on a new sheet.
skipping to change at page 79, line 35 skipping to change at page 82, line 35
sheet', documents a and b are stapled together as a single document, but sheet', documents a and b are stapled together as a single document, but
document b starts on a new sheet, but with 'separate-documents- document b starts on a new sheet, but with 'separate-documents-
uncollated-copies' and 'separate-documents-collated-copies', documents a uncollated-copies' and 'separate-documents-collated-copies', documents a
and b are stapled separately. and b are stapled separately.
Note: None of these values provide means to produce uncollated sheets Note: None of these values provide means to produce uncollated sheets
within a document, i.e., where multiple copies of sheet n are produced within a document, i.e., where multiple copies of sheet n are produced
before sheet n+1 of the same document. before sheet n+1 of the same document.
The relationship of this attribute and the other attributes that control The relationship of this attribute and the other attributes that control
document processing is described in section 16.3. document processing is described in section 15.3.
4.2.5 copies (integer(1:MAX)) 4.2.5 copies (integer(1:MAX))
This attribute specifies the number of copies to be printed. This attribute specifies the number of copies to be printed.
On many devices the supported number of collated copies will be limited On many devices the supported number of collated copies will be limited
by the number of physical output bins on the device, and may be by the number of physical output bins on the device, and may be
different from the number of uncollated copies which can be supported. different from the number of uncollated copies which can be 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 (section
4.2.4) and the relationship of this attribute and the other attributes 4.2.4) and the relationship of this attribute and the other attributes
that control document processing is described in section 16.3. that control document processing is described in section 15.3.
4.2.6 finishings (1setOf type2 enum) 4.2.6 finishings (1setOf type2 enum)
This attribute identifies the finishing operations that the Printer uses This attribute identifies the finishing operations that the Printer uses
for each copy of each printed document in the Job. For Jobs with for each copy of each printed document in the Job. For Jobs with
multiple documents, the "multiple-document-handling" attribute multiple documents, the "multiple-document-handling" attribute
determines what constitutes a "copy" for purposes of finishing. determines what constitutes a "copy" for purposes of finishing.
Standard enum values are: Standard enum values are:
Expires August 17, 1999
Value Symbolic Name and Description Value Symbolic Name and Description
Expires November 10, 1999
'3' 'none': Perform no finishing '3' 'none': Perform no finishing
'4' 'staple': Bind the document(s) with one or more staples. The '4' 'staple': Bind the document(s) with one or more staples. The
exact number and placement of the staples is site- exact number and placement of the staples is site-
defined. defined.
'5' 'punch': This value indicates that holes are required in the '5' 'punch': This value indicates that holes are required in the
finished document. The exact number and placement of the finished document. The exact number and placement of the
holes is site-defined The punch specification MAY be holes is site-defined The punch specification MAY be
satisfied (in a site- and implementation-specific manner) satisfied (in a site- and implementation-specific manner)
either by drilling/punching, or by substituting pre- either by drilling/punching, or by substituting pre-
drilled media. drilled media.
skipping to change at page 81, line 4 skipping to change at page 83, line 59
'25' 'edge-stitch-top': Bind the document(s) with one or more '25' 'edge-stitch-top': Bind the document(s) with one or more
staples (wire stitches) along the top edge. The exact staples (wire stitches) along the top edge. The exact
number and placement of the staples is implementation number and placement of the staples is implementation
and/or site-defined. and/or site-defined.
'26' 'edge-stitch-right': Bind the document(s) with one or more '26' 'edge-stitch-right': Bind the document(s) with one or more
staples (wire stitches) along the right edge. The exact staples (wire stitches) along the right edge. The exact
number and placement of the staples is implementation number and placement of the staples is implementation
and/or site-defined. and/or site-defined.
'27' 'edge-stitch-bottom': Bind the document(s) with one or more '27' 'edge-stitch-bottom': Bind the document(s) with one or more
staples (wire stitches) along the bottom edge. The exact staples (wire stitches) along the bottom edge. The exact
Expires August 17, 1999
number and placement of the staples is implementation number and placement of the staples is implementation
and/or site-defined. and/or site-defined.
Expires November 10, 1999
'28' 'staple-dual-left': Bind the document(s) with two staples '28' 'staple-dual-left': Bind the document(s) with two staples
(wire stitches) along the left edge assuming a portrait (wire stitches) along the left edge assuming a portrait
document (see above). document (see above).
'29' 'staple-dual-top': Bind the document(s) with two staples '29' 'staple-dual-top': Bind the document(s) with two staples
(wire stitches) along the top edge assuming a portrait (wire stitches) along the top edge assuming a portrait
document (see above). document (see above).
'30' 'staple-dual-right': Bind the document(s) with two staples '30' 'staple-dual-right': Bind the document(s) with two staples
(wire stitches) along the right edge assuming a portrait (wire stitches) along the right edge assuming a portrait
document (see above). document (see above).
'31' 'staple-dual-bottom': Bind the document(s) with two staples '31' 'staple-dual-bottom': Bind the document(s) with two staples
skipping to change at page 81, line 40 skipping to change at page 84, line 38
the 'staple-top-right' value (since reverse-landscape is defined as a - the 'staple-top-right' value (since reverse-landscape is defined as a -
90 degree rotation from portrait, i.e., clockwise). 90 degree rotation from portrait, i.e., clockwise).
The angle (vertical, horizontal, angled) of each staple with respect to The angle (vertical, horizontal, angled) of each staple with respect to
the document depends on the implementation which may in turn depend on the document depends on the implementation which may in turn depend on
the value of the attribute. the value of the attribute.
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 (section
4.2.4) and the relationship of this attribute and the other attributes 4.2.4) and the relationship of this attribute and the other attributes
that control document processing is described in section 16.3. that control document processing is described in section 15.3.
If the client supplies a value of 'none' along with any other If the client supplies a value of 'none' along with any other
combination of values, it is the same as if only that other combination combination of values, it is the same as if only that other combination
of values had been supplied (that is the 'none' value has no effect). of values had been supplied (that is the 'none' value has no effect).
4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX)) 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX))
This attribute identifies the range(s) of print-stream pages that the This attribute identifies the range(s) of print-stream pages that the
Printer object uses for each copy of each document which are to be Printer object uses for each copy of each document which are to be
printed. Nothing is printed for any pages identified that do not exist printed. Nothing is printed for any pages identified that do not exist
in the document(s). Ranges MUST be in ascending order, for example: 1- in the document(s). Ranges MUST be in ascending order, for example: 1-
3, 5-7, 15-19 and MUST NOT overlap, so that a non-spooling Printer 3, 5-7, 15-19 and MUST NOT overlap, so that a non-spooling Printer
object can process the job in a single pass. If the ranges are not object can process the job in a single pass. If the ranges are not
ascending or are overlapping, the IPP object MUST reject the request and ascending or are overlapping, the IPP object MUST reject the request and
return the 'client-error-bad-request' status code. The attribute is return the 'client-error-bad-request' status code. The attribute is
associated with print-stream pages not application-numbered pages (for associated with print-stream pages not application-numbered pages (for
example, the page numbers found in the headers and or footers for example, the page numbers found in the headers and or footers for
certain word processing applications). certain word processing applications).
Expires August 17, 1999
For Jobs with multiple documents, the "multiple-document-handling" For Jobs with multiple documents, the "multiple-document-handling"
attribute determines what constitutes a "copy" for purposes of the attribute determines what constitutes a "copy" for purposes of the
specified page range(s). When "multiple-document-handling" is 'single- specified page range(s). When "multiple-document-handling" is 'single-
Expires November 10, 1999
document', the Printer object MUST apply each supplied page range once document', the Printer object MUST apply each supplied page range once
to the concatenation of the print-stream pages. For example, if there to the concatenation of the print-stream pages. For example, if there
are 8 documents of 10 pages each, the page-range '41:60' prints the 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 in the 5th and 6th documents as a single document and none of the
pages of the other documents are printed. When "multiple-document- pages of the other documents are printed. When "multiple-document-
handling" is 'separate-document-uncollated-copies' or 'separate- handling" is 'separate-documents-uncollated-copies' or 'separate-
document-collated-copies', the Printer object MUST apply each supplied documents-collated-copies', the Printer object MUST apply each supplied
page range repeatedly to each document copy. For the same job, the 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 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. 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 In most cases, the exact pages to be printed will be generated by a
device driver and this attribute would not be required. However, when device driver and this attribute would not be required. However, when
printing an archived document which has already been formatted, the end 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 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 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 page to be printed will be page n. All subsequent pages of the document
skipping to change at page 82, line 38 skipping to change at page 85, line 35
"page-ranges-supported" is a boolean value indicating whether or not the "page-ranges-supported" is a boolean value indicating whether or not the
printer is capable of supporting the printing of page ranges. This printer is capable of supporting the printing of page ranges. This
capability may differ from one PDL to another. There is no "page-ranges- capability may differ from one PDL to another. There is no "page-ranges-
default" attribute. If the "page-ranges" attribute is not supplied by default" attribute. If the "page-ranges" attribute is not supplied by
the client, all pages of the document will be printed. the client, all pages of the document will be printed.
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 (section
4.2.4) and the relationship of this attribute and the other attributes 4.2.4) and the relationship of this attribute and the other attributes
that control document processing is described in section 16.3. that control document processing is described in section 15.3.
4.2.8 sides (type2 keyword) 4.2.8 sides (type2 keyword)
This attribute specifies how print-stream pages are to be imposed upon This attribute specifies how print-stream pages are to be imposed upon
the sides of an instance of a selected medium, i.e., an impression. the sides of an instance of a selected medium, i.e., an impression.
The standard keyword values are: The standard keyword values are:
'one-sided': imposes each consecutive print-stream page upon the same 'one-sided': imposes each consecutive print-stream page upon the same
side of consecutive media sheets. side of consecutive media sheets.
skipping to change at page 83, line 5 skipping to change at page 85, line 59
medium would be correct for the reader as if for binding 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- long edge. This imposition is sometimes called 'duplex' or 'head-
to-head'. to-head'.
'two-sided-short-edge': imposes each consecutive pair of print-stream 'two-sided-short-edge': imposes each consecutive pair of print-stream
pages upon front and back sides of consecutive media sheets, such pages upon front and back sides of consecutive media sheets, such
that the orientation of each pair of print-stream pages on the 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 medium would be correct for the reader as if for binding on the
short edge. This imposition is sometimes called 'tumble' or 'head- short edge. This imposition is sometimes called 'tumble' or 'head-
to-toe'. to-toe'.
Expires August 17, 1999
'two-sided-long-edge', 'two-sided-short-edge', 'tumble', and 'duplex' 'two-sided-long-edge', 'two-sided-short-edge', 'tumble', and 'duplex'
all work the same for portrait or landscape. However 'head-to-toe' is all work the same for portrait or landscape. However 'head-to-toe' is
Expires November 10, 1999
'tumble' in portrait but 'duplex' in landscape. 'head-to-head' also 'tumble' in portrait but 'duplex' in landscape. 'head-to-head' also
switches between 'duplex' and 'tumble' when using portrait and landscape switches between 'duplex' and 'tumble' when using portrait and landscape
modes. modes.
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 (section
4.2.4) and the relationship of this attribute and the other attributes 4.2.4) and the relationship of this attribute and the other attributes
that control document processing is described in section 16.3. that control document processing is described in section 15.3.
4.2.9 number-up (integer(1:MAX)) 4.2.9 number-up (integer(1:MAX))
This attribute specifies the number of print-stream pages to impose upon This attribute specifies the number of print-stream pages to impose upon
a single side of an instance of a selected medium. For example, if the a single side of an instance of a selected medium. For example, if the
value is: value is:
Value Description Value Description
'1' the Printer MUST place one print-stream page on a single side '1' the Printer MUST place one print-stream page on a single side
skipping to change at page 83, line 42 skipping to change at page 86, line 40
'4' the Printer MUST place four print-stream pages on a single '4' the Printer MUST place four print-stream pages on a single
side of an instance of the selected medium (MAY add some side of an instance of the selected medium (MAY add some
sort of translation, scaling, or rotation). sort of translation, scaling, or rotation).
This attribute primarily controls the translation, scaling and rotation This attribute primarily controls the translation, scaling and rotation
of print-stream pages. of print-stream pages.
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 (section
4.2.4) and the relationship of this attribute and the other attributes 4.2.4) and the relationship of this attribute and the other attributes
that control document processing is described in section 16.3. that control document processing is described in section 15.3.
4.2.10 orientation-requested (type2 enum) 4.2.10 orientation-requested (type2 enum)
This attribute indicates the desired orientation for printed print- This attribute indicates the desired orientation for printed print-
stream pages; it does not describe the orientation of the client- stream pages; it does not describe the orientation of the client-
supplied print-stream pages. supplied print-stream 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 print-stream pages is specified within the
document data. This information is generated by a device driver prior document data. This information is generated by a device driver prior
to the submission of the print job. Other document formats (such as to the submission of the print job. Other document formats (such as
'text/plain') do not include the notion of desired orientation within 'text/plain') do not include the notion of desired orientation within
the document data. In the latter case it is possible for the Printer the document data. In the latter case it is possible for the Printer
object to bind the desired orientation to the document data after it has object to bind the desired orientation to the document data after it has
been submitted. It is expected that a Printer object would only support been submitted. It is expected that a Printer object would only support
Expires August 17, 1999
"orientations-requested" for some document formats (e.g., 'text/plain' "orientations-requested" for some document formats (e.g., 'text/plain'
or 'text/html') but not others (e.g., 'application/postscript'). This or 'text/html') but not others (e.g., 'application/postscript'). This
is no different than any other Job Template attribute since section 4.2, is no different than any other Job Template attribute since section 4.2,
item 1, points out that a Printer object may support or not support any item 1, points out that a Printer object may support or not support any
Job Template attribute based on the document format supplied by the Job Template attribute based on the document format supplied by the
Expires November 10, 1999
client. However, a special mention is made here since it is very likely client. However, a special mention is made here since it is very likely
that a Printer object will support "orientation-requested" for only a that 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:
Value Symbolic Name and Description Value Symbolic Name and Description
'3' 'portrait': The content will be imaged across the short edge '3' 'portrait': The content will be imaged across the short edge
of the medium. of the medium.
skipping to change at page 84, line 53 skipping to change at page 87, line 48
where the opposite edge is desired for finishing a where the opposite edge is desired for finishing a
portrait document on simple finishing devices that have portrait document on simple finishing devices that have
only one finishing position. Thus a 'text'/plain' only one finishing position. Thus a 'text'/plain'
portrait document can be stapled "on the right" by a portrait document can be stapled "on the right" by a
simple finishing device as is common use with some middle simple finishing device as is common use with some middle
eastern languages such as Hebrew. eastern languages such as Hebrew.
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 (section
4.2.4) and the relationship of this attribute and the other attributes 4.2.4) and the relationship of this attribute and the other attributes
that control document processing is described in section 16.3. that control document processing is described in section 15.3.
4.2.11 media (type3 keyword | name(MAX)) 4.2.11 media (type3 keyword | name(MAX))
This attribute identifies the medium that the Printer uses for all This attribute identifies the medium that the Printer uses for all
impressions of the Job. impressions of the Job.