draft-ietf-ipp-model-v11-02.txt   draft-ietf-ipp-model-v11-03.txt 
INTERNET-DRAFT INTERNET-DRAFT
draft-ietf-ipp-model-v11-02.txt draft-ietf-ipp-model-v11-03.txt
R. deBry R. deBry
Utah Valley State College 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
May 10, 1998 June 11, 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 2, line 4 skipping to change at page 1, line 54
using Internet tools and technologies. This document describes a using Internet tools and technologies. This document describes a
simplified model consisting of abstract objects, their attributes, 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:
Design Goals for an Internet Printing Protocol [RFC2567] Design Goals for an Internet Printing Protocol [RFC2567]
Expires December 11, 1999
Rationale for the Structure and Model and Protocol for the Internet Rationale for the Structure and Model and Protocol for the Internet
Printing Protocol [RFC2568] 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 [RFC2569] 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. 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.
The "Rationale for the Structure and Model and Protocol for the Internet The "Rationale for the Structure and Model and Protocol for the Internet
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 specification documents, and gives background and rationale for the IETF
group's major decisions. working 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 interoperability 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 November 10, 1999 Expires December 11, 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....................................................15 2.2 Job Object..................................................15
2.3 Object Relationships..........................................16 2.3 Object Relationships........................................16
2.4 Object Identity...............................................17 2.4 Object Identity.............................................17
3. IPP Operations..................................................19 3. IPP Operations..................................................20
3.1 Common Semantics..............................................20 3.1 Common Semantics............................................20
3.1.1 Required Parameters........................................20 3.1.1 Required Parameters......................................21
3.1.2 Operation IDs and Request IDs..............................21 3.1.2 Operation IDs and Request IDs............................21
3.1.3 Attributes.................................................21 3.1.3 Attributes...............................................21
3.1.4 Character Set and Natural Language Operation Attributes....23 3.1.4 Character Set and Natural Language Operation Attributes..23
3.1.4.1 Request Operation Attributes..........................23 3.1.4.1 Request Operation Attributes..........................23
3.1.4.2 Response Operation Attributes.........................27 3.1.4.2 Response Operation Attributes.........................27
3.1.5 Operation Targets..........................................28 3.1.5 Operation Targets........................................28
3.1.6 Operation Status Codes and Messages........................29 3.1.6 Operation Response Status Codes and Status Messages......29
3.1.7 Unsupported Attributes.....................................30 3.1.6.1 "status-code" (type2 enum)............................29
3.1.8 Versions...................................................31 3.1.6.2 "status-message" (text(255))..........................30
3.1.9 Job Creation Operations....................................33 3.1.6.3 "detailed-status-message" (text(MAX)) ...............31
3.2 Printer Operations............................................35 3.1.6.4 "document-access-error" (text(MAX)) .................31
3.2.1 Print-Job Operation........................................35 3.1.7 Unsupported Attributes...................................31
3.2.1.1 Print-Job Request.....................................35 3.1.8 Versions.................................................33
3.2.1.2 Print-Job Response....................................39 3.1.9 Job Creation Operations..................................35
3.2.2 Print-URI Operation........................................41 3.2 Printer Operations..........................................37
3.2.3 Validate-Job Operation.....................................42 3.2.1 Print-Job Operation......................................37
3.2.4 Create-Job Operation.......................................42 3.2.1.1 Print-Job Request.....................................37
3.2.5 Get-Printer-Attributes Operation...........................43 3.2.1.2 Print-Job Response....................................41
3.2.5.1 Get-Printer-Attributes Request........................43 3.2.2 Print-URI Operation......................................43
3.2.5.2 Get-Printer-Attributes Response.......................45 3.2.3 Validate-Job Operation...................................44
3.2.6 Get-Jobs Operation.........................................46 3.2.4 Create-Job Operation.....................................44
3.2.6.1 Get-Jobs Request......................................46 3.2.5 Get-Printer-Attributes Operation.........................45
3.2.6.2 Get-Jobs Response.....................................48 3.2.5.1 Get-Printer-Attributes Request........................46
3.2.7 Pause-Printer Operation....................................49 3.2.5.2 Get-Printer-Attributes Response.......................47
3.2.7.1 Pause-Printer Request.................................50 3.2.6 Get-Jobs Operation.......................................48
3.2.7.2 Pause-Printer Response................................51 3.2.6.1 Get-Jobs Request......................................49
3.2.8 Resume-Printer Operation...................................51 3.2.6.2 Get-Jobs Response.....................................50
3.2.9 Purge-Jobs Operation.......................................52 3.2.7 Pause-Printer Operation..................................51
3.3 Job Operations................................................52 3.2.7.1 Pause-Printer Request.................................53
3.3.1 Send-Document Operation....................................53 3.2.7.2 Pause-Printer Response................................53
3.3.1.1 Send-Document Request.................................54 3.2.8 Resume-Printer Operation.................................53
3.3.1.2 Send-Document Response................................55 3.2.9 Purge-Jobs Operation.....................................54
3.3.2 Send-URI Operation.........................................56 3.3 Job Operations..............................................55
3.3.3 Cancel-Job Operation.......................................56 3.3.1 Send-Document Operation..................................55
3.3.3.1 Cancel-Job Request....................................57 3.3.1.1 Send-Document Request.................................56
3.3.3.2 Cancel-Job Response...................................57 3.3.1.2 Send-Document Response................................57
3.3.4 Get-Job-Attributes Operation...............................58 3.3.2 Send-URI Operation.......................................58
3.3.4.1 Get-Job-Attributes Request............................59 3.3.3 Cancel-Job Operation.....................................58
3.3.4.2 Get-Job-Attributes Response...........................59 3.3.3.1 Cancel-Job Request....................................59
3.3.5 Hold-Job Operation.........................................60
Expires November 10, 1999 Expires December 11, 1999
3.3.5.1 Hold-Job Request......................................61 3.3.3.2 Cancel-Job Response...................................60
3.3.5.2 Hold-Job Response.....................................62 3.3.4 Get-Job-Attributes Operation.............................60
3.3.6 Release-Job Operation......................................62 3.3.4.1 Get-Job-Attributes Request............................61
3.3.7 Restart-Job Operation......................................63 3.3.4.2 Get-Job-Attributes Response...........................62
3.3.7.1 Restart-Job Request...................................64 3.3.5 Hold-Job Operation.......................................62
3.3.7.2 Restart-Job Response..................................65 3.3.5.1 Hold-Job Request......................................63
3.3.5.2 Hold-Job Response.....................................64
3.3.6 Release-Job Operation....................................64
3.3.7 Restart-Job Operation....................................65
3.3.7.1 Restart-Job Request...................................66
3.3.7.2 Restart-Job Response..................................67
4. Object Attributes...............................................65 4. Object Attributes...............................................68
4.1 Attribute Syntaxes............................................66 4.1 Attribute Syntaxes..........................................68
4.1.1 'text'.....................................................67 4.1.1 'text'...................................................69
4.1.1.1 'textWithoutLanguage'.................................67 4.1.1.1 'textWithoutLanguage'.................................70
4.1.1.2 'textWithLanguage'....................................68 4.1.1.2 'textWithLanguage'....................................70
4.1.2 'name'.....................................................68 4.1.2 'name'...................................................71
4.1.2.1 'nameWithoutLanguage'.................................69 4.1.2.1 'nameWithoutLanguage'.................................71
4.1.2.2 'nameWithLanguage'....................................69 4.1.2.2 'nameWithLanguage'....................................71
4.1.2.3 Matching 'name' attribute values......................69 4.1.2.3 Matching 'name' attribute values......................72
4.1.3 'keyword'..................................................70 4.1.3 'keyword'................................................72
4.1.4 'enum'.....................................................71 4.1.4 'enum'...................................................73
4.1.5 'uri'......................................................71 4.1.5 'uri'....................................................73
4.1.6 'uriScheme'................................................71 4.1.6 'uriScheme'..............................................74
4.1.7 'charset'..................................................72 4.1.7 'charset'................................................74
4.1.8 'naturalLanguage'..........................................72 4.1.8 'naturalLanguage'........................................75
4.1.9 'mimeMediaType'............................................73 4.1.9 'mimeMediaType'..........................................75
4.1.9.1 Application/octet-stream -- Auto-Sensing the document 4.1.9.1 Application/octet-stream -- Auto-Sensing the document
format 73 format 76
4.1.10................................................'octetString'74 4.1.10 'octetString'............................................77
4.1.11....................................................'boolean'74 4.1.11 'boolean'................................................77
4.1.12....................................................'integer'75 4.1.12 'integer'................................................77
4.1.13.............................................'rangeOfInteger'75 4.1.13 'rangeOfInteger'.........................................77
4.1.14...................................................'dateTime'75 4.1.14 'dateTime'...............................................77
4.1.15.................................................'resolution'75 4.1.15 'resolution'.............................................78
4.1.16..................................................'1setOf X'75 4.1.16 '1setOf X'..............................................78
4.2 Job Template Attributes.......................................76 4.2 Job Template Attributes.....................................78
4.2.1 job-priority (integer(1:100))..............................79 4.2.1 job-priority (integer(1:100))............................82
4.2.2 job-hold-until (type3 keyword | name (MAX))................80 4.2.2 job-hold-until (type3 keyword | name (MAX))..............83
4.2.3 job-sheets (type3 keyword | name(MAX)).....................80 4.2.3 job-sheets (type3 keyword | name(MAX))...................83
4.2.4 multiple-document-handling (type2 keyword).................81 4.2.4 multiple-document-handling (type2 keyword)...............84
4.2.5 copies (integer(1:MAX))....................................82 4.2.5 copies (integer(1:MAX))..................................85
4.2.6 finishings (1setOf type2 enum).............................82 4.2.6 finishings (1setOf type2 enum)...........................85
4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX))................84 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX))..............87
4.2.8 sides (type2 keyword)......................................85 4.2.8 sides (type2 keyword)....................................88
4.2.9 number-up (integer(1:MAX)).................................86 4.2.9 number-up (integer(1:MAX))...............................89
4.2.10...........................orientation-requested (type2 enum)86 4.2.10 orientation-requested (type2 enum).......................89
4.2.11............................media (type3 keyword | name(MAX))87 4.2.11 media (type3 keyword | name(MAX))........................91
4.2.12..............................printer-resolution (resolution)88 4.2.12 printer-resolution (resolution)..........................91
4.2.13...................................print-quality (type2 enum)88 4.2.13 print-quality (type2 enum)...............................91
4.3 Job Description Attributes....................................88 4.3 Job Description Attributes..................................92
4.3.1 job-uri (uri)..............................................90 4.3.1 job-uri (uri)............................................94
4.3.2 job-id (integer(1:MAX))....................................90 4.3.2 job-id (integer(1:MAX))..................................94
4.3.3 job-printer-uri (uri)......................................90
4.3.4 job-more-info (uri)........................................90
4.3.5 job-name (name(MAX)).......................................91
4.3.6 job-originating-user-name (name(MAX))......................91
4.3.7 job-state (type1 enum).....................................91
4.3.7.1 Partitioning of Job States............................94
Expires November 10, 1999 Expires December 11, 1999
4.3.8 job-state-reasons (1setOf type2 keyword)..................95 4.3.3 job-printer-uri (uri)....................................94
4.3.9 job-state-message (text(MAX))..............................98 4.3.4 job-more-info (uri)......................................95
4.3.10.........................number-of-documents (integer(0:MAX))98 4.3.5 job-name (name(MAX)).....................................95
4.3.11...........................output-device-assigned (name(127))98 4.3.6 job-originating-user-name (name(MAX))....................95
4.3.12..............Event Time Job Description Attributes Issue 1799 4.3.7 job-state (type1 enum)...................................95
4.3.12.1 time-at-creation (integer(MIN:MAX) | dateTime)........99 4.3.7.1 Forwarding Servers ..................................98
4.3.12.2 time-at-processing (integer(MIN:MAX) | dateTime)......99 4.3.7.2 Partitioning of Job States............................98
4.3.12.3 time-at-completed (integer(MIN:MAX) | dateTime)......100 4.3.8 job-state-reasons (1setOf type2 keyword)................99
4.3.12.4 job-printer-up-time (integer(1:MAX)) Issue 17........100 4.3.9 job-state-message (text(MAX))...........................103
4.3.13..................number-of-intervening-jobs (integer(0:MAX))100 4.3.10 job-detailed-status-messages (1setOf text(MAX)) ........103
4.3.14........................job-message-from-operator (text(127))100 4.3.11 job-document-access-errors (1setOf text(MAX)) ..........103
4.3.15..........................................Job Size Attributes100 4.3.12 number-of-documents (integer(0:MAX))....................103
4.3.15.1 job-k-octets (integer(0:MAX))........................101 4.3.13 output-device-assigned (name(127))......................104
4.3.15.2 job-impressions (integer(0:MAX)).....................101 4.3.14 Event Time Job Description Attributes .................104
4.3.15.3 job-media-sheets (integer(0:MAX))....................101 4.3.14.1 time-at-creation (integer(MIN:MAX))..................105
4.3.16......................................Job Progress Attributes102 4.3.14.2 time-at-processing (integer(MIN:MAX))................105
4.3.16.1 job-k-octets-processed (integer(0:MAX))..............102 4.3.14.3 time-at-completed (integer(MIN:MAX)).................105
4.3.16.2 job-impressions-completed (integer(0:MAX))...........102 4.3.14.4 job-printer-up-time (integer(1:MAX)) ................105
4.3.16.3 job-media-sheets-completed (integer(0:MAX))..........102 4.3.14.5 date-time-at-creation (dateTime) ...................105
4.3.17.................................attributes-charset (charset)102 4.3.14.6 date-time-at-processing (dateTime) .................105
4.3.18................attributes-natural-language (naturalLanguage)103 4.3.14.7 date-time-at-completed (dateTime) ..................105
4.4 Printer Description Attributes...............................103 4.3.15 number-of-intervening-jobs (integer(0:MAX)).............106
4.4.1 printer-uri-supported (1setOf uri)........................105 4.3.16 job-message-from-operator (text(127))...................106
4.4.2 uri-authentication-supported (1setOf type2 keyword) Issue 2105 4.3.17 Job Size Attributes.....................................106
4.4.3 uri-security-supported (1setOf type2 keyword).............106 4.3.17.1 job-k-octets (integer(0:MAX))........................106
4.4.4 printer-name (name(127))..................................108 4.3.17.2 job-impressions (integer(0:MAX)).....................107
4.4.5 printer-location (text(127))..............................108 4.3.17.3 job-media-sheets (integer(0:MAX))....................107
4.4.6 printer-info (text(127))..................................108 4.3.18 Job Progress Attributes.................................107
4.4.7 printer-more-info (uri)...................................108 4.3.18.1 job-k-octets-processed (integer(0:MAX))..............107
4.4.8 printer-driver-installer (uri)............................108 4.3.18.2 job-impressions-completed (integer(0:MAX))...........108
4.4.9 printer-make-and-model (text(127))........................108 4.3.18.3 job-media-sheets-completed (integer(0:MAX))..........108
4.4.10.........................printer-more-info-manufacturer (uri)108 4.3.19 attributes-charset (charset)............................108
4.4.11...................................printer-state (type1 enum)109 4.3.20 attributes-natural-language (naturalLanguage)...........108
4.4.12.................printer-state-reasons (1setOf type2 keyword)110 4.4 Printer Description Attributes.............................109
4.4.13............................printer-state-message (text(MAX))113 4.4.1 printer-uri-supported (1setOf uri)......................111
4.4.14......ipp-versions-supported (1setOf type2 keyword) Issue 36113 4.4.2 uri-authentication-supported (1setOf type2 keyword) ...111
4.4.15.....................operations-supported (1setOf type2 enum)113 4.4.3 uri-security-supported (1setOf type2 keyword)...........112
4.4.16.........multiple-document-jobs-supported (boolean) Issue 34114 4.4.4 printer-name (name(127))................................114
4.4.17.................................charset-configured (charset)114 4.4.5 printer-location (text(127))............................114
4.4.18...........................charset-supported (1setOf charset)114 4.4.6 printer-info (text(127))................................114
4.4.19................natural-language-configured (naturalLanguage)115 4.4.7 printer-more-info (uri).................................114
4.4.20generated-natural-language-supported (1setOf naturalLanguage)115 4.4.8 printer-driver-installer (uri)..........................114
4.4.21......................document-format-default (mimeMediaType)115 4.4.9 printer-make-and-model (text(127))......................114
4.4.22.............document-format-supported (1setOf mimeMediaType)116 4.4.10 printer-more-info-manufacturer (uri)....................115
4.4.23..........................printer-is-accepting-jobs (boolean)116 4.4.11 printer-state (type1 enum)..............................115
4.4.24............................queued-job-count (integer(0:MAX))116 4.4.12 printer-state-reasons (1setOf type2 keyword)............115
4.4.25....................printer-message-from-operator (text(127))116 4.4.13 printer-state-message (text(MAX)).......................118
4.4.26....................................color-supported (boolean)116 4.4.14 ipp-versions-supported (1setOf type2 keyword) .........118
4.4.27...........reference-uri-schemes-supported (1setOf uriScheme)116 4.4.15 operations-supported (1setOf type2 enum)................118
4.4.28.......................pdl-override-supported (type2 keyword)117 4.4.16 multiple-document-jobs-supported (boolean) ............119
4.4.29.............................printer-up-time (integer(1:MAX))117 4.4.17 charset-configured (charset)............................119
4.4.30..............................printer-current-time (dateTime)118 4.4.18 charset-supported (1setOf charset)......................120
4.4.31.................multiple-operation-time-out (integer(1:MAX))118 4.4.19 natural-language-configured (naturalLanguage)...........120
4.4.32.................compression-supported (1setOf type3 keyword)118
4.4.33...............job-k-octets-supported (rangeOfInteger(0:MAX))119
Expires November 10, 1999 Expires December 11, 1999
4.4.34............job-impressions-supported (rangeOfInteger(0:MAX))119 4.4.20 generated-natural-language-supported (1setOf naturalLanguage)
4.4.35...........job-media-sheets-supported (rangeOfInteger(0:MAX))119 120
4.4.36............................pages-per-minute (integer(0:MAX))119 4.4.21 document-format-default (mimeMediaType).................121
4.4.37......................pages-per-minute-color (integer(0:MAX))119 4.4.22 document-format-supported (1setOf mimeMediaType)........121
4.4.23 printer-is-accepting-jobs (boolean).....................121
4.4.24 queued-job-count (integer(0:MAX)).......................121
4.4.25 printer-message-from-operator (text(127))...............121
4.4.26 color-supported (boolean)...............................122
4.4.27 reference-uri-schemes-supported (1setOf uriScheme)......122
4.4.28 pdl-override-supported (type2 keyword)..................122
4.4.29 printer-up-time (integer(1:MAX))........................122
4.4.30 printer-current-time (dateTime).........................123
4.4.31 multiple-operation-time-out (integer(1:MAX))............123
4.4.32 compression-supported (1setOf type3 keyword)............124
4.4.33 job-k-octets-supported (rangeOfInteger(0:MAX))..........124
4.4.34 job-impressions-supported (rangeOfInteger(0:MAX)).......124
4.4.35 job-media-sheets-supported (rangeOfInteger(0:MAX))......124
4.4.36 pages-per-minute (integer(0:MAX)).......................125
4.4.37 pages-per-minute-color (integer(0:MAX)).................125
5. Conformance....................................................120 5. Conformance....................................................125
5.1 Client Conformance Requirements..............................120 5.1 Client Conformance Requirements............................126
5.2 IPP Object Conformance Requirements..........................121 5.2 IPP Object Conformance Requirements........................127
5.2.1 Objects...................................................122 5.2.1 Objects.................................................127
5.2.2 Operations................................................122 5.2.2 Operations..............................................127
5.2.3 IPP Object Attributes.....................................123 5.2.3 IPP Object Attributes...................................128
5.2.4 Versions..................................................123 5.2.4 Versions................................................128
5.2.5 Extensions................................................123 5.2.5 Extensions..............................................129
5.2.6 Attribute Syntaxes........................................123 5.2.6 Attribute Syntaxes......................................129
5.2.7 Security Issue 32.........................................123 5.2.7 Security ...............................................129
5.3 Charset and Natural Language Requirements....................124 5.3 Charset and Natural Language Requirements..................130
6. IANA Considerations (registered and private extensions)........124 6. IANA Considerations (registered and private extensions)........130
6.1 Typed 'keyword' and 'enum' Extensions........................125 6.1 Typed 'keyword' and 'enum' Extensions......................130
6.2 Attribute Extensibility......................................126 6.2 Attribute Extensibility....................................132
6.3 Attribute Syntax Extensibility...............................127 6.3 Attribute Syntax Extensibility.............................133
6.4 Operation Extensibility......................................127 6.4 Operation Extensibility....................................133
6.5 Attribute Groups.............................................128 6.5 Attribute Groups...........................................134
6.6 Status Code Extensibility....................................128 6.6 Status Code Extensibility..................................134
6.7 Registration of MIME types/sub-types for document-formats....129 6.7 Registration of MIME types/sub-types for document-formats..134
6.8 Registration of charsets for use in 'charset' attribute values129 6.8 Registration of charsets for use in 'charset' attribute values135
7. Internationalization Considerations............................129 7. Internationalization Considerations............................135
8. Security Considerations........................................132 8. Security Considerations........................................138
8.1 Security Scenarios...........................................133 8.1 Security Scenarios.........................................139
8.1.1 Client and Server in the Same Security Domain.............133 8.1.1 Client and Server in the Same Security Domain...........139
8.1.2 Client and Server in Different Security Domains...........133 8.1.2 Client and Server in Different Security Domains.........140
8.1.3 Print by Reference........................................133 8.1.3 Print by Reference......................................140
8.2 URIs in Operation, Job, and Printer attributes...............134 8.2 URIs in Operation, Job, and Printer attributes.............140
8.3 URIs for each authentication mechanisms......................134 8.3 URIs for each authentication mechanisms....................140
8.4 Restricted Queries...........................................135 8.4 Restricted Queries.........................................141
8.5 Operations performed by operators and system administrators..135 8.5 Operations performed by operators and system administrators141
8.6 Queries on jobs submitted using non-IPP protocols............135 8.6 Queries on jobs submitted using non-IPP protocols..........142
9. References.....................................................136 Expires December 11, 1999
10.Author's Address..............................................139 9. References.....................................................142
11.Formats for IPP Registration Proposals........................142 10.Author's Address..............................................146
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
Expires November 10, 1999 11.Formats for IPP Registration Proposals........................148
11.6...................................Attribute Syntax registration 11.1 Type2 keyword attribute values registration................148
143 11.2 Type3 keyword attribute values registration................148
11.7..........................................Operation registration 11.3 Type2 enum attribute values registration...................148
144 11.4 Type3 enum attribute values registration...................149
11.8....................................Attribute Group registration 11.5 Attribute registration.....................................149
144 11.6 Attribute Syntax registration..............................150
11.9........................................Status code registration 11.7 Operation registration.....................................150
144 11.8 Attribute Group registration...............................150
11.9 Status code registration...................................151
12.APPENDIX A: Terminology.......................................145 12.APPENDIX A: Terminology.......................................151
12.1.........................................Conformance Terminology 12.1 Conformance Terminology....................................151
145 12.1.1 NEED NOT................................................151
12.1.1.....................................................NEED NOT145 12.2 Model Terminology..........................................151
12.2...............................................Model Terminology 12.2.1 Keyword.................................................151
145 12.2.2 Attributes..............................................151
12.2.1......................................................Keyword145 12.2.2.1 Attribute Name.......................................152
12.2.2...................................................Attributes145 12.2.2.2 Attribute Group Name.................................152
12.2.2.1 Attribute Name.......................................146 12.2.2.3 Attribute Value......................................152
12.2.2.2 Attribute Group Name.................................146 12.2.2.4 Attribute Syntax.....................................152
12.2.2.3 Attribute Value......................................146 12.2.3 Supports................................................152
12.2.2.4 Attribute Syntax.....................................146 12.2.4 print-stream page.......................................154
12.2.3.....................................................Supports146 12.2.5 impression..............................................154
12.2.4............................................print-stream page148
12.2.5...................................................impression148
13.APPENDIX B: Status Codes and Suggested Status Code Messages..148 13.APPENDIX B: Status Codes and Suggested Status Code Messages..154
13.1....................................................Status Codes 13.1 Status Codes...............................................155
149 13.1.1 Informational...........................................156
13.1.1................................................Informational149 13.1.2 Successful Status Codes.................................156
13.1.2......................................Successful Status Codes150 13.1.2.1 successful-ok (0x0000)...............................156
13.1.2.1 successful-ok (0x0000)...............................150 13.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001)156
13.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001)150 13.1.2.3 successful-ok-conflicting-attributes (0x0002)........156
13.1.2.3 successful-ok-conflicting-attributes (0x0002)........150 13.1.3 Redirection Status Codes................................157
13.1.3.....................................Redirection Status Codes150 13.1.4 Client Error Status Codes...............................157
13.1.4....................................Client Error Status Codes151 13.1.4.1 client-error-bad-request (0x0400)....................157
13.1.4.1 client-error-bad-request (0x0400)....................151 13.1.4.2 client-error-forbidden (0x0401)......................157
13.1.4.2 client-error-forbidden (0x0401)......................151 13.1.4.3 client-error-not-authenticated (0x0402)..............157
13.1.4.3 client-error-not-authenticated (0x0402)..............151 13.1.4.4 client-error-not-authorized (0x0403).................157
13.1.4.4 client-error-not-authorized (0x0403).................151 13.1.4.5 client-error-not-possible (0x0404)...................158
13.1.4.5 client-error-not-possible (0x0404)...................151 13.1.4.6 client-error-timeout (0x0405)........................158
13.1.4.6 client-error-timeout (0x0405)........................152 13.1.4.7 client-error-not-found (0x0406)......................158
13.1.4.7 client-error-not-found (0x0406)......................152 13.1.4.8 client-error-gone (0x0407)...........................158
13.1.4.8 client-error-gone (0x0407)...........................152 13.1.4.9 client-error-request-entity-too-large (0x0408).......159
13.1.4.9 client-error-request-entity-too-large (0x0408).......152 13.1.4.10client-error-request-value-too-long (0x0409).........159
13.1.4.10client-error-request-value-too-long (0x0409).........153 13.1.4.11client-error-document-format-not-supported (0x040A)..159
13.1.4.11client-error-document-format-not-supported (0x040A)..153 13.1.4.12client-error-attributes-or-values-not-supported (0x040B)159
13.1.4.12client-error-attributes-or-values-not-supported (0x040B)153 13.1.4.13client-error-uri-scheme-not-supported (0x040C).......160
13.1.4.13client-error-uri-scheme-not-supported (0x040C).......154 13.1.4.14client-error-charset-not-supported (0x040D)..........160
13.1.4.14client-error-charset-not-supported (0x040D)..........154 13.1.4.15client-error-conflicting-attributes (0x040E).........160
13.1.4.15client-error-conflicting-attributes (0x040E).........154 13.1.4.16client-error-compression-not-supported (0x040F) .....160
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
Expires November 10, 1999 Expires December 11, 1999
13.1.5.1 server-error-internal-error (0x0500).................155 13.1.4.17client-error-compression-error (0x0410) ............161
13.1.5.2 server-error-operation-not-supported (0x0501)........155 13.1.4.18client-error-document-format-error (0x0411) ........161
13.1.5.3 server-error-service-unavailable (0x0502)............155 13.1.4.19client-error-document-access-error (0x0412) ........161
13.1.5.4 server-error-version-not-supported (0x0503)..........156 13.1.5 Server Error Status Codes...............................161
13.1.5.5 server-error-device-error (0x0504)...................156 13.1.5.1 server-error-internal-error (0x0500).................161
13.1.5.6 server-error-temporary-error (0x0505)................156 13.1.5.2 server-error-operation-not-supported (0x0501)........162
13.1.5.7 server-error-not-accepting-jobs (0x0506).............157 13.1.5.3 server-error-service-unavailable (0x0502)............162
13.1.5.8 server-error-busy (0x0507)...........................157 13.1.5.4 server-error-version-not-supported (0x0503)..........162
13.1.5.9 server-error-job-canceled (0x0508)...................157 13.1.5.5 server-error-device-error (0x0504)...................162
13.1.5.6 server-error-temporary-error (0x0505)................163
13.1.5.7 server-error-not-accepting-jobs (0x0506).............163
13.1.5.8 server-error-busy (0x0507)...........................163
13.1.5.9 server-error-job-canceled (0x0508)...................163
13.1.5.10server-error-multiple-document-jobs-not-supported (0x0509) 13.1.5.10server-error-multiple-document-jobs-not-supported (0x0509)
Issue 34 157 163
13.2.................................Status Codes for IPP Operations 13.2 Status Codes for IPP Operations............................164
158
14.APPENDIX C: "media" keyword values...........................160 14.APPENDIX C: "media" keyword values...........................166
15.APPENDIX D: Processing IPP Attributes.........................164 15.APPENDIX D: Processing IPP Attributes.........................170
15.1........................................................Fidelity 15.1 Fidelity...................................................170
164 15.2 Page Description Language (PDL) Override...................171
15.2........................Page Description Language (PDL) Override 15.3 Using Job Template Attributes During Document Processing...173
165
15.3.......Using Job Template Attributes During Document Processing.
167
16.APPENDIX E: Generic Directory Schema..........................168 16.APPENDIX E: Generic Directory Schema..........................174
17.APPENDIX F: Differences between the IPP/1.0 and IPP/1.1 "Model and 17.APPENDIX F: Differences between the IPP/1.0 and IPP/1.1 "Model and
Semantics" Specifications.........................................170 Semantics" Documents..............................................177
18.Full Copyright Statement......................................174 18.Full Copyright Statement......................................183
Expires November 10, 1999 Expires December 11, 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 [RFC2567] Design Goals for an Internet Printing Protocol [RFC2567]
skipping to change at page 9, line 40 skipping to change at page 9, line 40
- 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.
- Section 3 defines the operations included in IPP/1.1. IPP - Section 3 defines the operations included in IPP/1.1. IPP
operations are synchronous, therefore, for each operation, there is operations are synchronous, therefore, for each operation, there is
a both request and a response. a both request and a response.
- Section 4 defines the attributes (and their syntaxes) that are used - Section 4 defines the attributes (and their syntaxes) that are used
in the model. in the model.
- Sections 5 - 6 summarizes the implementation conformance - Sections 5 - 6 summarizes the implementation conformance
requirements for objects that support the protocol and IANA requirements for objects that support the protocol and IANA
considerations, respectively. considerations, respectively.
- Sections 7 - 12 cover the Internationalization and Security - Sections 7 - 11 cover the Internationalization and Security
considerations as well as References, Intellectual Property Notice, considerations as well as References, Author contact information,
Copyright Notice, Author contact information, and Formats for and Formats for Registration Proposals.
Registration Proposals. - Sections 12 - 14 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 12.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
12.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 15 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 16 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 November 10, 1999 Expires December 11, 1999
- Section 18 is an appendix summarizing the additions and changes - Section 17 is an appendix summarizing the additions and changes
from the IPP/1.0 "Model and Semantics" specification [RFC2566] to from the IPP/1.0 "Model and Semantics" document [RFC2566] to make
make this IPP/1.1 document. this IPP/1.1 document.
- Section 18 is the full copyright notice.
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 10, line 40 skipping to change at page 10, line 41
(IPP/1.1) focuses primarily on end user functionality with a few (IPP/1.1) focuses primarily on end user functionality with a few
additional OPTIONAL operator operations. additional OPTIONAL operator operations.
The IPP/1.1 model encapsulates the important components of distributed The IPP/1.1 model encapsulates the important components of distributed
printing into two object types: printing into two object types:
- Printer (Section 2.1) - Printer (Section 2.1)
- Job (Section 2.2) - Job (Section 2.2)
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 4).
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 November 10, 1999 Expires December 11, 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 57 skipping to change at page 12, line 4
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 December 11, 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,
hold, release, and restart any user's job using the REQUIRED Cancel-Job hold, release, and restart any user's job using the REQUIRED Cancel-Job
and the OPTIONAL Hold-Job, Release-Job, and Restart-Job operations. In and the OPTIONAL Hold-Job, Release-Job, and Restart-Job operations. In
additional privileged operator or administrator of a Printer object can additional privileged operator or administrator of a Printer object can
pause, resume, or purge (jobs from) a Printer object using the OPTIONAL pause, resume, or purge (jobs from) a Printer object using the OPTIONAL
Pause-Printer, Resume-Printer, and Purge-Jobs operations, if Pause-Printer, Resume-Printer, and Purge-Jobs operations, if
implemented. implemented.
The notification service is out of scope for this IPP/1.1 specification, The notification service is out of scope for this IPP/1.1 document, but
but using such a notification service, the end user is able to register using such a notification service, the end user is able to register for
for and receive Printer specific and Job specific events. An end user and receive Printer specific and Job specific events. An end user can
can query the status of Printer objects and can follow the progress of query the status of Printer objects and can follow the progress of Job
Job objects by polling using the Get-Printer-Attributes, Get-Jobs, and objects by polling using the Get-Printer-Attributes, Get-Jobs, and Get-
Get-Job-Attributes operations. Job-Attributes operations.
2. IPP Objects 2. IPP Objects
The IPP/1.1 model introduces objects of type Printer and Job. Each type The IPP/1.1 model introduces objects of type Printer and Job. Each type
of object models relevant aspects of a real-world entity such as a real of object models relevant aspects of a real-world entity such as a real
printer or real print job. Each object type is defined as a set of printer or real print job. Each object type is defined as a set of
possible attributes that may be supported by instances of that object possible attributes that may be supported by instances of that object
type. For each object (instance), the actual set of supported type. For each object (instance), the actual set of supported
attributes and values describe a specific implementation. The object's attributes and values describe a specific implementation. The object's
attributes and values describe its state, capabilities, realizable attributes and values describe its state, capabilities, realizable
features, job processing functions, and default behaviors and features, job processing functions, and default behaviors and
characteristics. For example, the Printer object type is defined as a characteristics. For example, the Printer object type is defined as a
set of attributes that each Printer object potentially supports. In the set of attributes that each Printer object potentially supports. In the
same manner, the Job object type is defined as a set of attributes that same manner, the Job object type is defined as a set of attributes that
are potentially supported by each Job object. are potentially supported by each Job object.
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.
- "RECOMMENDED": each object SHOULD 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 Some definitions of attribute values indicate that an object MUST or
implementation supports an attribute, it MUST support at least one of SHOULD support the value; otherwise, support of the value is OPTIONAL.
the possible values for that attribute.
Expires November 10, 1999 Expires December 11, 1999
However, if an implementation supports an attribute, it MUST support at
least one of the possible values for that attribute.
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 13, line 51 skipping to change at page 13, line 54
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.
In this document the term "client" refers to a software entity that In this document the term "client" refers to a software entity that
sends IPP operation request to an IPP Printer object and accepts IPP sends IPP operation requests to an IPP Printer object and accepts IPP
operation responses. A client MAY be: operation responses. A client MAY be:
1. contained within software controlled by an end user, e.g. activated 1. contained within software controlled by an end user, e.g. activated
by the "Print" menu item in an application and/or by the "Print" menu item in an application 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 Expires December 11, 1999
2. the print server component that sends IPP requests to either an
output device or another "downstream" print server.
The term "IPP Printer" is a network entity that accepts IPP operation The term "IPP Printer" is a network entity that accepts IPP operation
requests and returns IPP operation responses. As such, an IPP object requests and returns IPP operation responses. As such, an IPP object
MAY be: MAY be:
1. (embedded) software that controls a device 1. an (embedded) device component that accepts IPP requests and
controls the device or
2. part of a print server that accepts IPP operation requests and, in 2. a component of a print server that accepts IPP requests (where the
turn, sends operation requests using (the IPP or other) protocol to print server controls one or more networked devices using IPP or
one or more networked device(s). other protocols).
Expires November 10, 1999 Expires December 11, 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 16, 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 November 10, 1999 Expires December 11, 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 17, 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 November 10, 1999 Expires December 11, 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
throughout the rest of this document, its usage is intended to cover the throughout the rest of this document, its usage is intended to cover the
more specific notion of URL as well. more specific notion of URL as well.
An administrator configures Printer objects to either support or not An administrator configures Printer objects to either support or not
support authentication and/or message privacy using TLS [TLS] (the support authentication and/or message privacy using Transport Layer
mechanism for security configuration is outside the scope of this Security (TLS) [RFC2246] (the mechanism for security configuration is
IPP/1.1 document). In some situations, both types of connections (both outside the scope of this IPP/1.1 document). In some situations, both
authenticated and unauthenticated) can be established using a single types of connections (both authenticated and unauthenticated) can be
communication channel that has some sort of negotiation mechanism. In established using a single communication channel that has some sort of
other situations, multiple communication channels are used, one for each negotiation mechanism. In other situations, multiple communication
type of security configuration. Section 8 provides a full description channels are used, one for each type of security configuration. Section
of all security considerations and configurations. 8 provides a full description of all security considerations and
configurations.
If a Printer object supports more than one communication channel, some If a Printer object supports more than one communication channel, some
or all of those channels might support and/or require different security or all of those channels might support and/or require different security
mechanisms. In such cases, an administrator could expose the mechanisms. In such cases, an administrator could expose the
simultaneous support for these multiple communication channels as simultaneous support for these multiple communication channels as
multiple URIs for a single Printer object where each URI represents 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.
skipping to change at page 17, line 50 skipping to change at page 17, line 51
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 two companion attributes, the "uri-security- supported" attribute has two companion attributes, the "uri-security-
supported" attribute and the "uri-authentication-supported". Both have supported" attribute and the "uri-authentication-supported". Both have
the same cardinality as "printer-uri-supported". The purpose of the the same cardinality as "printer-uri-supported". The purpose of the
"uri-security-supported" attribute is to indicate the security "uri-security-supported" attribute is to indicate the security
mechanisms (if any) used for each URI listed in "printer-uri-supported". mechanisms (if any) used for each URI listed in "printer-uri-supported".
The purpose of the "uri-authentication-supported" attribute is to The purpose of the "uri-authentication-supported" attribute is to
indicate the authentication mechanisms (if any) used for each URI listed indicate the authentication mechanisms (if any) used for each URI listed
in "printer-uri-supported". These three attributes are fully described in "printer-uri-supported". These three attributes are fully described
in sections 4.4.1, 4.4.2, and 4.4.3. Issue 2 in sections 4.4.1, 4.4.2, and 4.4.3.
When a job is submitted to the Printer object via a create request, the 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 IPP/1.1 does not specify how the client obtains the client supplied URI,
supplied URI, but it is RECOMMENDED that a Printer object be registered but it is RECOMMENDED that a Printer object be registered as an entry in
as an entry in a directory service. End-users and programs can then
interrogate the directory searching for Printers. Section 16 defines a
Expires November 10, 1999 Expires December 11, 1999
generic schema for Printer object entries in the directory service and a directory service. End-users and programs can then interrogate the
describes how the entry acts as a bridge to the actual IPP Printer directory searching for Printers. Section 16 defines a generic schema
object. The entry in the directory that represents the IPP Printer for Printer object entries in the directory service and describes how
object includes the possibly many URIs for that Printer object as values the entry acts as a bridge to the actual IPP Printer object. The entry
in one its attributes. in the directory that represents the IPP Printer object includes the
possibly many URIs for that Printer object as values in one its
attributes.
When a client submits a create request to the Printer object, the 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
in the create request. in the create request.
For example, consider a Printer object that supports both a For example, consider a Printer object that supports both a
skipping to change at page 18, line 59 skipping to change at page 19, line 4
remote from the Printer object. In this case, the Job object's URI may remote from the Printer object. In this case, the Job object's URI may
have no physical-location relationship at all to the Printer object's have no physical-location relationship at all to the Printer object's
URI. Again, the fact that Job objects have URIs allows for flexibility URI. Again, the fact that Job objects have URIs allows for flexibility
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
Expires December 11, 1999
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
Expires November 10, 1999
object to which the create request was originally submitted. This 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
skipping to change at page 19, line 29 skipping to change at page 19, line 32
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').
- - The Printer object's "uri-authentication-supported" attribute - The Printer object's "uri-authentication-supported" attribute
identifies the authentication mechanisms that may or may not have identifies the authentication mechanisms that may or may not have
been configured for the various Printer object URIs (e.g., 'digest' been configured for the various Printer object URIs (e.g., 'digest'
or 'none'). or 'none').
Each Job object is identified with a Job URI. The Job's "job-uri" - 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 19, line 56 skipping to change at page 20, line 5
- Each Printer object has a name (which is not necessarily unique). - Each Printer object has a name (which is not necessarily unique).
The administrator chooses and sets this name through some mechanism The administrator chooses and sets this name through some mechanism
outside the scope of this IPP/1.1 document. The Printer object's outside the scope of this IPP/1.1 document. The Printer object's
"printer-name" attribute contains the name. "printer-name" attribute contains the name.
- Each Job object has a name (which is not necessarily unique). The - Each Job object has a name (which is not necessarily unique). The
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.
Expires December 11, 1999
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
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
skipping to change at page 20, line 56 skipping to change at page 21, line 5
The Send-Document and Send-URI Job operations are used to add a new The Send-Document and Send-URI Job operations are used to add a new
document to an existing multi-document Job object created using the document to an existing multi-document Job object created using the
Create-Job operation. Create-Job operation.
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.
Expires December 11, 1999
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.
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,
skipping to change at page 21, line 56 skipping to change at page 22, line 5
corresponding requests were sent. In such cases, the "request-id" corresponding requests were sent. In such cases, the "request-id"
attribute would not be essential for correct protocol operation. attribute would not be essential for correct protocol operation.
However, in other mappings, the operation responses can come back in any However, in other mappings, the operation responses can come back in any
order. In these cases, the "request-id" would be essential. order. In these cases, the "request-id" would be essential.
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:
Expires December 11, 1999
- 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
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
skipping to change at page 22, line 44 skipping to change at page 22, line 49
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.1.7, 3.2.1.2, and 15 give a full description response. Sections 3.1.7, 3.2.1.2, and 15 give a full description
of how Job Template attributes supplied by the client in a create of how Job Template attributes supplied by the client in a create
request are processed by the Printer object and how unsupported request are processed by the Printer object and how unsupported
attributes are returned to the client. Because of extensibility, attributes are returned to the client. Because of extensibility,
any IPP 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. The Unsupported Attribute group is attributes in the response. The Unsupported Attribute group is
defined for all operation responses for returning unsupported defined for all operation responses for returning unsupported
attributes that the client supplied in the request. Issue attributes that the client supplied in the request.
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 definition includes the attribute's name followed by the
the name of its attribute syntax(es) in parenthesizes. In addition, name of its attribute syntax(es) in parenthesizes. In addition, each
each 'integer' attribute is followed by the allowed range in
parentheses, (m:n), for values of that attribute. Each 'text' or 'name'
attribute is followed by the maximum size in octets in parentheses,
(size), for values of that attribute. For more details on attribute
syntax notation, see the descriptions of these attributes syntaxes in
section 4.1.
Expires November 10, 1999 Expires December 11, 1999
'integer' attribute is followed by the allowed range in parentheses,
(m:n), for values of that attribute. Each 'text' or 'name' attribute is
followed by the maximum size in octets in parentheses, (size), for
values of that attribute. For more details on attribute syntax notation,
see the descriptions of these attributes syntaxes in section 4.1.
Note: Document data included in the operation is not strictly an Note: Document data included in the operation is not strictly an
attribute, but it is treated as a special attribute group for 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
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 Some operations are REQUIRED for IPP objects to support; the others are
others are OPTIONAL (see section 5.2.2). Therefore, before using an OPTIONAL (see section 5.2.2). Therefore, before using an OPTIONAL
OPTIONAL operation, a client SHOULD first use the REQUIRED Get-Printer- operation, a client SHOULD first use the REQUIRED Get-Printer-Attributes
Attributes operation to query the Printer's "operations-supported" operation to query the Printer's "operations-supported" attribute in
attribute in order to determine which OPTIONAL Printer and Job order to determine which OPTIONAL Printer and Job operations are
operations are actually supported. The client SHOULD NOT use an actually supported. The client SHOULD NOT use an OPTIONAL operation
OPTIONAL operation that is not supported. When an IPP object receives a that is not supported. When an IPP object receives a request to perform
request to perform an operation it does not support, it returns the an operation it does not support, it returns the 'server-error-
'server-error-operation-not-supported' status code (see section operation-not-supported' status code (see section 13.1.5.2). An IPP
13.1.5.2). An IPP object is non-conformant if it does not support a 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
attribute groups, the order of the attributes within the group is not attribute groups, the order of the attributes within the group is not
skipping to change at page 23, line 55 skipping to change at page 24, line 4
3.1.4.1 Request Operation Attributes 3.1.4.1 Request Operation Attributes
The client MUST supply and the Printer object MUST support the following The client MUST supply and the Printer object MUST support the following
REQUIRED operation attributes in every IPP/1.1 operation request: REQUIRED operation attributes in every IPP/1.1 operation request:
"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
Expires December 11, 1999
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 definition 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
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 NEED NOT return any attributes in the charset. The Printer NEED NOT return any attributes in the
Unsupported Attributes Group (See sections 3.1.7 and 3.2.1.2). The Unsupported Attributes Group (See sections 3.1.7 and 3.2.1.2). The
Printer object MUST indicate the charset(s) supported as the values Printer object MUST indicate the charset(s) supported as the values
skipping to change at page 24, line 54 skipping to change at page 25, line 4
There are no REQUIRED natural languages required for the Printer There are no REQUIRED natural languages required for the Printer
object to support. However, the Printer object's "generated- object to support. However, the Printer object's "generated-
natural-language-supported" attribute identifies the natural natural-language-supported" attribute identifies the natural
languages supported by the Printer object and any contained Job languages supported by the Printer object and any contained Job
objects for all text strings generated by the IPP object. A client objects for all text strings generated by the IPP object. A client
MAY query this attribute to determine which natural language(s) are MAY query this attribute to determine which natural language(s) are
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",
Expires December 11, 1999
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.19). 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
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.
skipping to change at page 25, line 51 skipping to change at page 26, line 5
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 4.1.2.1 response (see sections 4.1.1.1 textWithoutLanguage and 4.1.2.1
nameWithoutLanguage). nameWithoutLanguage).
Expires December 11, 1999
@ 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 the Override case), the value contains both the language and the
text/name value (see sections 4.1.1.2 textWithLanguage and text/name value (see sections 4.1.1.2 textWithLanguage 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"
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"
skipping to change at page 26, line 50 skipping to change at page 27, line 5
Therefore, the Printer object simply accepts the client supplied Therefore, the Printer object simply accepts the client supplied
value, stores it with the Job object, and responds back with the value, stores it with the Job object, and responds back with the
same combination whenever the client (or any client) queries for same combination whenever the client (or any client) queries for
that attribute. that attribute.
-In a query-type operation, like Get-Printer-Attributes: If the -In a query-type operation, like Get-Printer-Attributes: If the
client requests an apparently incompatible combination, the Printer client requests an apparently incompatible combination, the Printer
object responds (as described in section 3.1.4.2) using the object responds (as described in section 3.1.4.2) using the
Printer's configured natural language rather than the natural Printer's configured natural language rather than the natural
language requested by the client. language requested by the client.
Expires December 11, 1999
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 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
"attributes-charset" operation attribute supplied by the client in "attributes-charset" operation attribute supplied by the client in
skipping to change at page 27, line 34 skipping to change at page 27, line 42
return the 'text' and 'name' attributes in the charset requested by return the 'text' and 'name' attributes in the charset requested by
the client. However, some information loss MAY occur during the the client. However, some information loss MAY occur during the
charset conversion depending on the charsets involved. For charset conversion depending on the charsets involved. For
example, the Printer object may convert from a UTF-8 'a' to a US- example, the Printer object may convert from a UTF-8 'a' to a US-
ASCII 'a' (with no loss of information), from an ISO Latin 1 ASCII 'a' (with no loss of information), from an ISO Latin 1
CAPITAL LETTER A WITH ACUTE ACCENT to US-ASCII 'A' (losing the CAPITAL LETTER A WITH ACUTE ACCENT to US-ASCII 'A' (losing the
accent), or from a UTF-8 Japanese Kanji character to some ISO Latin accent), or from a UTF-8 Japanese Kanji character to some ISO Latin
1 error character indication such as '?', decimal code equivalent, 1 error character indication such as '?', decimal code equivalent,
or to the absence of a character, depending on implementation. or to the absence of a character, depending on implementation.
Note: Whether an implementation that supports more than one charset Whether an implementation that supports more than one charset
stores the data in the charset supplied by the client or code stores the data in the charset supplied by the client or code
converts to one of the other supported charsets, depends on converts to one of the other supported charsets, depends on
implementation. The strategy should try to minimize loss of implementation. The strategy should try to minimize loss of
information during code conversion. On each response, such an information during code conversion. On each response, such an
implementation converts from its internal charset to that implementation converts from its internal charset to that
requested. requested.
"attributes-natural-language" (naturalLanguage): "attributes-natural-language" (naturalLanguage):
This operation attribute identifies the natural language used by This operation attribute identifies the natural language used by
any 'text' and 'name' attributes that the IPP object is returning any 'text' and 'name' attributes that the IPP object is returning
in this response. Unlike the "attributes-charset" operation in this response. Unlike the "attributes-charset" operation
attribute, the IPP object NEED NOT return the same value as that attribute, the IPP object NEED NOT return the same value as that
supplied by the client in the request. The IPP object MAY return supplied by the client in the request. The IPP object MAY return
the natural language of the Job object or the Printer's configured the natural language of the Job object or the Printer's configured
natural language as identified by the Printer object's "natural- natural language as identified by the Printer object's "natural-
language-configured" attribute, rather than the natural language language-configured" attribute, rather than the natural language
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
Expires December 11, 1999
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 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 53 skipping to change at page 29, line 4
(i.e., either only the "printer-uri" attribute or only the "job- (i.e., either only the "printer-uri" attribute or only the "job-
uri" attribute), that attribute MUST be the third attribute in the uri" attribute), that attribute MUST be the third attribute in the
operation attributes group. operation attributes group.
- In the case where Job operations use two operation target - In the case where Job operations use two operation target
attributes (i.e., the "printer-uri" and "job-id" attributes), the attributes (i.e., the "printer-uri" and "job-id" attributes), the
"printer-uri" attribute MUST be the third attribute and the "job- "printer-uri" attribute MUST be the third attribute and the "job-
id" attribute MUST be the fourth attribute. id" attribute MUST be the fourth attribute.
In all cases, the target URIs contained within the body of IPP operation In all cases, the target URIs contained within the body of IPP operation
requests and responses must be in absolute format rather than relative requests and responses must be in absolute format rather than relative
Expires December 11, 1999
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 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
that URI MUST be used by the client to contact the IPP object. that URI MUST be used by the client to contact the IPP object.
Note: The IPP "Encoding and Transport document [IPP-PRO] shows a mapping Note: The IPP "Encoding and Transport document [IPP-PRO] shows a mapping
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 Response Status Codes and Status 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, and an OPTIONAL
provides information on the processing of a request. A "status-message" "detailed-status-message" operation attribute. The Print-URI and Send-
attribute provides a short textual description of the status of the URI response MAY include an OPTIONAL "document-access-error" operation
operation. The status code is intended for use by automata, and the attribute.
status message is intended for the human end user. The "status-message"
is especially useful for a later version of a Printer object to return 3.1.6.1 "status-code" (type2 enum)
as supplemental information for the human user to accompany a status
code that an earlier version of a client might not understand. If a The REQUIRED "status-code" parameter provides information on the
response does include a "status-message" attribute, an IPP client NEED processing of a request.
NOT examine or display the message, however it SHOULD do so in some
implementation specific manner. The status code is intended for use by automata. A client
implementation of IPP SHOULD convert status code values into any
localized message that has semantic meaning to the end user.
The "status-code" value is a numeric value that has semantic meaning. The "status-code" value is a numeric value that has semantic meaning.
The "status-code" syntax is similar to a "type2 enum" (see section 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 13 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
code. The "status-message" attribute's syntax is "text(255)". A client for use by the client when the user's natural language is English.
implementation of IPP SHOULD convert status code values into any
localized message that has semantic meaning to the end user.
If the Printer object supports the "status-message" operation attribute,
the Printer object MUST be able to generate this message in any of the
natural languages identified by the Printer object's "generated-natural-
language-supported" attribute (see the "attributes-natural-language"
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
for generating this message, the Printer object uses the natural
language indicated by the value of the "attributes-natural-language" in
the client request if supported, otherwise the Printer object uses the
value in the Printer object's own "natural-language-configured"
attribute. If the Printer object supports the "status-message"
operation attribute, it SHOULD use the REQUIRED 'utf-8' charset to
return a status message for the following error status codes (see
section 13): 'client-error-bad-request', 'client-error-charset-not-
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
'utf-8' in the error response.
If the Printer performs an operation with no errors and it encounters no If the Printer performs an operation with no errors and it encounters no
problems, it MUST return the status code 'successful-ok' in the problems, it MUST return the status code 'successful-ok' in the
response. See section 13. response. See section 13.
Expires December 11, 1999
If the client supplies unsupported values for the following parameters If the client supplies unsupported values for the following parameters
or Operation attributes, the Printer object MUST reject the operation, or Operation attributes, the Printer object MUST reject the operation,
NEED NOT return the unsupported attribute value in the Unsupported NEED NOT return the unsupported attribute value in the Unsupported
Attributes group, and MUST return the indicated status code: Attributes group, and MUST return the indicated status code:
Parameter/Attribute Status code Parameter/Attribute Status code
version-number server-error-version-not-supported version-number server-error-version-not-supported
operation-id server-error-operation-not-supported operation-id server-error-operation-not-supported
attributes-charset client-error-charset-not-supported attributes-charset client-error-charset-not-supported
compression client-error-compression-not-supported compression client-error-compression-not-supported
document-format client-error-document-format-not-supported document-format client-error-document-format-not-supported
document-uri client-error-uri-scheme-not-supported, document-uri client-error-uri-scheme-not-supported,
client-error-document-access-error client-error-document-access-error
If the client supplies unsupported values for other attributes, or If the client supplies unsupported values for other attributes, or
unsupported attributes, the Printer returns the status code defined in unsupported attributes, the Printer returns the status code defined in
the next section on Unsupported Attributes. section 3.1.7 on Unsupported Attributes.
3.1.6.2 "status-message" (text(255))
The OPTIONAL "status-message" operation attribute provides a short
textual description of the status of the operation. The "status-
message" attribute's syntax is "text(255)", so the maximum length is 255
octets (see section 4.1.1). The status message is intended for the
human end user. If a response does include a "status-message"
attribute, an IPP client NEED NOT examine or display the messages,
however it SHOULD do so in some implementation specific manner. The
"status-message" is especially useful for a later version of a Printer
object to return as supplemental information for the human user to
accompany a status code that an earlier version of a client might not
understand.
If the Printer object supports the "status-message" operation attribute,
the Printer object MUST be able to generate this message in any of the
natural languages identified by the Printer object's "generated-natural-
language-supported" attribute (see the "attributes-natural-language"
operation attribute specified in section 3.1.4.1. Section 13 suggests
the text for the status message returned by the Printer for use with the
English natural language.
As described in section 3.1.4.1 for any returned 'text' attribute, if
there is a choice for generating this message, the Printer object uses
the natural language indicated by the value of the "attributes-natural-
language" in the client request if supported, otherwise the Printer
object uses the value in the Printer object's own "natural-language-
configured" attribute.
If the Printer object supports the "status-message" operation attribute,
it SHOULD use the REQUIRED 'utf-8' charset to return a status message
for the following error status codes (see section 13): 'client-error-
bad-request', 'client-error-charset-not-supported', 'server-error-
internal-error', 'server-error-operation-not-supported', and 'server-
Expires December 11, 1999
error-version-not-supported'. In this case, it MUST set the value of
the "attributes-charset" operation attribute to 'utf-8' in the error
response.
3.1.6.3 "detailed-status-message" (text(MAX))
The OPTIONAL "detailed-status-message" operation attribute provides
additional more detailed technical and implementation-specific
information about the operation. The "detailed-status-message"
attribute's syntax is "text(MAX)", so the maximum length is 1023 octets
(see section 4.1.1). If the Printer objects supports the "detailed-
status-message" operation attribute, neither the Printer nor the client
localizes the message, since it is intended for use by the system
administrator or other experienced technical persons. Clients MUST NOT
attempt to parse the value of this attribute. See the "document-access-
error" operation attribute (section 3.1.6.4) for additional errors that
a program can process.
3.1.6.4 "document-access-error" (text(MAX))
This OPTIONAL operation attribute provides additional information about
any document access errors encountered by the Printer before it returned
a response to the Print-URI (section 3.2.2) or Send-URI (section 3.3.1)
operation. For errors in the protocol identified by the URI scheme in
the "document-uri" operation attribute, such as 'http:' or 'ftp:', the
error code is returned in parentheses, followed by the URI. For
example:
(404) http://ftp.pwg.org/pub/pwg/ipp/new_MOD/ipp-model-v11-
990510.pdf
Most Internet protocols use decimal error codes (unlike IPP), so the
ASCII error code representation is in decimal.
3.1.7 Unsupported Attributes 3.1.7 Unsupported Attributes
The Unsupported Attributes group contains attributes that are not The Unsupported Attributes group contains attributes that are not
supported by the operation. This group is primarily for the job creation supported by the operation. This group is primarily for the job creation
operations, but all operations can return this group. operations, but all operations can return this group.
A Printer object MUST include an Unsupported Attributes group in a A Printer object MUST include an Unsupported Attributes group in a
response if the status code is one of the following: 'successful-ok- response if the status code is one of the following: 'successful-ok-
ignored-or-substituted-attributes', 'successful-ok-conflicting- ignored-or-substituted-attributes', 'successful-ok-conflicting-
attributes', 'client-error-attributes-or-values-not-supported' or attributes', 'client-error-attributes-or-values-not-supported' or
'client-error-conflicting-attributes'. 'client-error-conflicting-attributes'.
If the status code is one of the four specified in the preceding If the status code is one of the four specified in the preceding
paragraph, the Unsupported Attributes group MUST contain all of those paragraph, the Unsupported Attributes group MUST contain all of those
attributes and only those attributes that are: attributes and only those attributes that are:
a)an Operation or Job Template attribute supplied in the request,
and 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 Expires December 11, 1999
b. unsupported by the printer. See below for details on the three
categories .unsupported. attributes.
If the Printer object is not returning any Unsupported Attributes in the If the Printer object is not returning any Unsupported Attributes in the
response, the Printer object SHOULD omit Group 2 rather than sending an 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. empty group. However, a client MUST be able to accept an empty group.
Unsupported attributes fall into three categories: Unsupported attributes fall into three categories:
1. The Printer object does not support the supplied attribute (no 1. The Printer object does not support the supplied attribute (no
matter what the attribute syntax or value). matter what the attribute syntax or value).
Expires November 10, 1999 2. The Printer object does support the attribute, but does not support
2. The Printer object does support the attribute, but does not some or all of the particular attribute syntaxes or values supplied
support some or all of the particular attribute syntaxes or values by the client (i.e., the Printer object does not have those
supplied by the client (i.e., the Printer object does not have attribute syntaxes or values in its corresponding "xxx-supported"
those attribute syntaxes or values in its corresponding "xxx- attribute).
supported" attribute).
3. The Printer object does support the attributes and values 3. The Printer object does support the attributes and values supplied,
supplied, but the particular values are in conflict with one but the particular values are in conflict with one another, because
another, because they violate a constraint, such as not being able they violate a constraint, such as not being able to staple
to staple transparencies. transparencies.
In the case of an unsupported attribute name, the Printer object returns In the case of an unsupported attribute name, the Printer object returns
the client-supplied attribute with a substituted value of 'unsupported'. 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 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" special rules for "out-of-band" values in the "Encoding and Transport"
specification [IPP-PRO]. Its value indicates no support for the document [IPP-PRO]. Its value indicates no support for the attribute
attribute itself (see the beginning of section 4.1). Issue 12 itself (see the beginning of section 4.1).
In the case of a supported attribute with one or more unsupported In the case of a supported attribute with one or more unsupported
attribute syntaxes or values, the Printer object simply returns the attribute syntaxes or values, the Printer object simply returns the
client-supplied attribute with the unsupported attribute syntaxes or client-supplied attribute with the unsupported attribute syntaxes or
values as supplied by the client. This indicates support for the values as supplied by the client. This indicates support for the
attribute, but no support for that particular attribute syntax or value. attribute, but no support for that particular attribute syntax or value.
If the client supplies a multi-valued attribute with more than one 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 and the Printer object supports the attribute but only supports a subset
of the client-supplied attribute syntaxes or values, the Printer object of the client-supplied attribute syntaxes or values, the Printer object
MUST return only those attribute syntaxes or values that are MUST return only those attribute syntaxes or values that are
skipping to change at page 31, line 43 skipping to change at page 33, line 5
In the case of two (or more) supported attribute values that are in In the case of two (or more) supported attribute values that are in
conflict with one another (although each is supported independently, the conflict with one another (although each is supported independently, the
values conflict when requested together within the same job), the values conflict when requested together within the same job), the
Printer object MUST return all the values that it ignores or substitutes 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 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 using. The choice for exactly how to resolve the conflict is
implementation dependent. See sections 3.2.1.2 and 15. See The implementation dependent. See sections 3.2.1.2 and 15. See The
Implementer's Guide [IPP-IIG] for an example. Implementer's Guide [IPP-IIG] for an example.
Expires December 11, 1999
3.1.8 Versions 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,
the IPP object does not support that version, the object responds with a i.e., the version whose conformance requirements the client may be
depending upon the Printer to meet.
If the IPP object does not support that major version number supplied by
the client, i.e., the major version field of the "version-number"
parameter does not match any of the values of the Printer's "ipp-
versions-supported" (see section 4.4.14), the object MUST respond 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 13.1.5.4). closest version number that is supported (see section 13.1.5.4). If the
major version number is supported, but the minor version number is not,
the IPP object SHOULD accept and attempt to perform the request (or
reject the request if the operation is not supported), else it rejects
the request and returns the 'server-error-version-not-supported' status
code. In all cases, the IPP object MUST return the "version-number"
that it supports that is closest to the version number supplied by the
client in the request.
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, a
there is nothing that prevents a client from trying again with a client SHOULD try again with a different version number. A client MAY
different version number. In order to conform to IPP/1.1, an IPP object also determine the versions supported either from a directory that
implementations MUST support version '1.1' SHOULD support version conforms to Appendix E (see section 16) or by querying the Printer
'1.0'. Issue 33 object's "ipp-versions-supported" attribute (see section 4.4.14) to
determine which versions are supported.
Expires November 10, 1999 An IPP object implementation MUST support version '1.1', i.e., meet the
conformance requirements for IPP/1.1 as specified in this document and
[IPP-PRO]. An IPP object implementation SHOULD support version '1.0',
i.e., meet the conformance requirements for IPP/1.0 [RFC2566 and
RFC2565].
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 (this
or a new version of the "Encoding and Transport" document [IPP-PRO]. document) 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 of the Model and Semantics document
changes that make it impossible for older version of IPP clients and indicate structural or syntactic changes that make it impossible for
Printer objects to correctly parse and correctly process the new or older version of IPP clients and Printer objects to correctly parse and
changed attributes, operations and responses. If the major version correctly process the new or changed attributes, operations and
number changes, the minor version numbers is set to zero. As an responses. If the major version number changes, the minor version
example, adding the REQUIRED "ipp-attribute-fidelity" attribute to numbers is set to zero. As an example, adding the REQUIRED "ipp-
version '1.1' (if it had not been part of version '1.1'), would have attribute-fidelity" attribute to version '1.1' (if it had not been part
required a change to the major version number, since an IPP/1.0 Printer of version '1.0'), would have required a change to the major version
would not have processed a request with the correct semantics that number, since an IPP/1.0 Printer would not have processed a request with
contained the "ipp-attribute-fidelity" attribute that it did not know the correct semantics that contained the "ipp-attribute-fidelity"
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 Expires December 11, 1999
"Encoding and Transport" document [IPP-PRO] itself, such as:
attribute that it did not know about. Items that might affect the
changing of the major version number include any changes to the Model
and Semantics document (this document) or the "Encoding and Transport"
document [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
- 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 REQUIRED 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
skipping to change at page 32, line 55 skipping to change at page 34, line 41
- 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 - adding OPTIONAL attribute syntaxes to an existing attribute.
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 version NEED NOT support ALL Implementations that support a certain version NEED NOT support ALL
previous versions. As each new version is defined (through the release previous versions. As each new version is defined (through the release
of a new specification), that major version will specify which previous of a new IPP specification document), that version will specify which
versions MUST and which versions SHOULD be supported in compliant previous versions MUST and which versions SHOULD be supported in
implementations. Issue 33 compliant implementations.
Expires December 11, 1999
3.1.9 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
skipping to change at page 33, line 48 skipping to change at page 35, line 39
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
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 document, the term "create request" is used to
to refer to any of these three operation requests. 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', request. The initial state of every Job object is the 'pending',
'pending-held', or 'processing' state (see section 4.3.7). Issue 13 'pending-held', or 'processing' state (see section 4.3.7). When the
Printer object begins processing the print job, the Job object's state
Expires November 10, 1999 moves to 'processing'. This is known as job processing time. There are
validation checks that must be done at job submission time and others
When the Printer object begins processing the print job, the Job that must be performed at job processing time.
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:
Expires December 11, 1999
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.1.7 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
skipping to change at page 34, line 53 skipping to change at page 36, line 44
- 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 At job submission time, a Printer object, especially a non-spooling
Printer, MAY accept jobs that it does not have enough space for. In 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 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 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 operation to block for an indefinite period of time (see section 5.1 on
client conformance). client conformance).
When a Printer object has too little space for starting a new job, it 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 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 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 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 connection before receiving all bytes of the operation. A Printer
'server-error-busy' status-code in an operation response, a client MUST SHOULD indicate that it is temporarily unable to accept jobs by setting
the 'spool-space-full' value in its "printer-state-reasons" attribute
and removing the value when it can accept another job (see section
4.4.12).
Expires November 10, 1999 When receiving a 'server-error-busy' status-code in an operation
response, a client MUST be prepared for the Printer object to close the
be prepared for the Printer object to close the connection before the Expires December 11, 1999
client has sent all of the data (especially for the Print-Job
operation). A client MUST be prepared to keep submitting a create connection before the client has sent all of the data (especially for
request until the IPP Printer object accepts the create request. Issue the Print-Job operation). A client MUST be prepared to keep submitting a
20 create request until the IPP Printer object accepts the create request.
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 object's this case, the Printer, depending on the error, can set the job object's
"job-state", "job-state-reasons", or "job-state-message" attributes to "job-state", "job-state-reasons", or "job-state-message" attributes to
the appropriate value(s) so that later queries can report the correct the appropriate value(s) so that later queries can report the correct
job status. job status.
skipping to change at page 35, line 49 skipping to change at page 37, line 47
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.17 and 4.3.18. attributes described in sections 4.3.19 and 4.3.20.
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
by the client as described in section 8.3. by the client as described in section 8.3.
Expires November 10, 1999 Expires December 11, 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 36, line 60 skipping to change at page 39, line 4
attribute (see section 4.4.32). The client supplied "compression" attribute (see section 4.4.32). The client supplied "compression"
operation attribute identifies the compression algorithm used on operation attribute identifies the compression algorithm used on
the document data. The following cases exist: the document data. The following cases exist:
a)If the client omits this attribute, the Printer object MUST a)If the client omits this attribute, the Printer object MUST
assume that the data is not compressed (i.e. the Printer assume that the data is not compressed (i.e. the Printer
follows the rules below as if the client supplied the follows the rules below as if the client supplied the
"compression" attribute with a value of 'none'). "compression" attribute with a value of 'none').
b)If the client supplies this attribute, but the value is not b)If the client supplies this attribute, but the value is not
supported by the Printer object, i.e., the value is not one supported by the Printer object, i.e., the value is not one
of the values of the Printer object's "compression- of the values of the Printer object's "compression-
supported" attribute, the Printer object MUST reject the
Expires November 10, 1999 Expires December 11, 1999
supported" attribute, the Printer object MUST reject the
request, and return the 'client-error-compression-not- request, and return the 'client-error-compression-not-
supported' status code. See section 3.1.7 for returning supported' status code. See section 3.1.7 for returning
unsupported attributes and values. unsupported attributes and values.
c)If the client supplies the attribute and the Printer object c)If the client supplies the attribute and the Printer object
supports the attribute value, the Printer object uses the supports the attribute value, the Printer object uses the
corresponding decompression algorithm on the document data. corresponding decompression algorithm on the document data.
d)If the decompression algorithm fails before the Printer d)If the decompression algorithm fails before the Printer
returns an operation response, the Printer object MUST returns an operation response, the Printer object MUST
reject the request and return the 'client-error- reject the request and return the 'client-error-
compression-error' status code. compression-error' status code.
e)If the decompression algorithm fails after the Printer e)If the decompression algorithm fails after the Printer
returns an operation response, the Printer object MUST returns an operation response, the Printer object MUST
abort the job and add the 'compression-error' value to the abort the job and add the 'compression-error' value to the
job's "job-state-reasons" attribute. job's "job-state-reasons" attribute.
f)If the decompression algorithm succeeds, the document data f)If the decompression algorithm succeeds, the document data
MUST then have the format specified by the job's "document- MUST then have the format specified by the job's "document-
format" attribute (q.v.). Issue 28 format" attribute, if supplied (see "document-format"
operation attribute definition below).
"document-format" (mimeMediaType) : "document-format" (mimeMediaType) :
The client OPTIONALLY supplies this attribute. The Printer object 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. The following identifies the format of the supplied document data. The following
cases exist: cases exist:
a)If the client does not supply this attribute, the Printer a)If the client does not supply this attribute, the Printer
object assumes that the document data is in the format object assumes that the document data is in the format
defined by the Printer object's "document-format-default" defined by the Printer object's "document-format-default"
attribute. (i.e. the Printer follows the rules below as if attribute. (i.e. the Printer follows the rules below as if
skipping to change at page 37, line 58 skipping to change at page 40, line 4
status code. status code.
d)If the client supplies this attribute, and the value is d)If the client supplies this attribute, and the value is
supported by the Printer object, the document data, the supported by the Printer object, the document data, the
Printer is capable of interpreting the document data. Printer is capable of interpreting the document data.
e)If interpreting of the document data fails before the e)If interpreting of the document data fails before the
Printer returns an operation response, the Printer object Printer returns an operation response, the Printer object
MUST reject the request and return the 'client-error- MUST reject the request and return the 'client-error-
document-format-error' status code. document-format-error' status code.
f)If interpreting of the document data fails after the f)If interpreting of the document data fails after the
Printer returns an operation response, the Printer object Printer returns an operation response, the Printer object
Expires December 11, 1999
MUST abort the job and add the 'document-format-error' MUST abort the job and add the 'document-format-error'
value to the job's "job-state-reasons" attribute. Issue 11 value to the job's "job-state-reasons" attribute.
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.
"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.33). 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.15.1 for the complete K octets being submitted (see section 4.3.17.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- 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
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
skipping to change at page 38, line 50 skipping to change at page 40, line 53
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.34). 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.15.2 for the complete semantics). section 4.3.17.2 for the complete semantics).
See note under "job-k-octets". See last paragraph under "job-k-octets".
Expires December 11, 1999
"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.35). 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.17.3
Expires November 10, 1999
of media sheets to be produced for this job (see section 4.3.15.3
for the complete semantics). for the complete semantics).
See note under "job-k-octets". See last paragraph under "job-k-octets".
Group 2: Job Template Attributes Group 2: Job Template Attributes
The client OPTIONALLY supplies a set of Job Template attributes as The client 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.
Group 3: Document Content Group 3: Document Content
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 In addition to the MANDATORY parameters required for every operation
operation request, the simplest Print-Job Request consists of just the 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),
- 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
skipping to change at page 39, line 49 skipping to change at page 41, line 54
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(255))
operation attribute as described in sections 13 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
Expires December 11, 1999
'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
See section 3.1.7 for details on returning Unsupported Attributes. See section 3.1.7 for details on returning Unsupported Attributes.
The value of the "ipp-attribute-fidelity" supplied by the client The value of the "ipp-attribute-fidelity" supplied by the client
does not affect what attributes the Printer object returns in this does not affect what attributes the Printer object returns in this
skipping to change at page 40, line 55 skipping to change at page 43, line 5
"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.
Expires December 11, 1999
"job-state-reasons": "job-state-reasons":
The Printer object MUST return the Job object's REQUIRED "job- The Printer object MUST return the Job object's REQUIRED "job-
state-reasons" attribute. . Issue 30 state-reasons" attribute.
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 41, line 53 skipping to change at page 43, line 57
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. code.
The IPP Printer MAY validate the accessibility of the document as part The IPP Printer MAY validate the accessibility of the document as part
of the operation or subsequently. If the Printer determines an of the operation or subsequently. If the Printer determines an
accessibility problem before returning an operation response, it rejects accessibility problem before returning an operation response, it rejects
the request and returns the 'client-error-document-access-error' status the request and returns the 'client-error-document-access-error' status
code. If the Printer determines this accessibility problem after code. The Printer MAY also return a specific document access error code
Expires December 11, 1999
using the "document-access-error" operation attribute (see section
3.1.6.4).
If the Printer determines this document accessibility problem after
accepting the request and returning an operation response with one of accepting the request and returning an operation response with one of
the successful status codes, the Printer adds the 'document-access- the successful status codes, the Printer adds the 'document-access-
error' value to the job's "job-state-reasons" attribute. See The error' value to the job's "job-state-reasons" attribute and MAY populate
Implementer's Guide [IPP-IIG] for suggested additional checks. Issue the job's "job-document-access-errors" Job Description attribute (see
35 section 4.3.11). See The Implementer's Guide [IPP-IIG] for suggested
additional checks.
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.27). 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
skipping to change at page 42, line 28 skipping to change at page 44, line 39
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
against whatever attributes are supplied by the client in the Validate- against whatever attributes are supplied by the client in the Validate-
Job request. By using the Validate-Job operation a client can validate Job request. By using the Validate-Job operation a client can validate
that an identical Print-Job operation (with the document data) would be that an identical Print-Job operation (with the document data) would be
accepted. The Validate-Job operation also performs the same security accepted. The Validate-Job operation also performs the same security
negotiation as the Print-Job operation (see section 8), so that a client negotiation as the Print-Job operation (see section 8), so that a client
can check that the client and Printer object security requirements can can check that the client and Printer object security requirements can
be met before performing a Print-Job operation. be met before performing a Print-Job operation.
Note: The Validate-Job operation does not accept a "document-uri" The Validate-Job operation does not accept a "document-uri" attribute in
attribute in order to allow a client to check that the same Print-URI order to allow a client to check that the same Print-URI operation will
operation will be accepted, since the client doesn't send the data with be accepted, since the client doesn't send the data with the Print-URI
the Print-URI operation. The client SHOULD just issue the Print-URI operation. The client SHOULD just issue the Print-URI request.
request.
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
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.
Expires December 11, 1999
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.31). "multiple-operation-time-out" Printer attribute (see section 4.4.31).
If the Printer object supports this operation, then it MUST support the If the Printer object supports this operation, then it MUST support the
"multiple-document-jobs-supported" Printer Description attribute and "multiple-document-jobs-supported" Printer Description attribute (see
indicate whether or not it supports multiple-document jobs. Issue 34 section 4.4.16) and indicate whether or not it supports multiple-
document jobs.
Expires November 10, 1999
If the Printer object supports this operation and supports multiple If the Printer object supports this operation and supports multiple
documents in a job, then it MUST support the "multiple-document- documents in a job, then it MUST support the "multiple-document-
handling" Job Template job attribute with at least one value (see handling" Job Template job attribute with at least one value (see
section 4.2.4) and the associated "multiple-document-handling-default" section 4.2.4) and the associated "multiple-document-handling-default"
and "multiple-document-handling-supported" Job Template Printer and "multiple-document-handling-supported" Job Template Printer
attributes. Issue 34 attributes (see section 4.2).
After the Create-Job operation has completed, the value of the "job- After the Create-Job operation has completed, the value of the "job-
state" attribute is similar to the "job-state" after a Print-Job, even 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- though no document-data has arrived. A Printer MAY set the 'job-data-
insufficient' value of the job's "job-state-reason" attribute to insufficient' value of the job's "job-state-reason" attribute to
indicate that processing cannot begin until sufficient data has arrived indicate that processing cannot begin until sufficient data has arrived
and set the "job-state" to either 'pending' or 'pending-held'. A non- 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 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 set the "job-state" to 'processing', even though there is not yet any
data to process. Issue 13 data to process. See sections 4.3.7 and 4.3.8.
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': the subset of the Job Template attributes that - 'job-template': the subset of the Job Template attributes that
apply to a Printer object (the last two columns of the table in apply to a Printer object (the last two columns of the table in
Section 4.2) that the implementation supports for Printer objects. Section 4.2) that the implementation supports for Printer objects.
- 'printer-description': the subset of the attributes specified in - 'printer-description': the subset of the attributes specified in
Section 4.4 that the implementation supports for Printer objects. Section 4.4 that the implementation supports for Printer objects.
- 'all': the special group 'all' that includes all attributes that - 'all': the special group 'all' that includes all attributes that
the implementation supports for Printer objects. Issue 23 the implementation supports for Printer objects.
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
Expires December 11, 1999
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
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.
skipping to change at page 44, line 47 skipping to change at page 47, line 4
attribute values that are supported for the specified document attribute values that are supported for the specified document
format. By specifying the document format, the client can get the format. By specifying the document format, the client can get the
Printer object to eliminate the attributes and values that are not Printer object to eliminate the attributes and values that are not
supported for a specific document format. For example, a Printer supported for a specific document format. For example, a Printer
object might have multiple interpreters to support both object might have multiple interpreters to support both
'application/postscript' (for PostScript) and 'text/plain' (for 'application/postscript' (for PostScript) and 'text/plain' (for
text) documents. However, for only one of those interpreters might text) documents. However, for only one of those interpreters might
the Printer object be able to support "number-up" with values of the Printer object be able to support "number-up" with values of
'1', '2', and '4'. For the other interpreter it might be able to '1', '2', and '4'. For the other interpreter it might be able to
only support "number-up" with a value of '1'. Thus a client can use only support "number-up" with a value of '1'. Thus a client can use
Expires December 11, 1999
the Get-Printer-Attributes operation to obtain the attributes and the Get-Printer-Attributes operation to obtain the attributes and
values that will be used to accept/reject a create job operation. values that will be used to accept/reject a create job operation.
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),
- "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
skipping to change at page 45, line 47 skipping to change at page 48, line 5
attribute, the Printer object MUST reject the operation and return attribute, the Printer object MUST reject the operation and return
the 'client-error-document-format-not-supported' status code. the 'client-error-document-format-not-supported' status code.
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
Expires December 11, 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(255))
operation attribute as described in sections 13 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
See section 3.1.7 for details on returning Unsupported Attributes. See section 3.1.7 for details on returning Unsupported Attributes.
Expires November 10, 1999
The response NEED NOT contain the "requested-attributes" operation 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. If requested by the client but are not supported by the IPP object. If
the Printer does include unsupported attributes referenced in the Printer object does include unsupported attributes referenced
"requested-attributes" and such attributes include group names, in "requested-attributes" and such attributes include group names,
such as 'all', the unsupported attributes MUST NOT include such as 'all', the unsupported attributes MUST NOT include
attributes described in the standard but not supported by the attributes described in the standard but not supported by the
implementation. Issue 23 implementation.
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 46, line 43 skipping to change at page 49, line 5
objects belonging to the target Printer object. The client may also objects belonging to the target Printer object. The client may also
supply a list of Job attribute names and/or attribute group names. A supply a list of Job attribute names and/or attribute group names. A
group of Job object attributes will be returned for each Job object that group of Job object attributes will be returned for each Job object that
is returned. is returned.
This operation is similar to the Get-Job-Attributes operation, except This operation is similar to the Get-Job-Attributes operation, except
that this Get-Jobs operation returns attributes from possibly more than that this Get-Jobs operation returns attributes from possibly more than
one object (see the description of Job attribute group names in section one object (see the description of Job attribute group names in section
3.3.4). 3.3.4).
Expires December 11, 1999
3.2.6.1 Get-Jobs Request 3.2.6.1 Get-Jobs Request
The client submits the Get-Jobs request to a Printer object. The client submits the Get-Jobs request to a Printer object.
The following groups of attributes are part of the Get-Jobs Request: The following groups of attributes are part of the Get-Jobs Request:
Group 1: Operation Attributes Group 1: Operation Attributes
Natural Language and Character Set: Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" The "attributes-charset" and "attributes-natural-language"
attributes as described in section 3.1.4.1. attributes as described in section 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.
"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 determines MUST support this attribute. It is an integer value that determines
the maximum number of jobs that a client will receive from the the maximum number of jobs that a client will receive from the
Printer even if "which-jobs" or "my-jobs" constrain which jobs are Printer even if "which-jobs" or "my-jobs" constrain which jobs are
returned. The limit is a "stateless limit" in that if the value returned. The limit is a "stateless limit" in that if the value
supplied by the client is 'N', then only the first 'N' jobs are supplied by the client is 'N', then only the first 'N' jobs are
returned in the Get-Jobs Response. There is no mechanism to allow returned in the Get-Jobs Response. There is no mechanism to allow
for the next 'M' jobs after the first 'N' jobs. If the client does for the next 'M' jobs after the first 'N' jobs. If the client does
not supply this attribute, the Printer object responds with all not supply this attribute, the Printer object responds with all
applicable jobs. Issue 8 applicable jobs.
"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 47, line 45 skipping to change at page 50, line 5
MUST support this attribute. It indicates which Job objects MUST MUST support this attribute. It indicates which Job objects MUST
be returned by the Printer object. The values for this attribute be returned by the Printer object. The values for this attribute
are: are:
'completed': This includes any Job object whose state is 'completed': This includes any Job object whose state is
'completed', 'canceled', or 'aborted'. 'completed', 'canceled', or 'aborted'.
'not-completed': This includes any Job object whose state is 'not-completed': This includes any Job object whose state is
'pending', 'processing', 'processing-stopped', or 'pending- 'pending', 'processing', 'processing-stopped', or 'pending-
held'. held'.
Expires December 11, 1999
A Printer object MUST support both values. However, if the A Printer object MUST support both values. However, if the
implementation does not keep jobs in the 'completed', 'canceled', implementation does not keep jobs in the 'completed', 'canceled',
and 'aborted' states, then it returns no jobs when the 'completed' and 'aborted' states, then it returns no jobs when the 'completed'
value is supplied. value is supplied.
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 jobs from all MUST support this attribute. It indicates whether jobs from all
users or just the jobs submitted by the requesting user of this users or just the jobs submitted by the requesting user of this
request MUST be returned by the Printer object. If the client does request MUST be returned by the Printer object. If the client does
not supply this attribute, the Printer object MUST respond as if not supply this attribute, the Printer object MUST respond as if
the client had supplied the attribute with a value of 'false', the client had supplied the attribute with a value of 'false',
i.e., jobs from all users. The means for authenticating the i.e., jobs from all users. The means for authenticating the
requesting user and matching the jobs is described in section 8. requesting user and matching the jobs is described in section 8.
skipping to change at page 48, line 31 skipping to change at page 50, line 45
possible that no Job objects are returned since there may literally be possible that no Job objects are returned since there may literally be
no Job objects at the Printer, or there may be no Job objects that match no Job objects at the Printer, or there may be no Job objects that match
the criteria supplied by the client. If the client requests any Job the criteria supplied by the client. If the client requests any Job
attributes at all, there is a set of Job Object Attributes returned for attributes at all, there is a set of Job Object Attributes returned for
each Job object. each Job object.
It is not an error for the Printer to return 0 jobs. If the response 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 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 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 'successful-ok' if there had been jobs matching the criteria, then the
status code for 0 jobs MUST be 'successful-ok'. Issue 24 status code for 0 jobs MUST be 'successful-ok'.
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(255))
operation attribute as described in sections 13 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
Expires December 11, 1999
See section 3.1.7 for details on returning Unsupported Attributes. See section 3.1.7 for details on returning Unsupported Attributes.
The response NEED NOT contain the "requested-attributes" operation 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. If requested by the client but are not supported by the IPP object. If
the Printer does include unsupported attributes referenced in the Printer object does include unsupported attributes referenced
"requested-attributes" and such attributes include group names, in "requested-attributes" and such attributes include group names,
such as 'all', the unsupported attributes MUST NOT include such as 'all', the unsupported attributes MUST NOT include
attributes described in the standard but not supported by the attributes described in the standard but not supported by the
implementation. Issue 23 implementation.
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.
skipping to change at page 49, line 45 skipping to change at page 52, line 4
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 Issue 30 will take
appreciable time to stop, the IPP Printer adds the 'moving-to-paused' Expires December 11, 1999
value to the Printer object's "printer-state-reasons" attribute (see
section 4.4.12). When the device(s) have all stopped, the IPP Printer implementation permits. If the implementation will take appreciable
transitions the Printer object to the 'stopped' state, removes the time to stop, the IPP Printer adds the 'moving-to-paused' value to the
'moving-to-paused' value, if present, and adds the 'paused' value to the Printer object's "printer-state-reasons" attribute (see section 4.4.12).
Printer object's "printer-state-reasons" attribute. When the device(s) have all stopped, the IPP Printer transitions the
Printer object to the 'stopped' state, removes the 'moving-to-paused'
value, if present, and adds the 'paused' value to the Printer object's
"printer-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 Issue 30 adds the 'printer-stopped' value to the job's "job- state and adds the 'printer-stopped' value to the job's "job-state-
state-reasons" attribute. reasons" attribute.
Expires November 10, 1999
Note: for any jobs that are 'pending' or 'pending-held', the 'printer- For any jobs that are 'pending' or 'pending-held', the 'printer-stopped'
stopped' value of the jobs' "job-state-reasons" attribute also applies. value of the jobs' "job-state-reasons" attribute also applies. However,
However, the IPP Printer NEED NOT update those jobs' "job-state-reasons" 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").
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:
Current New "printer IPP Printer's response status Current New "printer IPP Printer's response status
"printer- "printer- -state- code and action: "printer- "printer- -state- code and action:
state" state" reasons" state" state" reasons"
'idle' 'stopped' 'paused' 'successful-ok' 'idle' 'stopped' 'paused' 'successful-ok'
'processing' 'processing' 'moving- OPTION 1: 'successful-ok';
'processin 'processin 'moving- OPTION 1: 'successful-ok'; to- Later, when all output has
g' g' to- Later, when all output has
paused' stopped, the "printer-state" paused' stopped, the "printer-state"
becomes 'stopped', and the becomes 'stopped', and the
'paused' value replaces the 'paused' value replaces the
'moving-to-paused' value in the 'moving-to-paused' value in the
"printer-state-reasons" "printer-state-reasons"
attribute attribute
'processing' 'stopped' 'paused' OPTION 2: 'successful-ok';
'processin 'stopped' 'paused' OPTION 2: 'successful-ok'; all device output stopped
g' all device output stopped
immediately immediately
'stopped' 'stopped' 'paused' 'successful-ok' 'stopped' 'stopped' 'paused' 'successful-ok'
Access Rights: The authenticated user (see section 8.3) performing this Access Rights: The authenticated user (see section 8.3) performing this
operation must be an operator or administrator of the Printer object operation must be an operator or administrator of the Printer object
(see Sections 1 and 8.5). Otherwise, the IPP Printer MUST reject the (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.
Expires December 11, 1999
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.
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(255))
operation attribute as described in sections 13 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
See section 3.1.7 for details on returning Unsupported Attributes. See section 3.1.7 for details on returning Unsupported Attributes.
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. The Printer object Issue 30 MUST remove the jobs on all its devices. The Printer object MUST remove the 'paused'
'paused' and 'moving-to-paused' values from the Printer object's and 'moving-to-paused' values from the Printer object's "printer-state-
"printer-state-reasons" attribute, if present. If there are no other reasons" attribute, if present. If there are no other reasons to keep a
reasons to keep a device paused (such as media-jam), the IPP Printer device paused (such as media-jam), the IPP Printer transitions itself to
transitions itself to the 'processing' or 'idle' states, depending on the 'processing' or 'idle' states, depending on whether there are jobs
whether there are jobs to be processed or not, respectively, and the to be processed or not, respectively, and the device(s) resume
device(s) resume processing jobs. processing jobs.
If the Pause-Printer operation is supported, then the Resume-Printer If the Pause-Printer operation is supported, then the Resume-Printer
operation MUST be supported, and vice-versa. operation MUST be supported, and vice-versa.
The IPP Printer removes the 'printer-stopped' value from any job's "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.
Expires December 11, 1999
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:
Current New "printer- IPP Printer's response status code Current New "printer- IPP Printer's response status code and
"printer- state" and action: "printer- state" action:
state" state"
'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 processed.
Expires November 10, 1999
Current New "printer- IPP Printer's response status code
"printer- state" and action:
state"
when there are no jobs to be
processed.
Access Rights: The authenticated user (see section 8.3) performing this Access Rights: The authenticated user (see section 8.3) performing this
operation must be an operator or administrator of the Printer object operation must be an operator or administrator of the Printer object
(see Sections 1 and 8.5). Otherwise, the IPP Printer MUST reject the (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
Printer object, regardless of their job states, including jobs in the Printer object, regardless of their job states, including jobs in the
Printer object's Job History (see Section 4.3.7.1). After a Purge-Jobs Printer object's Job History (see Section 4.3.7.2). After a Purge-Jobs
operation has been performed, a Printer object MUST return no jobs in operation has been performed, a Printer object MUST return no jobs in
subsequent Get-Job-Attributes and Get-Jobs responses (until new jobs are subsequent Get-Job-Attributes and Get-Jobs responses (until new jobs are
submitted). submitted).
Whether the Purge-Jobs (and Get-Jobs) operation affects jobs that were Whether the Purge-Jobs (and Get-Jobs) operation affects jobs that were
submitted to the device from other sources than the IPP Printer object submitted to the device from other sources than the IPP Printer object
in the same way that the Purge-Jobs operation affects jobs that were in the same way that the Purge-Jobs operation affects jobs that were
submitted to the IPP Printer object using IPP, depends on submitted to the IPP Printer object using IPP, depends on
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.
skipping to change at page 52, line 53 skipping to change at page 55, line 5
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 authenticated user (see section 8.3) performing this Access Rights: The authenticated user (see section 8.3) performing this
operation must be an operator or administrator of the Printer object operation must be an operator or administrator of the Printer object
(see Sections 1 and 8.5). Otherwise, the IPP object MUST reject the (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.
Expires December 11, 1999
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
Expires November 10, 1999
correct target of the operation. That job identification MAY either be 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 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
skipping to change at page 53, line 30 skipping to change at page 55, line 38
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 If the Printer supports this operation but does not support multiple
documents per job, the Printer MUST reject subsequent Send-Document documents per job, the Printer MUST reject subsequent Send-Document
operations supplied with data and return the 'server-error-multiple- operations supplied with data and return the 'server-error-multiple-
document-jobs-not-supported'. However, the Printer MUST accept the document-jobs-not-supported'. However, the Printer MUST accept the
first document with a 'true' or 'false' value for the "last-document" first document with a 'true' or 'false' value for the "last-document"
operation attribute (see below), so that clients MAY always submit one operation attribute (see below), so that clients MAY always submit one
document jobs with a 'false' value for "last-document" in the first document jobs with a 'false' value for "last-document" in the first
Send-Document and a 'true' for "last-document" in the second Send- Send-Document and a 'true' for "last-document" in the second Send-
Document (with no data). Issue 34 Document (with no data).
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.31). 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), Issue 30 and clean up all resources associated with the 4.3.8), and clean up all resources associated with the Job. In
Job. In this case, if another send operation is finally received, this case, if another send operation is finally received, the
the Printer responds with an "client-error-not-possible" or
"client-error-not-found" depending on whether or not the Job object Expires December 11, 1999
is still around when the send operation finally arrives. Printer responds with an "client-error-not-possible" or "client-
error-not-found" depending on whether or not the Job object 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). Issue 30 This action allows the attribute (see section 4.3.8). This action allows the user or an
operator to determine whether to continue processing the Job by
Expires November 10, 1999 moving it back to the 'pending' state using the Release-Job
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 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
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 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 must either be the job owner (as determined in the Create-Job
operation) or an operator or administrator of the Printer object (see operation) or an operator or administrator of the Printer object (see
Sections 1 and 8.5). Otherwise, the IPP object MUST reject the 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', or 'client-error-not-authorized' as appropriate. Issue authenticated', or 'client-error-not-authorized' as appropriate.
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 54, line 49 skipping to change at page 57, line 4
target for this operation as described in section 3.1.5. target for 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
by the client as described in section 8.3. by the client as described in section 8.3.
"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
Expires December 11, 1999
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) "compression" (type3 keyword)
See the description of "compression" for the Print-Job operation in See the description of "compression" for the Print-Job operation in
Section 3.2.1.1. Section 3.2.1.1.
Expires November 10, 1999
"document-format" (mimeMediaType) : "document-format" (mimeMediaType) :
See the description of "document-format" for the Print-Job See the description of "document-format" for the Print-Job
operation in Section 3.2.1.1. Issue 11 operation in Section 3.2.1.1.
"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.
"last-document" (boolean): "last-document" (boolean):
skipping to change at page 55, line 43 skipping to change at page 57, line 55
was added to the job. was added to the job.
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(255))
operation attribute as described in sections 13 and 3.1.6. operation attribute as described in sections 13 and 3.1.6.
Expires December 11, 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
See section 3.1.7 for details on returning Unsupported Attributes. See section 3.1.7 for details on returning Unsupported Attributes.
Group 3: Job Object Attributes Group 3: Job Object Attributes
This is the same set of attributes as described in the Print-Job This is the same set of attributes as described in the Print-Job
response (see section 3.2.1.2). response (see section 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
document data and the "last-document" flag set to 'true' (rather than document data and the "last-document" flag set to 'true' (rather than
using a Send-URI operation with no "document-uri" operation attribute). using a Send-URI operation with no "document-uri" operation attribute).
If a Printer object supports this operation, it MUST also support the If a Printer object supports this operation, it MUST also support the
Print-URI operation (see section 3.2.2). Print-URI operation (see section 3.2.2).
The Printer object MUST validate the syntax and URI scheme of the The Printer object MUST validate the syntax and URI scheme of the
supplied URI before returning a response, just as in the Print-URI supplied URI before returning a response, just as in the Print-URI
operation. operation. The IPP Printer MAY validate the accessibility of the
document as part of the operation or subsequently (see section 3.2.2).
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 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:
Expires December 11, 1999
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' 'canceled' 'successful-ok' 'pending' 'canceled' 'successful-ok'
'pending-held' 'canceled' 'successful-ok'
'pending- 'canceled' 'successful-ok'
held'
'processing' 'canceled' 'successful-ok' 'processing' 'canceled' 'successful-ok'
'processing' 'processing' 'successful-ok' See Rule 1
'processing' 'processing' 'successful-ok' See Note 1 'processing' 'processing' 'client-error-not-possible'
See Rule 2
'processing' 'processing' 'client-error-not-possible' See
Note 2
'processing- 'canceled' 'successful-ok' 'processing- 'canceled' 'successful-ok'
stopped' stopped'
'processing- 'processing- 'successful-ok' See Rule 1
'processing- 'processing- 'successful-ok' See Note 1
stopped' stopped' stopped' stopped'
'processing- 'processing- 'client-error-not-possible'
'processing- 'processing- 'client-error-not-possible' See stopped' stopped' See Rule 2
stopped' stopped' Note 2
'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'
Expires November 10, 1999 Rule 1: If the implementation requires some measurable time to cancel
Note 1: If the implementation requires some measurable time to cancel
the job in the 'processing' or 'processing-stopped' job states, the IPP 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- 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-reasons" attribute and then transition the job to the 'canceled'
state when the processing ceases (see section 4.3.8). state when the processing ceases (see section 4.3.8).
Note 2: If the Job object already has the 'processing-to-stop-point' Rule 2: If the Job object already has the 'processing-to-stop-point'
value in its "job-state-reasons" attribute, then the Printer object MUST value in its "job-state-reasons" attribute, then the Printer object MUST
reject a Cancel-Job operation. reject a Cancel-Job operation.
Access Rights: The authenticated user (see section 8.3) performing this Access Rights: The authenticated user (see section 8.3) performing this
operation must either be the job owner or an operator or administrator 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 of the Printer object (see Sections 1 and 8.5). Otherwise, the IPP
object MUST reject the operation and return: 'client-error-forbidden', object MUST reject the operation and return: 'client-error-forbidden',
'client-error-not-authenticated', or 'client-error-not-authorized' as 'client-error-not-authenticated', or 'client-error-not-authorized' as
appropriate. appropriate.
skipping to change at page 57, line 40 skipping to change at page 60, line 5
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)
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.
Expires December 11, 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.
"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
operator. This "message" attribute is not the same as the "job- operator. This "message" attribute is not the same as the "job-
message-from-operator" attribute. That attribute is used to report message-from-operator" attribute. That attribute is used to report
a message from the operator to the end user that queries that a message from the operator to the end user that queries that
skipping to change at page 58, line 5 skipping to change at page 60, line 27
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(255))
operation attribute as described in sections 13 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
See section 3.1.7 for details on returning Unsupported Attributes. See section 3.1.7 for details on returning Unsupported Attributes.
skipping to change at page 58, line 35 skipping to change at page 61, line 4
'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
Expires December 11, 1999
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': the subset of the Job Template attributes that - 'job-template': the subset of the Job Template attributes that
apply to a Job object (the first column of the table in Section apply to a Job object (the first column of the table in Section
4.2) that the implementation supports for Job objects. 4.2) that the implementation supports for Job objects.
- 'job-description': the subset of the Job Description attributes - 'job-description': the subset of the Job Description attributes
specified in Section 4.3 that the implementation supports for Job specified in Section 4.3 that the implementation supports for Job
objects. objects.
- 'all': the special group 'all' that includes all attributes that - 'all': the special group 'all' that includes all attributes that
the implementation supports for Job objects. Issue 23 the implementation supports for Job objects.
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
skipping to change at page 59, line 38 skipping to change at page 62, line 5
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'.
Expires December 11, 1999
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(255))
operation attribute as described in sections 13 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
See section 3.1.7 for details on returning Unsupported Attributes. See section 3.1.7 for details on returning Unsupported Attributes.
Expires November 10, 1999
The response NEED NOT contain the "requested-attributes" operation 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. If requested by the client but are not supported by the IPP object. If
the Printer does include unsupported attributes referenced in the Printer object does include unsupported attributes referenced
"requested-attributes" and such attributes include group names, in "requested-attributes" and such attributes include group names,
such as 'all', the unsupported attributes MUST NOT include such as 'all', the unsupported attributes MUST NOT include
attributes described in the standard but not supported by the attributes described in the standard but not supported by the
implementation. Issue 23 implementation.
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
skipping to change at page 60, line 37 skipping to change at page 63, line 5
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
attribute allows a client to specify whether to hold the job attribute allows a client to specify whether to hold the job
indefinitely or until a specified time period, if supported. indefinitely or until a specified time period, if supported.
Expires December 11, 1999
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-state" IPP object's response status
state" state" code and action: state" code and action:
'pending' 'pending- 'successful-ok' See Note 1
held'
'pending' 'pending' 'successful-ok' See Note 2
'pending- 'pending- 'successful-ok' See Note 1
held' held'
'pending- 'pending' 'successful-ok' See Note 2
held'
'pending' 'pending-held' 'successful-ok' See Rule 1
'pending' 'pending' 'successful-ok' See Rule 2
'pending-held' 'pending-held' 'successful-ok' See Rule 1
'pending-held' 'pending' 'successful-ok' See Rule 2
'processing' 'processing' 'client-error-not-possible' 'processing' 'processing' 'client-error-not-possible'
'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'
Expires November 10, 1999 Rule 1: If the implementation supports multiple reasons for a job to be
Note 1: If the implementation supports multiple reasons for a job to be
in the 'pending-held' state, the IPP object MUST add the 'job-hold- in the 'pending-held' state, the IPP object MUST add the 'job-hold-
until-specified' value to the job's "job-state-reasons" attribute. until-specified' value to the job's "job-state-reasons" attribute.
Note 2: If the IPP object supports the "job-hold-until" operation Rule 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
skipping to change at page 61, line 44 skipping to change at page 64, line 4
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,
if it supports the "job-hold-until" Job template attribute in if it supports the "job-hold-until" Job template attribute in
create operations. See section 4.2.2. The IPP object SHOULD create operations. See section 4.2.2. The IPP object SHOULD
Expires December 11, 1999
support the "job-hold-until" Job Template attribute for use in job support the "job-hold-until" Job Template attribute for use in job
create operations with at least the 'indefinite' value, if it create operations with at least the 'indefinite' value, if it
supports the Hold-Job operation. Otherwise, a client cannot create supports the Hold-Job operation. Otherwise, a client cannot create
a job and hold it immediately (without picking some supported time a job and hold it immediately (without picking some supported time
period in the future). period in the future).
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.1.7, 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).
skipping to change at page 62, line 37 skipping to change at page 64, line 54
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. Hold-Job or Restart-Job operation and remove its effect on the job. The
Issue 30 The IPP object MUST remove the 'job-hold-until-specified' value IPP object MUST remove the 'job-hold-until-specified' value from the
from the job's "job-state-reasons" attribute, if present. See section job's "job-state-reasons" attribute, if present. See section 4.3.8.
4.3.8.
Expires December 11, 1999
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-state" IPP object's response status
state" state" code and action: state" code and action:
'pending' 'pending' 'successful-ok' No effect on
the job.
'pending- 'pending- 'successful-ok' See Note 1
held' held'
'pending- 'pending' 'successful-ok'
held'
'processing' 'processing' 'successful-ok' No effect on
the job.
'processing- 'processing- 'successful-ok' No effect on
stopped' stopped' the job.
Expires November 10, 1999
Current "job- New "job- IPP object's response status
state" state" code and action:
'pending' 'pending' 'successful-ok'
No effect on the job.
'pending-held' 'pending-held' 'successful-ok' See Rule 1
'pending-held' 'pending' 'successful-ok'
'processing' 'processing' 'successful-ok'
No effect on the job.
'processing- 'processing- 'successful-ok'
stopped' stopped' No effect on the job.
'completed' 'completed' 'client-error-not-possible' '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- Rule 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 authenticated user (see section 8.3) performing this Access Rights: The authenticated user (see section 8.3) performing this
operation must either be the job owner or an operator or administrator 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 of the Printer object (see Sections 1 and 8.5). Otherwise, the IPP
skipping to change at page 63, line 39 skipping to change at page 65, line 49
appropriate. appropriate.
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.2).
The job is moved to the 'pending' job state and restarts at the The job is moved to the 'pending' job state and restarts at the
beginning on the same IPP Printer object with the same attribute values. beginning on the same IPP Printer object with the same attribute values.
The Job Description attributes that accumulate job progress, such as The Job Description attributes that accumulate job progress, such as
"job-impressions-completed", "job-media-sheets-completed", and "job-k- "job-impressions-completed", "job-media-sheets-completed", and "job-k-
octets-processed", MUST be reset to 0 so that they give an accurate octets-processed", MUST be reset to 0 so that they give an accurate
record of the job from its restart point. The job object MUST continue record of the job from its restart point. The job object MUST continue
to use the same "job-uri" and "job-id" attribute values. to use the same "job-uri" and "job-id" attribute values.
Note: If in the future an operation is needed that does not reset the Note: If in the future an operation is needed that does not reset the
job progress attributes, then a new operation will be defined which job progress attributes, then a new operation will be defined which
Expires December 11, 1999
makes a copy of the job, assigns a new "job-uri" and "job-id" to the makes a copy of the job, assigns a new "job-uri" and "job-id" to the
copy and resets the job progress attributes in the new copy only. copy and resets the job progress attributes in the new copy only.
The IPP object MUST accept or reject the request based on the job's The IPP object MUST accept or reject the request based on the job's
current state, transition the job to the indicated new state as follows: current state, transition the job to the indicated new state as follows:
Current "job- New "job- IPP object's response status Current "job- New "job-state" IPP object's response status
state" state" code and action: state" code and action:
'pending' 'pending' 'client-error-not-possible'.
'pending- 'pending- 'client-error-not-possible'.
held' held'
'processing' 'processing' 'client-error-not-possible'.
Expires November 10, 1999
Current "job- New "job- IPP object's response status
state" state" code and action:
'processing- 'processing- 'client-error-not-possible'. 'pending' 'pending' 'client-error-not-possible'
'pending-held' 'pending-held' 'client-error-not-possible'
'processing' 'processing' 'client-error-not-possible'
'processing- 'processing- 'client-error-not-possible'
stopped' stopped' 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 Rule 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 Rule 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 Rule 1
Note 1: If the Job Retention Period has expired for the job in this Rule 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.2.
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 authenticated user (see section 8.3) performing this Access Rights: The authenticated user (see section 8.3) performing this
skipping to change at page 64, line 58 skipping to change at page 67, line 4
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
Expires December 11, 1999
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.1.7, 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.
skipping to change at page 65, line 42 skipping to change at page 67, line 51
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
reasons to hold the job, the Restart-Job operation makes the job a reasons to hold the job, the Restart-Job operation makes the job a
candidate for processing immediately (see Section 4.2.2). candidate for processing immediately (see Section 4.2.2).
3.3.7.2 Restart-Job Response 3.3.7.2 Restart-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).
Note: In the future an OPTIONAL Modify-Job operation may be specified Note: In the future an OPTIONAL Modify-Job or Set-Job-Attributes
that allows the client to modify other attributes before releasing the operation may be specified that allows the client to modify other
restarted job. attributes before releasing the restarted job.
Expires December 11, 1999
4. Object Attributes 4. Object Attributes
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 documents:
- 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 12.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 4
3.3.5 includes the name of attribute syntax(es) in the heading (in 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
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 whose special encoding rules are MAY be one of the "out-of-band" values whose special encoding rules are
defined in the "Encoding and Transport" specification [IPP-PRO]. defined in the "Encoding and Transport" document [IPP-PRO]. Standard
Standard "out-of-band" values are: Issues 12 and 15 "out-of-band" values are:
'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.
All attributes in a request MUST have one or more values as defined in All attributes in a request MUST have one or more values as defined in
Sections 4.2 to 4.4. Thus clients MUST NOT supply attributes with "out- Sections 4.2 to 4.4. Thus clients MUST NOT supply attributes with "out-
of-band" values. All attributes in a response MUST have one or more of-band" values. All attributes in a response MUST have one or more
Expires December 11, 1999
values as defined in Sections 4.2 to 4.4 or a single "out-of-band" values as defined in Sections 4.2 to 4.4 or a single "out-of-band"
value. 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.
In this specification, all text attributes are defined using the 'text' In this document, all text attributes are defined using the 'text'
syntax. However, 'text' is used only for brevity; the formal syntax. However, 'text' is used only for brevity; the formal
interpretation of 'text' is: 'textWithoutLanguage | 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 document using the 'text'
'text' attribute syntax, all IPP objects and clients MUST support both attribute syntax, all IPP objects and clients MUST support both the
the 'textWithoutLanguage' and 'textWithLanguage' attribute syntaxes. '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.18, "attributes-natural-language" job attribute defined in section 4.3.20,
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).
Expires December 11, 1999
The 'textWithoutLanguage' and 'textWithLanguage' attribute syntaxes are The 'textWithoutLanguage' and 'textWithLanguage' attribute syntaxes are
described in more detail in the following sections. described in more detail in the following sections.
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 definition of the 'charset' attribute syntax,
syntax, including restricted semantics and examples of charsets. 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
skipping to change at page 68, line 47 skipping to change at page 71, line 5
operation attribute with the value: 'en' indicating English, but the operation attribute with the value: 'en' indicating English, but the
value of the "job-name" attribute is in French, the client MUST use the value of the "job-name" attribute is in French, the client MUST use the
'textWithLanguage' attribute syntax with the following two values: 'textWithLanguage' attribute syntax with the following two values:
'fr': Natural Language Override indicating French 'fr': Natural Language Override indicating French
'Rapport Mensuel': the job name in French 'Rapport Mensuel': the job name in French
See the "Encoding and Transport" document [IPP-PRO] for a detailed See the "Encoding and Transport" document [IPP-PRO] for a detailed
example of the 'textWithLanguage' attribute syntax. example of the 'textWithLanguage' attribute syntax.
Expires December 11, 1999
4.1.2 'name' 4.1.2 'name'
This syntax type is used for user-friendly strings, such as a Printer This syntax type is used for user-friendly strings, such as a Printer
name, that, for humans, are more meaningful than identifiers. Names are name, that, for humans, are more meaningful than identifiers. Names are
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 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.
4.1.2.1 'nameWithoutLanguage' 4.1.2.1 'nameWithoutLanguage'
skipping to change at page 69, line 47 skipping to change at page 72, line 5
syntax is used rather than the generic 'nameWithoutLanguage' syntax. syntax is used rather than the generic 'nameWithoutLanguage' syntax.
Example: If the client supplies the "attributes-natural-language" Example: If the client supplies the "attributes-natural-language"
operation attribute with the value: 'en' indicating English, but the operation attribute with the value: 'en' indicating English, but the
"printer-name" attribute is in German, the client MUST use the "printer-name" attribute is in German, the client MUST use the
'nameWithLanguage' attribute syntax as follows: 'nameWithLanguage' attribute syntax as follows:
'de': Natural Language Override indicating German 'de': Natural Language Override indicating German
'Farbdrucker': the Printer name in German 'Farbdrucker': the Printer name in German
Expires December 11, 1999
4.1.2.3 Matching 'name' attribute values 4.1.2.3 Matching 'name' attribute values
For purposes of matching two 'name' attribute values for equality, such For purposes of matching two 'name' attribute values for equality, such
as in job validation (where a client-supplied value for attribute "xxx" as in job validation (where a client-supplied value for attribute "xxx"
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
skipping to change at page 70, line 44 skipping to change at page 73, line 5
provide a mapping between protocol keywords and displayable user- provide a mapping between protocol keywords and displayable user-
friendly words and phrases which are localized to the natural language friendly words and phrases which are localized to the natural language
of the user. While the keywords specified in this document MAY be of the user. While the keywords 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.
In the definition for each attribute of this syntax type, the full set In the definition for each attribute of this syntax type, the full set
of defined keyword values for that attribute are listed. of defined keyword values for that attribute are listed.
Expires December 11, 1999
When a keyword is used to represent an attribute (its name), it MUST be When a keyword is used to represent an attribute (its name), it MUST be
unique within the full scope of all IPP objects and attributes. When a unique within the full scope of all IPP objects and attributes. When a
keyword is used to represent a value of an attribute, it MUST be unique keyword is used to represent a value of an attribute, it MUST be unique
just within the scope of that attribute. That is, the same keyword MUST just within the scope of that attribute. That is, the same keyword MUST
NOT be used for two different values within the same attribute to mean NOT be used for two different values within the same attribute to mean
two different semantic ideas. However, the same keyword MAY be used two different semantic ideas. However, the same keyword MAY be used
across two or more attributes, representing different semantic ideas for across two or more attributes, representing different semantic ideas for
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 document are also used for corresponding attributes
attributes in other standards [RFC1759]. This syntax type is not used in other standards [RFC1759]. This syntax type is not used for
for attributes to which the administrator may assign values. Section attributes to which the administrator may assign values. Section 6.1
6.1 describes how the protocol can be extended with new enum values. 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.
Note: SNMP MIBs use '2' for 'unknown' which corresponds to the IPP "out- Note: SNMP MIBs use '2' for 'unknown' which corresponds to the IPP "out-
skipping to change at page 71, line 43 skipping to change at page 74, line 4
Note: This document uses "type1", "type2", and "type3" prefixes to the Note: This document uses "type1", "type2", and "type3" prefixes to the
"enum" basic syntax to indicate different levels of review for "enum" basic syntax to indicate different levels of review for
extensions (see section 6.1). extensions (see section 6.1).
4.1.5 'uri' 4.1.5 'uri'
The 'uri' attribute syntax is any valid Uniform Resource Identifier or The 'uri' attribute syntax is any valid Uniform Resource Identifier or
URI [RFC2396]. Most often, URIs are simply Uniform Resource Locators or URI [RFC2396]. Most often, URIs are simply Uniform Resource Locators or
URLs. The maximum length of URIs used as values of IPP attributes is URLs. The maximum length of URIs used as values of IPP attributes is
1023 octets. Although most other IPP attribute syntax types allow for 1023 octets. Although most other IPP attribute syntax types allow for
Expires December 11, 1999
only lower-cased values, this attribute syntax type conforms to the only lower-cased values, this attribute syntax type conforms to the
case-sensitive and case-insensitive rules specified in [RFC2396]. See case-sensitive and case-insensitive rules specified in [RFC2396]. See
also [IPP-IIG] for a discussion of case in URIs. also [IPP-IIG] for a discussion of case in URIs.
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.
following keywords:
Standard values for this syntax type are the following keywords:
'ipp': for IPP schemed URIs (e.g., "ipp:...")
'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.
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
skipping to change at page 72, line 38 skipping to change at page 75, line 4
Some examples are: Some examples are:
'utf-8': ISO 10646 Universal Multiple-Octet Coded Character Set 'utf-8': ISO 10646 Universal Multiple-Octet Coded Character Set
(UCS) represented as the UTF-8 [RFC2279] transfer encoding scheme (UCS) represented as the UTF-8 [RFC2279] transfer encoding scheme
in which US-ASCII is a subset charset. in which US-ASCII is a subset charset.
'us-ascii': 7-bit American Standard Code for Information Interchange 'us-ascii': 7-bit American Standard Code for Information Interchange
(ASCII), ANSI X3.4-1986 [ASCII]. That standard defines US-ASCII, (ASCII), ANSI X3.4-1986 [ASCII]. That standard defines US-ASCII,
but RFC 2045 [RFC2045] eliminates most of the control characters but RFC 2045 [RFC2045] eliminates most of the control characters
from conformant usage in MIME and IPP. from conformant usage in MIME and IPP.
Expires December 11, 1999
'iso-8859-1': 8-bit One-Byte Coded Character Set, Latin Alphabet Nr 'iso-8859-1': 8-bit One-Byte Coded Character Set, Latin Alphabet Nr
1 [ISO8859-1]. That standard defines a coded character set that is 1 [ISO8859-1]. That standard defines a coded character set that is
used by Latin languages in the Western Hemisphere and Western used by Latin languages in the Western Hemisphere and Western
Europe. US-ASCII is a subset charset. Europe. US-ASCII is a subset charset.
'iso-10646-ucs-2': ISO 10646 Universal Multiple-Octet Coded 'iso-10646-ucs-2': ISO 10646 Universal Multiple-Octet Coded
Character Set (UCS) represented as two octets (UCS-2), with the Character Set (UCS) represented as two octets (UCS-2), with the
high order octet of each pair coming first (so-called Big Endian high order octet of each pair coming first (so-called Big Endian
integer). integer).
Some attribute descriptions MAY place additional requirements on charset Some attribute descriptions MAY place additional requirements on charset
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
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.
skipping to change at page 73, line 39 skipping to change at page 76, line 4
Examples are: Examples are:
'text/html': An HTML document 'text/html': An HTML document
'text/plain': A plain text document in US-ASCII (RFC 2046 indicates 'text/plain': A plain text document in US-ASCII (RFC 2046 indicates
that in the absence of the charset parameter MUST mean US-ASCII that in the absence of the charset parameter MUST mean US-ASCII
rather than simply unspecified) [RFC2046]. rather than simply unspecified) [RFC2046].
'text/plain; charset=US-ASCII': A plain text document in US-ASCII 'text/plain; charset=US-ASCII': A plain text document in US-ASCII
[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].
Expires December 11, 1999
'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': Auto-sense - see below 'application/octet-stream': Auto-sense - see section 4.1.9.1
4.1.9.1 Application/octet-stream -- Auto-Sensing the document format 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, either as part of the create operation the format of the document data, either as part of the create operation
and/or at document processing time. During auto-sensing, a Printer may and/or at document processing time. During auto-sensing, a Printer may
determine that the document-data has a format that the Printer doesn't determine that the document-data has a format that the Printer doesn't
recognize. If the Printer determines this problem before returning an recognize. If the Printer determines this problem before returning an
operation response, it rejects the request and returns the 'client- operation response, it rejects the request and returns the 'client-
error-document-format-not-supported' status code. If the Printer error-document-format-not-supported' status code. If the Printer
determines this problem after accepting the request and returning an determines this problem after accepting the request and returning an
operation response with one of the successful status codes, the Printer 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- adds the 'unsupported-document-format' value to the job's "job-state-
reasons" attribute. Issue 9 and Issue 10 reasons" attribute.
If the Printer object's default value attribute "document-format- If the Printer object's default value attribute "document-format-
default" is set to 'application/octet-stream', the Printer object not default" is set to 'application/octet-stream', the Printer object not
only supports auto-sensing of the document format, but will depend on 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 result of applying its auto-sensing when the client does not supply
the "document-format" attribute. If the client supplies a document the "document-format" attribute. If the client supplies a document
format value, the Printer MUST rely on the supplied attribute, rather format value, the Printer MUST rely on the supplied attribute, rather
than trust its auto-sensing algorithm. To summarize: 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
skipping to change at page 74, line 39 skipping to change at page 77, line 4
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-
stream') and true fidelity ("ipp-attribute-fidelity" set to 'true'), the stream') and true fidelity ("ipp-attribute-fidelity" set to 'true'), the
Printer object might not be able to guarantee exactly what the end user Printer object might not be able to guarantee exactly what the end user
Expires December 11, 1999
intended (the auto-sensing algorithm might mistake one document format intended (the auto-sensing algorithm might mistake one document format
for another ), but it is able to guarantee that its auto-sensing for another ), but it is able to guarantee that its auto-sensing
mechanism be used. mechanism be used.
The maximum length of a 'mimeMediaType' value to represent IPP attribute The maximum length of a 'mimeMediaType' value to represent IPP attribute
values is 255 octets. values is 255 octets.
4.1.10 'octetString' 4.1.10 'octetString'
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.
skipping to change at page 75, line 30 skipping to change at page 77, line 48
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.
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 2579
[RFC1903]. RFC 1903 also identifies an 8 octet representation of a [RFC2579]. RFC 2579 also identifies an 8 octet representation of a
"DateAndTime" value, but IPP objects MUST use the 11 octet "DateAndTime" value, but IPP objects MUST use the 11 octet
representation. A user interface will provide a mapping between representation. A user interface will provide a mapping between
protocol dateTime values and displayable user-friendly words or protocol dateTime values and displayable user-friendly words or
presentation values and phrases which are localized to the natural presentation values and phrases which are localized to the natural
language and date format of the user. language and date format of the user, including time zone.
Expires December 11, 1999
4.1.15 'resolution' 4.1.15 'resolution'
The 'resolution' attribute syntax specifies a two-dimensional resolution The 'resolution' attribute syntax specifies a two-dimensional resolution
in the indicated units. It consists of 3 values: a cross feed direction in the indicated units. It consists of 3 values: a cross feed direction
resolution (positive integer value), a feed direction resolution resolution (positive integer value), a feed direction resolution
(positive integer value), and a units value. The semantics of these (positive integer value), and a units value. The semantics of these
three components are taken from the Printer MIB [RFC1759] suggested three components are taken from the Printer MIB [RFC1759] suggested
values. That is, the cross feed direction component resolution values. That is, the cross feed direction component resolution
component is the same as the prtMarkerAddressabilityXFeedDir object in component is the same as the prtMarkerAddressabilityXFeedDir object in
skipping to change at page 76, line 4 skipping to change at page 78, line 29
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
skipping to change at page 76, line 38 skipping to change at page 79, line 4
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.
If "xxx" is supplied, the client is indicating a desired job If "xxx" is supplied, the client is indicating a desired job
processing behavior for this Job. When "xxx" is not supplied, the processing behavior for this Job. When "xxx" is not supplied, the
Expires December 11, 1999
client is indicating that the Printer object apply its default job client is indicating that the Printer object apply its default job
processing behavior at job processing time if the document content processing behavior at job processing time if the document content
does not contain an embedded instruction indicating an xxx-related does not contain an embedded instruction indicating an xxx-related
behavior. behavior.
Note: Since an administrator MAY change the default value attribute Since an administrator MAY change the default value attribute after
after a Job object has been submitted but before it has been a Job object has been submitted but before it has been processed,
processed, the default value used by the Printer object at job the default value used by the Printer object at job processing time
processing time may be different that the default value in effect may be different that the default value in effect at job submission
at job submission time. time.
3. The "xxx-supported" attribute is a Printer object attribute that 3. The "xxx-supported" attribute is a Printer object attribute that
describes which job processing behaviors are supported by that describes which job processing behaviors are supported by that
Printer object. A client can query the Printer object to find out Printer object. A client can query the Printer object to find out
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
skipping to change at page 77, line 35 skipping to change at page 80, line 4
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
Expires December 11, 1999
identified in the Printer object's "finishings-supported" attribute. identified in the Printer object's "finishings-supported" attribute.
See section 3.1.7. 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 November 10, 1999 Expires December 11, 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 ( |
skipping to change at page 78, line 60 skipping to change at page 82, line 4
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| 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- |
| (resolution) | default | supported |
Expires November 10, 1999 Expires December 11, 1999
| (resolution) | default | supported |
| | (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 80, line 5 skipping to change at page 83, 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 November 10, 1999 Expires December 11, 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 80, line 32 skipping to change at page 83, line 32
'second-shift': second-shift (after close of business) 'second-shift': second-shift (after close of business)
'third-shift': third-shift (after midnight) 'third-shift': third-shift (after midnight)
An administrator MUST associate allowable print times with a named time An administrator MUST associate allowable print times with a named time
period (by means outside the scope of this IPP/1.1 document). An period (by means outside the scope of this IPP/1.1 document). An
administrator is encouraged to pick names that suggest the type of time administrator is encouraged to pick names that suggest the type of time
period. An administrator MAY define additional values using the 'name' period. An administrator MAY define additional values using the 'name'
or 'keyword' attribute syntax, depending on implementation. or 'keyword' attribute syntax, depending on implementation.
If the value of this attribute specifies a time period that is in the If the value of this attribute specifies a time period that is in the
future, the Printer MUST add the 'job-hold-until-specified' value to the future, the Printer SHOULD add the 'job-hold-until-specified' value to
job's "job-state-reasons" attribute, move the job to the 'pending-held' the job's "job-state-reasons" attribute, MUST move the job to the
state, and MUST NOT schedule the job for printing until the specified 'pending-held' state, and MUST NOT schedule the job for printing until
time-period arrives. When the specified time period arrives, the the specified time-period arrives.
Printer MUST remove the 'job-hold-until-specified' value from the job's
"job-state-reason" attribute and, if there are no other job state When the specified time period arrives, the Printer MUST remove the
reasons that keep the job in the 'pending-held' state, the Printer MUST 'job-hold-until-specified' value from the job's "job-state-reason"
consider the job as a candidate for processing by moving the job to the attribute, if present. If there are no other job state reasons that
'pending' state. keep the job in the 'pending-held' state, the Printer MUST consider the
job as a candidate for processing by moving the job to the 'pending'
state.
If this job attribute value is the named value 'no-hold', or the If this job attribute value is the named value 'no-hold', or the
specified time period has already started, the job MUST be a candidate specified time period has already started, the job MUST be a candidate
for processing immediately. for processing immediately.
If the client does not supply this attribute and this attribute is If the client does not supply this attribute and this attribute is
supported by the Printer object, the Printer object MUST use the value supported by the Printer object, the Printer object MUST use the value
of the Printer object's "job-hold-until-default" at job submission time of the Printer object's "job-hold-until-default" at job submission time
(unlike most Job Template attributes that are used if necessary at job (unlike most Job Template attributes that are used if necessary at job
processing time). processing time).
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:
Expires December 11, 1999
'none': no job sheet is printed 'none': no job sheet is printed
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 The effect of this attribute on jobs with multiple documents MAY be
be affected by the "multiple-document-handling" job attribute (section 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. This attribute MUST be supported if the Printer supports documents. This attribute MUST be supported if the Printer supports
multiple documents per job (see sections 3.2.4 and 3.3.1). Issue 34 The multiple documents per job (see sections 3.2.4 and 3.3.1). The
attribute controls finishing operations and the placement of one or more attribute controls finishing operations and the placement of one or more
print-stream pages into impressions and onto media sheets. When the print-stream pages into impressions and onto media sheets. When the
value of the "copies" attribute exceeds 1, it also controls the order in value of the "copies" attribute exceeds 1, it also controls the order in
which the copies that result from processing the documents are produced. which the copies that result from processing the documents are produced.
For the purposes of this explanations, if "a" represents an instance of For the purposes of this explanations, if "a" represents an instance of
document data, then the result of processing the data in document "a" is document data, then the result of processing the data in document "a" is
a sequence of media sheets represented by "a(*)". a sequence of media sheets represented by "a(*)".
Standard keyword values are: Standard keyword values are:
skipping to change at page 81, line 58 skipping to change at page 85, line 4
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
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(*), 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
Expires December 11, 1999
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 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 82, line 57 skipping to change at page 86, line 5
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 15.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.
Expires December 11, 1999
Standard enum values are: Standard enum values are:
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 83, line 57 skipping to change at page 87, line 4
number and placement of the staples is implementation number and placement of the staples is implementation
and/or site-defined. and/or site-defined.
'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.
Expires December 11, 1999
'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
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 84, line 55 skipping to change at page 88, line 4
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
Expires December 11, 1999
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).
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-documents-uncollated-copies' or 'separate- handling" is 'separate-documents-uncollated-copies' or 'separate-
documents-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.
skipping to change at page 85, line 55 skipping to change at page 89, line 4
side of consecutive media sheets. side of consecutive media sheets.
'two-sided-long-edge': imposes each consecutive pair of print-stream 'two-sided-long-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
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
Expires December 11, 1999
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'.
'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 15.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))
skipping to change at page 86, line 53 skipping to change at page 90, line 4
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
Expires December 11, 1999
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
"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 87, line 50 skipping to change at page 91, line 5
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 15.3. that control document processing is described in section 15.3.
Expires December 11, 1999
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.
The values for "media" include medium-names, medium-sizes, input-trays The values for "media" include medium-names, medium-sizes, input-trays
and electronic forms so that one attribute specifies the media. If a and electronic forms so that one attribute specifies the media. If a
Printer object supports a medium name as a value of this attribute, such Printer object supports a medium name as a value of this attribute, such
a medium name implicitly selects an input-tray that contains the a medium name implicitly selects an input-tray that contains the
specified medium. If a Printer object supports a medium size as a value specified medium. If a Printer object supports a medium size as a value
of this attribute, such a medium size implicitly selects a medium name of this attribute, such a medium size implicitly selects a medium name
Expires November 10, 1999
that in turn implicitly selects an input-tray that contains the medium that in turn implicitly selects an input-tray that contains the medium
with the specified size. If a Printer object supports an input-tray as with the specified size. If a Printer object supports an input-tray as
the value of this attribute, such an input-tray implicitly selects the the value of this attribute, such an input-tray implicitly selects the
medium that is in that input-tray at the time the job prints. This case medium that is in that input-tray at the time the job prints. This case
includes manual-feed input-trays. If a Printer object supports an includes manual-feed input-trays. If a Printer object supports an
electronic form as the value of this attribute, such an electronic form electronic form as the value of this attribute, such an electronic form
implicitly selects a medium-name that in turn implicitly selects an implicitly selects a medium-name that in turn implicitly selects an
input-tray that contains the medium specified by the electronic form. input-tray that contains the medium specified by the electronic form.
The electronic form also implicitly selects an image that the Printer The electronic form also implicitly selects an image that the Printer
MUST merge with the document data as its prints each page. MUST merge with the document data as its prints each page.
skipping to change at page 88, line 49 skipping to change at page 92, line 5
Job. Job.
The standard enum values are: The standard enum values are:
Value Symbolic Name and Description Value Symbolic Name and Description
'3' 'draft': lowest quality available on the printer '3' 'draft': lowest quality available on the printer
'4' 'normal': normal or intermediate quality on the printer '4' 'normal': normal or intermediate quality on the printer
'5' 'high': highest quality available on the printer '5' 'high': highest quality available on the printer
Expires December 11, 1999
4.3 Job Description Attributes 4.3 Job Description Attributes
The attributes in this section form the attribute group called "job- The attributes in this section form the attribute group called "job-
description". The following table summarizes these attributes. The description". The following table summarizes these attributes. The
third column indicates whether the attribute is a REQUIRED attribute third column indicates whether the attribute is a REQUIRED attribute
that MUST be supported by Printer objects. If it is not indicated as that MUST be supported by Printer objects. If it is not indicated as
REQUIRED, then it is OPTIONAL. The maximum size in octets for 'text' REQUIRED, then it is OPTIONAL. The maximum size in octets for 'text'
and 'name' attributes is indicated in parenthesizes. and 'name' attributes is indicated in parenthesizes.
Expires November 10, 1999 Expires December 11, 1999
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| Attribute | Syntax | REQUIRED? | | Attribute | Syntax | REQUIRED? |
+----------------------------+----------------------+-------------