draft-ietf-ipp-model-v11-04.txt   draft-ietf-ipp-model-v11-05.txt 
INTERNET-DRAFT INTERNET-DRAFT
draft-ietf-ipp-model-v11-04.txt draft-ietf-ipp-model-v11-05.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
June 23, 1999 February 23, 2000
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 (2000). 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
its working groups. Note that other groups may also distribute working its working groups. Note that other groups may also distribute working
documents as Internet-Drafts. documents as Internet-Drafts.
Internet-Drafts are draft documents valid for a maximum of six months Internet-Drafts are draft documents valid for a maximum of six months
skipping to change at page 1, line 54 skipping to change at page 1, line 55
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.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 23, 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
skipping to change at page 3, line 5 skipping to change at page 2, line 50
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 December 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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..................................................20 3. IPP Operations..................................................20
3.1 Common Semantics.............................................20 3.1 Common Semantics.............................................21
3.1.1 Required Parameters......................................21 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...............................................22
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..........................24
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 Response Status Codes and Status Messages......29 3.1.6 Operation Response Status Codes and Status Messages......30
3.1.6.1 "status-code" (type2 enum)............................29 3.1.6.1 "status-code" (type2 enum)............................30
3.1.6.2 "status-message" (text(255))..........................30 3.1.6.2 "status-message" (text(255))..........................30
3.1.6.3 "detailed-status-message" (text(MAX)) ...............31 3.1.6.3 "detailed-status-message" (text(MAX)).................31
3.1.6.4 "document-access-error" (text(MAX)) .................31 3.1.6.4 "document-access-error" (text(MAX))...................31
3.1.7 Unsupported Attributes...................................31 3.1.7 Unsupported Attributes...................................32
3.1.8 Versions.................................................33 3.1.8 Versions.................................................33
3.1.9 Job Creation Operations..................................35 3.1.9 Job Creation Operations..................................35
3.2 Printer Operations...........................................37 3.2 Printer Operations...........................................38
3.2.1 Print-Job Operation......................................37 3.2.1 Print-Job Operation......................................38
3.2.1.1 Print-Job Request.....................................37 3.2.1.1 Print-Job Request.....................................38
3.2.1.2 Print-Job Response....................................41 3.2.1.2 Print-Job Response....................................42
3.2.2 Print-URI Operation......................................43 3.2.2 Print-URI Operation......................................44
3.2.3 Validate-Job Operation...................................44 3.2.3 Validate-Job Operation...................................45
3.2.4 Create-Job Operation.....................................44 3.2.4 Create-Job Operation.....................................45
3.2.5 Get-Printer-Attributes Operation.........................45 3.2.5 Get-Printer-Attributes Operation.........................46
3.2.5.1 Get-Printer-Attributes Request........................46 3.2.5.1 Get-Printer-Attributes Request........................47
3.2.5.2 Get-Printer-Attributes Response.......................47 3.2.5.2 Get-Printer-Attributes Response.......................48
3.2.6 Get-Jobs Operation.......................................48 3.2.6 Get-Jobs Operation.......................................49
3.2.6.1 Get-Jobs Request......................................49 3.2.6.1 Get-Jobs Request......................................49
3.2.6.2 Get-Jobs Response.....................................50 3.2.6.2 Get-Jobs Response.....................................51
3.2.7 Pause-Printer Operation..................................51 3.2.7 Pause-Printer Operation..................................52
3.2.7.1 Pause-Printer Request.................................53 3.2.7.1 Pause-Printer Request.................................54
3.2.7.2 Pause-Printer Response................................53 3.2.7.2 Pause-Printer Response................................54
3.2.8 Resume-Printer Operation.................................53 3.2.8 Resume-Printer Operation.................................54
3.2.9 Purge-Jobs Operation.....................................54 3.2.9 Purge-Jobs Operation.....................................55
3.3 Job Operations...............................................55 3.3 Job Operations...............................................56
3.3.1 Send-Document Operation..................................55 3.3.1 Send-Document Operation..................................56
3.3.1.1 Send-Document Request.................................56 3.3.1.1 Send-Document Request.................................57
3.3.1.2 Send-Document Response................................57 3.3.1.2 Send-Document Response................................59
3.3.2 Send-URI Operation.......................................58 3.3.2 Send-URI Operation.......................................59
3.3.3 Cancel-Job Operation.....................................58 3.3.3 Cancel-Job Operation.....................................59
3.3.3.1 Cancel-Job Request....................................59
Expires December 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
3.3.3.2 Cancel-Job Response...................................60 Expires August 23, 2000
3.3.4 Get-Job-Attributes Operation.............................60 3.3.3.1 Cancel-Job Request....................................60
3.3.4.1 Get-Job-Attributes Request............................61 3.3.3.2 Cancel-Job Response...................................61
3.3.4.2 Get-Job-Attributes Response...........................62 3.3.4 Get-Job-Attributes Operation.............................62
3.3.5 Hold-Job Operation.......................................62 3.3.4.1 Get-Job-Attributes Request............................62
3.3.5.1 Hold-Job Request......................................63 3.3.4.2 Get-Job-Attributes Response...........................63
3.3.5.2 Hold-Job Response.....................................64 3.3.5 Hold-Job Operation.......................................64
3.3.6 Release-Job Operation....................................64 3.3.5.1 Hold-Job Request......................................65
3.3.7 Restart-Job Operation....................................65 3.3.5.2 Hold-Job Response.....................................65
3.3.7.1 Restart-Job Request...................................66 3.3.6 Release-Job Operation....................................66
3.3.7.2 Restart-Job Response..................................67 3.3.7 Restart-Job Operation....................................67
3.3.7.1 Restart-Job Request...................................68
3.3.7.2 Restart-Job Response..................................69
4. Object Attributes...............................................68 4. Object Attributes...............................................69
4.1 Attribute Syntaxes...........................................68 4.1 Attribute Syntaxes...........................................69
4.1.1 'text'...................................................69 4.1.1 'text'...................................................70
4.1.1.1 'textWithoutLanguage'.................................70 4.1.1.1 'textWithoutLanguage'.................................71
4.1.1.2 'textWithLanguage'....................................70 4.1.1.2 'textWithLanguage'....................................71
4.1.2 'name'...................................................71 4.1.2 'name'...................................................72
4.1.2.1 'nameWithoutLanguage'.................................71 4.1.2.1 'nameWithoutLanguage'.................................73
4.1.2.2 'nameWithLanguage'....................................71 4.1.2.2 'nameWithLanguage'....................................73
4.1.2.3 Matching 'name' attribute values......................72 4.1.2.3 Matching 'name' attribute values......................74
4.1.3 'keyword'................................................72 4.1.3 'keyword'................................................74
4.1.4 'enum'...................................................73 4.1.4 'enum'...................................................75
4.1.5 'uri'....................................................73 4.1.5 'uri'....................................................75
4.1.6 'uriScheme'..............................................74 4.1.6 'uriScheme'..............................................76
4.1.7 'charset'................................................74 4.1.7 'charset'................................................76
4.1.8 'naturalLanguage'........................................75 4.1.8 'naturalLanguage'........................................77
4.1.9 'mimeMediaType'..........................................75 4.1.9 'mimeMediaType'..........................................77
4.1.9.1 Application/octet-stream -- Auto-Sensing the document 4.1.9.1 Application/octet-stream -- Auto-Sensing the document
format 76 format 78
4.1.10 'octetString'............................................77 4.1.10 'octetString'............................................79
4.1.11 'boolean'................................................77 4.1.11 'boolean'................................................79
4.1.12 'integer'................................................77 4.1.12 'integer'................................................79
4.1.13 'rangeOfInteger'.........................................77 4.1.13 'rangeOfInteger'.........................................79
4.1.14 'dateTime'...............................................77 4.1.14 'dateTime'...............................................79
4.1.15 'resolution'.............................................78 4.1.15 'resolution'.............................................80
4.1.16 '1setOf X'..............................................78 4.1.16 '1setOf X'..............................................80
4.2 Job Template Attributes......................................78 4.2 Job Template Attributes......................................80
4.2.1 job-priority (integer(1:100))............................82 4.2.1 job-priority (integer(1:100))............................84
4.2.2 job-hold-until (type3 keyword | name (MAX))..............83 4.2.2 job-hold-until (type3 keyword | name (MAX))..............85
4.2.3 job-sheets (type3 keyword | name(MAX))...................83 4.2.3 job-sheets (type3 keyword | name(MAX))...................86
4.2.4 multiple-document-handling (type2 keyword)...............84 4.2.4 multiple-document-handling (type2 keyword)...............86
4.2.5 copies (integer(1:MAX))..................................85 4.2.5 copies (integer(1:MAX))..................................87
4.2.6 finishings (1setOf type2 enum)...........................85 4.2.6 finishings (1setOf type2 enum)...........................88
4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX))..............87 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX))..............90
4.2.8 sides (type2 keyword)....................................88 4.2.8 sides (type2 keyword)....................................90
4.2.9 number-up (integer(1:MAX))...............................89 4.2.9 number-up (integer(1:MAX))...............................91
4.2.10 orientation-requested (type2 enum).......................89 4.2.10 orientation-requested (type2 enum).......................92
4.2.11 media (type3 keyword | name(MAX))........................91 4.2.11 media (type3 keyword | name(MAX))........................93
4.2.12 printer-resolution (resolution)..........................91 4.2.12 printer-resolution (resolution)..........................93
4.2.13 print-quality (type2 enum)...............................91 4.2.13 print-quality (type2 enum)...............................94
4.3 Job Description Attributes...................................92 4.3 Job Description Attributes...................................94
4.3.1 job-uri (uri)............................................94
4.3.2 job-id (integer(1:MAX))..................................94
Expires December 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
4.3.3 job-printer-uri (uri)....................................94 Expires August 23, 2000
4.3.4 job-more-info (uri)......................................95 4.3.1 job-uri (uri)............................................96
4.3.5 job-name (name(MAX)).....................................95 4.3.2 job-id (integer(1:MAX))..................................96
4.3.6 job-originating-user-name (name(MAX))....................95 4.3.3 job-printer-uri (uri)....................................96
4.3.7 job-state (type1 enum)...................................95 4.3.4 job-more-info (uri)......................................97
4.3.7.1 Forwarding Servers ..................................98 4.3.5 job-name (name(MAX)).....................................97
4.3.7.2 Partitioning of Job States............................98 4.3.6 job-originating-user-name (name(MAX))....................97
4.3.8 job-state-reasons (1setOf type2 keyword)................99 4.3.7 job-state (type1 enum)...................................98
4.3.9 job-state-message (text(MAX))...........................103 4.3.7.1 Forwarding Servers...................................100
4.3.10 job-detailed-status-messages (1setOf text(MAX)) ........103 4.3.7.2 Partitioning of Job States...........................100
4.3.11 job-document-access-errors (1setOf text(MAX)) ..........103 4.3.8 job-state-reasons (1setOf type2 keyword)...............101
4.3.12 number-of-documents (integer(0:MAX))....................103 4.3.9 job-state-message (text(MAX))...........................105
4.3.13 output-device-assigned (name(127))......................104 4.3.10 job-detailed-status-messages (1setOf text(MAX)).........105
4.3.14 Event Time Job Description Attributes .................104 4.3.11 job-document-access-errors (1setOf text(MAX))...........105
4.3.14.1 time-at-creation (integer(MIN:MAX))..................105 4.3.12 number-of-documents (integer(0:MAX))....................106
4.3.14.2 time-at-processing (integer(MIN:MAX))................105 4.3.13 output-device-assigned (name(127))......................106
4.3.14.3 time-at-completed (integer(MIN:MAX)).................105 4.3.14 Event Time Job Description Attributes...................106
4.3.14.4 job-printer-up-time (integer(1:MAX)) ................105 4.3.14.1 time-at-creation (integer(MIN:MAX))..................107
4.3.14.5 date-time-at-creation (dateTime) ...................105 4.3.14.2 time-at-processing (integer(MIN:MAX))................107
4.3.14.6 date-time-at-processing (dateTime) .................105 4.3.14.3 time-at-completed (integer(MIN:MAX)).................107
4.3.14.7 date-time-at-completed (dateTime) ..................105 4.3.14.4 job-printer-up-time (integer(1:MAX)).................107
4.3.15 number-of-intervening-jobs (integer(0:MAX)).............106 4.3.14.5 date-time-at-creation (dateTime).....................108
4.3.16 job-message-from-operator (text(127))...................106 4.3.14.6 date-time-at-processing (dateTime)...................108
4.3.17 Job Size Attributes.....................................106 4.3.14.7 date-time-at-completed (dateTime)....................108
4.3.17.1 job-k-octets (integer(0:MAX))........................106 4.3.15 number-of-intervening-jobs (integer(0:MAX)).............108
4.3.17.2 job-impressions (integer(0:MAX)).....................107 4.3.16 job-message-from-operator (text(127))...................108
4.3.17.3 job-media-sheets (integer(0:MAX))....................107 4.3.17 Job Size Attributes.....................................108
4.3.18 Job Progress Attributes.................................107 4.3.17.1 job-k-octets (integer(0:MAX))........................109
4.3.18.1 job-k-octets-processed (integer(0:MAX))..............107 4.3.17.2 job-impressions (integer(0:MAX)).....................109
4.3.18.2 job-impressions-completed (integer(0:MAX))...........108 4.3.17.3 job-media-sheets (integer(0:MAX))....................109
4.3.18.3 job-media-sheets-completed (integer(0:MAX))..........108 4.3.18 Job Progress Attributes.................................110
4.3.19 attributes-charset (charset)............................108 4.3.18.1 job-k-octets-processed (integer(0:MAX))..............110
4.3.20 attributes-natural-language (naturalLanguage)...........108 4.3.18.2 job-impressions-completed (integer(0:MAX))...........110
4.4 Printer Description Attributes..............................109 4.3.18.3 job-media-sheets-completed (integer(0:MAX))..........110
4.4.1 printer-uri-supported (1setOf uri)......................111 4.3.19 attributes-charset (charset)............................110
4.4.2 uri-authentication-supported (1setOf type2 keyword) ...111 4.3.20 attributes-natural-language (naturalLanguage)...........111
4.4.3 uri-security-supported (1setOf type2 keyword)...........112 4.4 Printer Description Attributes..............................111
4.4.4 printer-name (name(127))................................114 4.4.1 printer-uri-supported (1setOf uri)......................113
4.4.5 printer-location (text(127))............................114 4.4.2 uri-authentication-supported (1setOf type2 keyword).....113
4.4.6 printer-info (text(127))................................114 4.4.3 uri-security-supported (1setOf type2 keyword)...........114
4.4.7 printer-more-info (uri).................................114 4.4.4 printer-name (name(127))................................116
4.4.8 printer-driver-installer (uri)..........................114 4.4.5 printer-location (text(127))............................116
4.4.9 printer-make-and-model (text(127))......................114 4.4.6 printer-info (text(127))................................116
4.4.10 printer-more-info-manufacturer (uri)....................115 4.4.7 printer-more-info (uri).................................116
4.4.11 printer-state (type1 enum)..............................115 4.4.8 printer-driver-installer (uri)..........................116
4.4.12 printer-state-reasons (1setOf type2 keyword)............115 4.4.9 printer-make-and-model (text(127))......................117
4.4.13 printer-state-message (text(MAX)).......................118 4.4.10 printer-more-info-manufacturer (uri)....................117
4.4.14 ipp-versions-supported (1setOf type2 keyword) .........118 4.4.11 printer-state (type1 enum)..............................117
4.4.15 operations-supported (1setOf type2 enum)................118 4.4.12 printer-state-reasons (1setOf type2 keyword)............117
4.4.16 multiple-document-jobs-supported (boolean) ............119 4.4.13 printer-state-message (text(MAX)).......................120
4.4.17 charset-configured (charset)............................119 4.4.14 ipp-versions-supported (1setOf type2 keyword)...........120
4.4.18 charset-supported (1setOf charset)......................120 4.4.15 operations-supported (1setOf type2 enum)................121
4.4.19 natural-language-configured (naturalLanguage)...........120 4.4.16 multiple-document-jobs-supported (boolean)..............121
4.4.17 charset-configured (charset)............................122
Expires December 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
4.4.18 charset-supported (1setOf charset)......................122
4.4.19 natural-language-configured (naturalLanguage)...........122
4.4.20 generated-natural-language-supported (1setOf naturalLanguage) 4.4.20 generated-natural-language-supported (1setOf naturalLanguage)
120 122
4.4.21 document-format-default (mimeMediaType).................121 4.4.21 document-format-default (mimeMediaType).................123
4.4.22 document-format-supported (1setOf mimeMediaType)........121 4.4.22 document-format-supported (1setOf mimeMediaType)........123
4.4.23 printer-is-accepting-jobs (boolean).....................121 4.4.23 printer-is-accepting-jobs (boolean).....................123
4.4.24 queued-job-count (integer(0:MAX)).......................121 4.4.24 queued-job-count (integer(0:MAX)).......................123
4.4.25 printer-message-from-operator (text(127))...............121 4.4.25 printer-message-from-operator (text(127))...............124
4.4.26 color-supported (boolean)...............................122 4.4.26 color-supported (boolean)...............................124
4.4.27 reference-uri-schemes-supported (1setOf uriScheme)......122 4.4.27 reference-uri-schemes-supported (1setOf uriScheme)......124
4.4.28 pdl-override-supported (type2 keyword)..................122 4.4.28 pdl-override-supported (type2 keyword)..................124
4.4.29 printer-up-time (integer(1:MAX))........................122 4.4.29 printer-up-time (integer(1:MAX))........................125
4.4.30 printer-current-time (dateTime).........................123 4.4.30 printer-current-time (dateTime).........................125
4.4.31 multiple-operation-time-out (integer(1:MAX))............123 4.4.31 multiple-operation-time-out (integer(1:MAX))............126
4.4.32 compression-supported (1setOf type3 keyword)............124 4.4.32 compression-supported (1setOf type3 keyword)............126
4.4.33 job-k-octets-supported (rangeOfInteger(0:MAX))..........124 4.4.33 job-k-octets-supported (rangeOfInteger(0:MAX))..........126
4.4.34 job-impressions-supported (rangeOfInteger(0:MAX)).......124 4.4.34 job-impressions-supported (rangeOfInteger(0:MAX)).......126
4.4.35 job-media-sheets-supported (rangeOfInteger(0:MAX))......124 4.4.35 job-media-sheets-supported (rangeOfInteger(0:MAX))......127
4.4.36 pages-per-minute (integer(0:MAX)).......................125 4.4.36 pages-per-minute (integer(0:MAX)).......................127
4.4.37 pages-per-minute-color (integer(0:MAX)).................125 4.4.37 pages-per-minute-color (integer(0:MAX)).................127
5. Conformance....................................................125 5. Conformance....................................................128
5.1 Client Conformance Requirements.............................126 5.1 Client Conformance Requirements.............................128
5.2 IPP Object Conformance Requirements.........................127 5.2 IPP Object Conformance Requirements.........................129
5.2.1 Objects.................................................127 5.2.1 Objects.................................................129
5.2.2 Operations..............................................127 5.2.2 Operations..............................................129
5.2.3 IPP Object Attributes...................................128 5.2.3 IPP Object Attributes...................................130
5.2.4 Versions................................................128 5.2.4 Versions................................................130
5.2.5 Extensions..............................................129 5.2.5 Extensions..............................................131
5.2.6 Attribute Syntaxes......................................129 5.2.6 Attribute Syntaxes......................................131
5.2.7 Security ...............................................129 5.2.7 Security................................................132
5.3 Charset and Natural Language Requirements...................130 5.3 Charset and Natural Language Requirements...................132
6. IANA Considerations (registered and private extensions)........130 6. IANA Considerations............................................132
6.1 Typed 'keyword' and 'enum' Extensions.......................131 6.1 Typed 'keyword' and 'enum' Extensions.......................133
6.2 Attribute Extensibility.....................................133 6.2 Attribute Extensibility.....................................135
6.3 Attribute Syntax Extensibility..............................133 6.3 Attribute Syntax Extensibility..............................135
6.4 Operation Extensibility.....................................133 6.4 Operation Extensibility.....................................136
6.5 Attribute Groups............................................134 6.5 Attribute Group Extensibility...............................136
6.6 Status Code Extensibility...................................134 6.6 Status Code Extensibility...................................137
6.7 Registration of MIME types/sub-types for document-formats...135 6.7 Out-of-band Attribute Value Extensibility...................137
6.8 Registration of charsets for use in 'charset' attribute values135 6.8 Registration of MIME types/sub-types for document-formats...138
6.9 Registration of charsets for use in 'charset' attribute values138
7. Internationalization Considerations............................135 7. Internationalization Considerations............................138
8. Security Considerations........................................139 8. Security Considerations........................................142
8.1 Security Scenarios..........................................140 8.1 Security Scenarios..........................................143
8.1.1 Client and Server in the Same Security Domain...........140 8.1.1 Client and Server in the Same Security Domain...........143
8.1.2 Client and Server in Different Security Domains.........140 8.1.2 Client and Server in Different Security Domains.........143
8.1.3 Print by Reference......................................140 8.1.3 Print by Reference......................................143
8.2 URIs in Operation, Job, and Printer attributes..............140 8.2 URIs in Operation, Job, and Printer attributes..............143
8.3 URIs for each authentication mechanisms.....................141
8.4 Restricted Queries..........................................142
8.5 Operations performed by operators and system administrators.142
8.6 Queries on jobs submitted using non-IPP protocols...........142
Expires December 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
8.3 URIs for each authentication mechanisms.....................144
8.4 Restricted Queries..........................................145
8.5 Operations performed by operators and system administrators.145
8.6 Queries on jobs submitted using non-IPP protocols...........145
9. References.....................................................143 9. References.....................................................146
10.Author's Address..............................................146 10.Author's Address..............................................149
11.Formats for IPP Registration Proposals........................149 11.Formats for IPP Registration Proposals........................153
11.1Type2 keyword attribute values registration.................149 11.1Type2 keyword attribute values registration.................153
11.2Type3 keyword attribute values registration.................149 11.2Type3 keyword attribute values registration.................153
11.3Type2 enum attribute values registration....................149 11.3Type2 enum attribute values registration....................153
11.4Type3 enum attribute values registration....................150 11.4Type3 enum attribute values registration....................154
11.5Attribute registration......................................150 11.5Attribute registration......................................154
11.6Attribute Syntax registration...............................151 11.6Attribute Syntax registration...............................155
11.7Operation registration......................................151 11.7Operation registration......................................155
11.8Attribute Group registration................................151 11.8Attribute Group registration................................155
11.9Status code registration....................................152 11.9Status code registration....................................156
11.10.......................Out-of-band Attribute Value registration
156
12.APPENDIX A: Terminology.......................................152 12.APPENDIX A: Terminology.......................................156
12.1Conformance Terminology.....................................152 12.1Conformance Terminology.....................................156
12.1.1 NEED NOT................................................152 12.1.1 NEED NOT................................................157
12.2Model Terminology...........................................152 12.2Model Terminology...........................................157
12.2.1 Keyword.................................................152 12.2.1 Keyword.................................................157
12.2.2 Attributes..............................................152 12.2.2 Attributes..............................................157
12.2.2.1 Attribute Name.......................................153 12.2.2.1 Attribute Name.......................................157
12.2.2.2 Attribute Group Name.................................153 12.2.2.2 Attribute Group Name.................................157
12.2.2.3 Attribute Value......................................153 12.2.2.3 Attribute Value......................................157
12.2.2.4 Attribute Syntax.....................................153 12.2.2.4 Attribute Syntax.....................................158
12.2.3 Supports................................................153 12.2.3 Supports................................................158
12.2.4 print-stream page.......................................155 12.2.4 print-stream page.......................................160
12.2.5 impression..............................................155 12.2.5 impression..............................................160
13.APPENDIX B: Status Codes and Suggested Status Code Messages..155 13.APPENDIX B: Status Codes and Suggested Status Code Messages..160
13.1Status Codes................................................156 13.1Status Codes................................................161
13.1.1 Informational...........................................157 13.1.1 Informational...........................................161
13.1.2 Successful Status Codes.................................157 13.1.2 Successful Status Codes.................................161
13.1.2.1 successful-ok (0x0000)...............................157 13.1.2.1 successful-ok (0x0000)...............................161
13.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001)157 13.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001)162
13.1.2.3 successful-ok-conflicting-attributes (0x0002)........157 13.1.2.3 successful-ok-conflicting-attributes (0x0002)........162
13.1.3 Redirection Status Codes................................158 13.1.3 Redirection Status Codes................................162
13.1.4 Client Error Status Codes...............................158 13.1.4 Client Error Status Codes...............................162
13.1.4.1 client-error-bad-request (0x0400)....................158 13.1.4.1 client-error-bad-request (0x0400)....................162
13.1.4.2 client-error-forbidden (0x0401)......................158 13.1.4.2 client-error-forbidden (0x0401)......................163
13.1.4.3 client-error-not-authenticated (0x0402)..............158 13.1.4.3 client-error-not-authenticated (0x0402)..............163
13.1.4.4 client-error-not-authorized (0x0403).................158 13.1.4.4 client-error-not-authorized (0x0403).................163
13.1.4.5 client-error-not-possible (0x0404)...................159 13.1.4.5 client-error-not-possible (0x0404)...................163
13.1.4.6 client-error-timeout (0x0405)........................159 13.1.4.6 client-error-timeout (0x0405)........................163
13.1.4.7 client-error-not-found (0x0406)......................159 13.1.4.7 client-error-not-found (0x0406)......................164
13.1.4.8 client-error-gone (0x0407)...........................159 13.1.4.8 client-error-gone (0x0407)...........................164
13.1.4.9 client-error-request-entity-too-large (0x0408).......160
13.1.4.10client-error-request-value-too-long (0x0409).........160
13.1.4.11client-error-document-format-not-supported (0x040A)..160
13.1.4.12client-error-attributes-or-values-not-supported (0x040B)160
13.1.4.13client-error-uri-scheme-not-supported (0x040C).......161
13.1.4.14client-error-charset-not-supported (0x040D)..........161
13.1.4.15client-error-conflicting-attributes (0x040E).........161
13.1.4.16client-error-compression-not-supported (0x040F) .....161
Expires December 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
13.1.4.17client-error-compression-error (0x0410) ............162 Expires August 23, 2000
13.1.4.18client-error-document-format-error (0x0411) ........162 13.1.4.9 client-error-request-entity-too-large (0x0408).......164
13.1.4.19client-error-document-access-error (0x0412) ........162 13.1.4.10client-error-request-value-too-long (0x0409).........164
13.1.5 Server Error Status Codes...............................162 13.1.4.11client-error-document-format-not-supported (0x040A)..165
13.1.5.1 server-error-internal-error (0x0500).................162 13.1.4.12client-error-attributes-or-values-not-supported (0x040B)165
13.1.5.2 server-error-operation-not-supported (0x0501)........163 13.1.4.13client-error-uri-scheme-not-supported (0x040C).......166
13.1.5.3 server-error-service-unavailable (0x0502)............163 13.1.4.14client-error-charset-not-supported (0x040D)..........166
13.1.5.4 server-error-version-not-supported (0x0503)..........163 13.1.4.15client-error-conflicting-attributes (0x040E).........166
13.1.5.5 server-error-device-error (0x0504)...................163 13.1.4.16client-error-compression-not-supported (0x040F)......166
13.1.5.6 server-error-temporary-error (0x0505)................164 13.1.4.17client-error-compression-error (0x0410)..............166
13.1.5.7 server-error-not-accepting-jobs (0x0506).............164 13.1.4.18client-error-document-format-error (0x0411)..........166
13.1.5.8 server-error-busy (0x0507)...........................164 13.1.4.19client-error-document-access-error (0x0412)..........167
13.1.5.9 server-error-job-canceled (0x0508)...................164 13.1.5 Server Error Status Codes...............................167
13.1.5.1 server-error-internal-error (0x0500).................167
13.1.5.2 server-error-operation-not-supported (0x0501)........167
13.1.5.3 server-error-service-unavailable (0x0502)............167
13.1.5.4 server-error-version-not-supported (0x0503)..........168
13.1.5.5 server-error-device-error (0x0504)...................168
13.1.5.6 server-error-temporary-error (0x0505)................168
13.1.5.7 server-error-not-accepting-jobs (0x0506).............169
13.1.5.8 server-error-busy (0x0507)...........................169
13.1.5.9 server-error-job-canceled (0x0508)...................169
13.1.5.10server-error-multiple-document-jobs-not-supported (0x0509) 13.1.5.10server-error-multiple-document-jobs-not-supported (0x0509)
164 169
13.2Status Codes for IPP Operations.............................165 13.2Status Codes for IPP Operations.............................170
14.APPENDIX C: "media" keyword values...........................167 14.APPENDIX C: "media" keyword values...........................172
15.APPENDIX D: Processing IPP Attributes.........................171 15.APPENDIX D: Processing IPP Attributes.........................194
15.1Fidelity....................................................171 15.1Fidelity....................................................194
15.2Page Description Language (PDL) Override....................172 15.2Page Description Language (PDL) Override....................195
15.3Using Job Template Attributes During Document Processing....174 15.3Using Job Template Attributes During Document Processing....197
16.APPENDIX E: Generic Directory Schema..........................175 16.APPENDIX E: Generic Directory Schema..........................198
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" Documents..............................................178 Semantics" Documents..............................................201
18.Full Copyright Statement......................................184 18.Full Copyright Statement......................................207
Expires December 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 primarily on end user
functionality. This document is just one of a suite of documents that functionality with a few administrative operations included. This
fully define IPP. The full set of IPP documents includes: document is just one of a suite of documents that 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]
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]
Anyone reading these documents for the first time is strongly encouraged Anyone reading these documents for the first time is strongly encouraged
skipping to change at page 9, line 59 skipping to change at page 9, line 59
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 15 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 16 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
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 December 23, 1999
- Section 17 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" document [RFC2566] to make from the IPP/1.0 "Model and Semantics" document [RFC2566] to make
this IPP/1.1 document. this IPP/1.1 document.
- Section 18 is the full copyright notice. - 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
skipping to change at page 11, line 5 skipping to change at page 10, line 50
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 4). 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 December 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
+--------------+ +--------------+
| 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 12, line 5 skipping to change at page 11, line 57
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 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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.
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
skipping to change at page 13, line 5 skipping to change at page 12, line 58
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. - "RECOMMENDED": each object SHOULD support the attribute.
- "OPTIONAL": each object MAY support the attribute. - "OPTIONAL": each object MAY support the attribute.
Some definitions of attribute values indicate that an object MUST or Some definitions of attribute values indicate that an object MUST or
SHOULD support the value; otherwise, support of the value is OPTIONAL. SHOULD support the value; otherwise, support of the value is OPTIONAL.
Expires December 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
However, if an implementation supports an attribute, it MUST support at However, if an implementation supports an attribute, it MUST support at
least one of the possible values for that attribute. 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
skipping to change at page 14, line 5 skipping to change at page 13, line 59
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 requests 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 or by the "Print" menu item in an application or
Expires December 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
2. the print server component that sends IPP requests to either an 2. the print server component that sends IPP requests to either an
output device or another "downstream" print server. output device or another "downstream" print server.
The term "IPP Printer" is a network entity that accepts IPP operation The term "IPP Printer" is a network entity that accepts IPP operation
requests and returns IPP operation responses. As such, an IPP object requests and returns IPP operation responses. As such, an IPP object
MAY be: MAY be:
1. an (embedded) device component that accepts IPP requests and 1. an (embedded) device component that accepts IPP requests and
controls the device or controls the device or
2. a component of a print server that accepts IPP requests (where the 2. a component of a print server that accepts IPP requests (where the
print server controls one or more networked devices using IPP or print server controls one or more networked devices using IPP or
other protocols). other protocols).
Expires December 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 15, line 53
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 December 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 16, line 59
(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 December 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
2.4 Object Identity 2.4 Object Identity
All Printer and Job objects are identified by a Uniform Resource All Printer and Job objects are identified by a Uniform Resource
Identifier (URI) [RFC2396] so that they can be persistently and Identifier (URI) [RFC2396] so that they can be persistently and
unambiguously referenced. The notion of a URI is a useful concept, unambiguously referenced. The notion of a URI is a useful concept,
however, until the notion of URI is more stable (i.e., defined more however, until the notion of URI is more stable (i.e., defined more
completely and deployed more widely), it is expected that the URIs used completely and deployed more widely), it is expected that the URIs used
for IPP objects will actually be URLs [RFC2396]. Since every URL is a for IPP objects will actually be URLs [RFC2396]. Since every URL is a
specialized form of a URI, even though the more generic term URI is used specialized form of a URI, even though the more generic term URI is used
skipping to change at page 17, line 58 skipping to change at page 17, line 57
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. 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.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
IPP/1.1 does not specify how the client obtains the client supplied URI, IPP/1.1 does not specify how the client obtains the client supplied URI,
but it is RECOMMENDED that a Printer object be registered as an entry in but it is RECOMMENDED that a Printer object be registered as an entry in
Expires December 23, 1999
a directory service. End-users and programs can then interrogate the a directory service. End-users and programs can then interrogate the
directory searching for Printers. Section 16 defines a generic schema directory searching for Printers. Section 16 defines a generic schema
for Printer object entries in the directory service and describes how for Printer object entries in the directory service and describes how
the entry acts as a bridge to the actual IPP Printer object. The entry the entry acts as a bridge to the actual IPP Printer object. The entry
in the directory that represents the IPP Printer object includes the in the directory that represents the IPP Printer object includes the
possibly many URIs for that Printer object as values in one its possibly many URIs for that Printer object as values in one its
attributes. 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
skipping to change at page 18, line 58 skipping to change at page 18, line 59
this paragraph. In other implementations, the Printer object might be a this paragraph. In other implementations, the Printer object might be a
central clearing-house for validating all Job object creation requests, central clearing-house for validating all Job object creation requests,
but the Job object itself might be created in some environment that is but the Job object itself might be created in some environment that is
remote from the Printer object. In this case, the Job object's URI may 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
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 23, 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
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
skipping to change at page 19, line 56 skipping to change at page 19, line 58
object. This linkage is necessary to determine the languages, object. This linkage is necessary to determine the languages,
charsets, and operations which are supported on that Job (the basis charsets, and operations which are supported on that Job (the basis
for such support comes from the creating Printer object). for such support comes from the creating Printer object).
- 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
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 23, 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
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
skipping to change at page 20, line 55 skipping to change at page 20, line 56
Cancel-Job (section 3.3.3) Cancel-Job (section 3.3.3)
Get-Job-Attributes (section 3.3.4) Get-Job-Attributes (section 3.3.4)
Hold-Job (section 3.3.5) Hold-Job (section 3.3.5)
Release-Job (section 3.3.6) Release-Job (section 3.3.6)
Restart-Job (section 3.3.7) Restart-Job (section 3.3.7)
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.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 23, 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:
- 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,
and and
- the attributes that are REQUIRED for that type of response. - the attributes that are REQUIRED for that type of response.
The "Encoding and Transport document [IPP-PRO] defines special rules for The "Encoding and Transport" document [IPP-PRO] defines special rules
the encoding of these parameters. All other operation elements are for the encoding of these parameters. All other operation elements are
represented using the more generic encoding rules for attributes and represented using the more generic encoding rules for attributes and
groups of attributes. groups of attributes.
3.1.2 Operation IDs and Request IDs 3.1.2 Operation IDs and Request IDs
Each IPP operation request includes an identifying "operation-id" value. Each IPP operation request includes an identifying "operation-id" value.
Valid values are defined in the "operations-supported" Printer attribute Valid values are defined in the "operations-supported" Printer attribute
section (see section 4.4.15). The client specifies which operation is section (see section 4.4.15). The client specifies which operation is
being requested by supplying the correct "operation-id" value. being requested by supplying the correct "operation-id" value.
skipping to change at page 21, line 53 skipping to change at page 21, line 58
response with the correct outstanding request, even if the "request-id" response with the correct outstanding request, even if the "request-id"
is out of range. If the request is terminated before the complete is out of range. If the request is terminated before the complete
"request-id" is received, the IPP object rejects the request and returns "request-id" is received, the IPP object rejects the request and returns
a response with a "request-id" of 0. a response with a "request-id" of 0.
Note: In some cases, the transport protocol underneath IPP might be a Note: In some cases, the transport protocol underneath IPP might be a
connection oriented protocol that would make it impossible for a client connection oriented protocol that would make it impossible for a client
to receive responses in any order other than the order in which the to receive responses in any order other than the order in which the
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.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 23, 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
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
skipping to change at page 22, line 51 skipping to change at page 22, line 59
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. attributes that the client supplied in the request.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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.
The attributes within a group MUST be unique; if an attribute with the
same name occurs more than once, the group is mal-formed. Clients MUST
NOT submit such malformed requests and Printers MUST NOT return such
malformed responses. If such a malformed request is submitted to a
Printer, the Printer MUST either (1) reject the request with the
'client-error-bad-request' status code (see section 13.1.4.1) or (2)
process the request normally after selecting only one of the attribute
instances, depending on implementation. Which attribute is selected
when there are duplicate attributes depends on implementation. The IPP
Printer MUST NOT use the values from more than one such duplicate
attribute instance.
Each attribute definition includes the attribute's name followed by the Each attribute definition includes the attribute's name followed by the
name of its attribute syntax(es) in parenthesizes. In addition, each name of its attribute syntax(es) in parenthesizes. In addition, each
Expires December 23, 1999
'integer' attribute is followed by the allowed range in parentheses, 'integer' attribute is followed by the allowed range in parentheses,
(m:n), for values of that attribute. Each 'text' or 'name' attribute is (m:n), for values of that attribute. Each 'text' or 'name' attribute is
followed by the maximum size in octets in parentheses, (size), for followed by the maximum size in octets in parentheses, (size), for
values of that attribute. For more details on attribute syntax notation, values of that attribute. For more details on attribute syntax notation,
see the descriptions of these attributes syntaxes in section 4.1. 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
skipping to change at page 23, line 39 skipping to change at page 23, line 58
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
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
important. However, for these two attributes within the Operation important. However, for these two attributes within the Operation
Attributes group, the order is critical. The "attributes-charset" Attributes group, the order is critical. The "attributes-charset"
attribute MUST be the first attribute in the group and the "attributes- attribute MUST be the first attribute in the group and the "attributes-
natural-language" attribute MUST be the second attribute in the group. natural-language" attribute MUST be the second attribute in the group.
In other words, these attributes MUST be supplied in every IPP request In other words, these attributes MUST be supplied in every IPP request
and response, they MUST come first in the group, and MUST come in the and response, they MUST come first in the group, and MUST come in the
specified order. For job creation operations, the IPP Printer specified order. For job creation operations, the IPP Printer
implementation saves these two attributes with the new Job object as Job implementation saves these two attributes with the new Job object as Job
Description attributes. For the sake of brevity in this document, these Description attributes. For the sake of brevity in this document, these
operation attribute descriptions are not repeated with every operation operation attribute descriptions are not repeated with every operation
skipping to change at page 24, line 4 skipping to change at page 24, line 27
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 23, 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 definition of the 'text' and 'name' attribute and 4.1.2 for the definition of the 'text' and 'name' attribute
syntaxes. syntaxes.
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
skipping to change at page 24, line 38 skipping to change at page 24, line 59
with multiple IPP object implementations, a client may want to with multiple IPP object implementations, a client may want to
supply 'utf-8' in the "attributes-charset" operation attribute, supply 'utf-8' in the "attributes-charset" operation attribute,
even though the client is only passing and able to present a even though the client is only passing and able to present a
simpler charset, such as US-ASCII or ISO-8859-1. Then the client simpler charset, such as US-ASCII or ISO-8859-1. Then the client
will have to filter out (or charset convert) those characters that will have to filter out (or charset convert) those characters that
are returned in the response that it cannot present to its user. are returned in the response that it cannot present to its user.
On the other hand, if both the client and the IPP objects also On the other hand, if both the client and the IPP objects also
support a charset in common besides utf-8, the client may want to support a charset in common besides utf-8, the client may want to
use that charset in order to avoid charset conversion or data loss. use that charset in order to avoid charset conversion or data loss.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
See the 'charset' attribute syntax description in Section 4.1.7 for See the 'charset' attribute syntax description in Section 4.1.7 for
the syntax and semantic interpretation of the values of this the syntax and semantic interpretation of the values of this
attribute and for example values. attribute and for example values.
"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 client is supplying in any 'text' and 'name' attributes that the client is supplying in
this request. This attribute also identifies the natural language this request. This attribute also identifies the natural language
that the Printer object SHOULD use for all 'text' and 'name' that the Printer object SHOULD use for all 'text' and 'name'
attributes and status messages that the Printer object returns in attributes and status messages that the Printer object returns in
skipping to change at page 25, line 4 skipping to change at page 25, line 27
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 23, 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).
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
skipping to change at page 25, line 37 skipping to change at page 25, line 58
use the Natural Language Override mechanism (see sections 4.1.1.2 use the Natural Language Override mechanism (see sections 4.1.1.2
and 4.1.2.2) for each such attribute value supplied. The client and 4.1.2.2) for each such attribute value supplied. The client
MAY use the Natural Language Override mechanism redundantly, i.e., MAY use the Natural Language Override mechanism redundantly, i.e.,
use it even when the value is in the same natural language as the use it even when the value is in the same natural language as the
value supplied in the "attributes-natural-language" operation value supplied in the "attributes-natural-language" operation
attribute of the request. attribute of the request.
The IPP object MUST accept any natural language and any Natural The IPP object MUST accept any natural language and any Natural
Language Override, whether the IPP object supports that natural Language Override, whether the IPP object supports that natural
language or not (and independent of the value of the "ipp- language or not (and independent of the value of the "ipp-
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
attribute-fidelity" Operation attribute). That is the IPP object attribute-fidelity" Operation attribute). That is the IPP object
accepts all client supplied values no matter what the values are in accepts all client supplied values no matter what the values are in
the Printer object's "generated-natural-language-supported" the Printer object's "generated-natural-language-supported"
attribute. That attribute, "generated-natural-language-supported", attribute. That attribute, "generated-natural-language-supported",
only applies to generated messages, not client supplied messages. only applies to generated messages, not client supplied messages.
The IPP object MUST remember that natural language for all client- The IPP object MUST remember that natural language for all client-
supplied attributes, and when returning those attributes in supplied attributes, and when returning those attributes in
response to a query, the IPP object MUST indicate that natural response to a query, the IPP object MUST indicate that natural
language. language.
skipping to change at page 26, line 5 skipping to change at page 26, line 27
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 23, 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
Override mechanism. If supplied, the IPP object will use the value Override mechanism. If supplied, the IPP object will use the value
skipping to change at page 26, line 35 skipping to change at page 26, line 56
operation attribute of the response. operation attribute of the response.
An IPP object MUST NOT reject a request based on a supplied natural An IPP object MUST NOT reject a request based on a supplied natural
language in an "attributes-natural-language" Operation attribute or language in an "attributes-natural-language" Operation attribute or
in any attribute that uses the Natural Language Override. in any attribute that uses the Natural Language Override.
See the 'naturalLanguage' attribute syntax description in section See the 'naturalLanguage' attribute syntax description in section
4.1.8 for the syntax and semantic interpretation of the values of 4.1.8 for the syntax and semantic interpretation of the values of
this attribute and for example values. this attribute and for example values.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
Clients SHOULD NOT supply 'text' or 'name' attributes that use an Clients SHOULD NOT supply 'text' or 'name' attributes that use an
illegal combination of natural language and charset. For example, illegal combination of natural language and charset. For example,
suppose a Printer object supports charsets 'utf-8', 'iso-8859-1', and suppose a Printer object supports charsets 'utf-8', 'iso-8859-1', and
'iso-8859-7'. Suppose also, that it supports natural languages 'en' 'iso-8859-7'. Suppose also, that it supports natural languages 'en'
(English), 'fr' (French), and 'el' (Greek). Although the Printer object (English), 'fr' (French), and 'el' (Greek). Although the Printer object
supports the charset 'iso-8859-1' and natural language 'el', it probably supports the charset 'iso-8859-1' and natural language 'el', it probably
does not support the combination of Greek text strings using the 'iso- does not support the combination of Greek text strings using the 'iso-
8859-1' charset. The Printer object handles this apparent 8859-1' charset. The Printer object handles this apparent
incompatibility differently depending on the context in which it occurs: incompatibility differently depending on the context in which it occurs:
skipping to change at page 27, line 5 skipping to change at page 27, line 30
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 23, 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.
3.1.4.2 Response Operation Attributes 3.1.4.2 Response Operation Attributes
skipping to change at page 27, line 36 skipping to change at page 27, line 59
is not supported), the request would have been rejected. See is not supported), the request would have been rejected. See
"attributes-charset" described in Section 3.1.4.1 above. "attributes-charset" described in Section 3.1.4.1 above.
If the Printer object supports more than just the 'utf-8' charset, If the Printer object supports more than just the 'utf-8' charset,
the Printer object MUST be able to code convert between each of the the Printer object MUST be able to code convert between each of the
charsets supported on a highest fidelity possible basis in order to charsets supported on a highest fidelity possible basis in order to
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-
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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.
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
skipping to change at page 28, line 4 skipping to change at page 28, line 30
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 23, 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.
3.1.5 Operation Targets 3.1.5 Operation Targets
skipping to change at page 28, line 34 skipping to change at page 28, line 58
For Job operations, the operation is directed at either: For Job operations, the operation is directed at either:
- The Job object itself using the Job object's URI. In this case, - The Job object itself using the Job object's URI. In this case,
the client identifies the target object by supplying the correct the client identifies the target object by supplying the correct
URI in the "job-uri (uri)" operation attribute. URI in the "job-uri (uri)" operation attribute.
- The Printer object that created the Job object using both the - The Printer object that created the Job object using both the
Printer objects URI and the Job object's Job ID. Since the Printer Printer objects URI and the Job object's Job ID. Since the Printer
object that created the Job object generated the Job ID, it MUST be object that created the Job object generated the Job ID, it MUST be
able to correctly associate the client supplied Job ID with the able to correctly associate the client supplied Job ID with the
correct Job object. The client supplies the Printer object's URI correct Job object. The client supplies the Printer object's URI
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
in the "printer-uri (uri)" operation attribute and the Job object's in the "printer-uri (uri)" operation attribute and the Job object's
Job ID in the "job-id (integer(1:MAX))" operation attribute. Job ID in the "job-id (integer(1:MAX))" operation attribute.
If the operation is directed at the Job object directly using the Job If the operation is directed at the Job object directly using the Job
object's URI, the client MUST NOT include the redundant "job-id" object's URI, the client MUST NOT include the redundant "job-id"
operation attribute. operation attribute.
The operation target attributes are REQUIRED operation attributes that The operation target attributes are REQUIRED operation attributes that
MUST be included in every operation request. Like the charset and MUST be included in every operation request. Like the charset and
natural language attributes (see section 3.1.4), the operation target natural language attributes (see section 3.1.4), the operation target
skipping to change at page 29, line 4 skipping to change at page 29, line 31
(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 23, 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,
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.
skipping to change at page 29, line 31 skipping to change at page 29, line 55
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 [RFC2616] and defines a new default port number for of IPP onto HTTP/1.1 [RFC2616] and defines a new default port number for
using IPP over HTTP/1.1. using IPP over HTTP/1.1.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
3.1.6 Operation Response Status Codes and Status 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, and an OPTIONAL an OPTIONAL "status-message" operation attribute, and an OPTIONAL
"detailed-status-message" operation attribute. The Print-URI and Send- "detailed-status-message" operation attribute. The Print-URI and Send-
URI response MAY include an OPTIONAL "document-access-error" operation URI response MAY include an OPTIONAL "document-access-error" operation
attribute. attribute.
3.1.6.1 "status-code" (type2 enum) 3.1.6.1 "status-code" (type2 enum)
skipping to change at page 30, line 5 skipping to change at page 30, line 34
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 code values, and suggests a corresponding status message for each status code
for use by the client when the user's natural language is English. for use by the client when the user's natural language is English.
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 23, 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
skipping to change at page 30, line 31 skipping to change at page 30, line 58
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
section 3.1.7 on Unsupported Attributes. section 3.1.7 on Unsupported Attributes.
3.1.6.2 "status-message" (text(255)) 3.1.6.2 "status-message" (text(255))
The OPTIONAL "status-message" operation attribute provides a short The OPTIONAL "status-message" operation attribute provides a short
textual description of the status of the operation. The "status- textual description of the status of the operation. The "status-
message" attribute's syntax is "text(255)", so the maximum length is 255 message" attribute's syntax is "text(255)", so the maximum length is 255
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
octets (see section 4.1.1). The status message is intended for the octets (see section 4.1.1). The status message is intended for the
human end user. If a response does include a "status-message" human end user. If a response does include a "status-message"
attribute, an IPP client NEED NOT examine or display the messages, attribute, an IPP client NEED NOT examine or display the messages,
however it SHOULD do so in some implementation specific manner. The however it SHOULD do so in some implementation specific manner. The
"status-message" is especially useful for a later version of a Printer "status-message" is especially useful for a later version of a Printer
object to return as supplemental information for the human user to object to return as supplemental information for the human user to
accompany a status code that an earlier version of a client might not accompany a status code that an earlier version of a client might not
understand. understand.
If the Printer object supports the "status-message" operation attribute, If the Printer object supports the "status-message" operation attribute,
skipping to change at page 31, line 4 skipping to change at page 31, line 35
the natural language indicated by the value of the "attributes-natural- the natural language indicated by the value of the "attributes-natural-
language" in the client request if supported, otherwise the Printer language" in the client request if supported, otherwise the Printer
object uses the value in the Printer object's own "natural-language- object uses the value in the Printer object's own "natural-language-
configured" attribute. configured" attribute.
If the Printer object supports the "status-message" operation attribute, If the Printer object supports the "status-message" operation attribute,
it SHOULD use the REQUIRED 'utf-8' charset to return a status message it SHOULD use the REQUIRED 'utf-8' charset to return a status message
for the following error status codes (see section 13): 'client-error- for the following error status codes (see section 13): 'client-error-
bad-request', 'client-error-charset-not-supported', 'server-error- bad-request', 'client-error-charset-not-supported', 'server-error-
internal-error', 'server-error-operation-not-supported', and 'server- internal-error', 'server-error-operation-not-supported', and 'server-
Expires December 23, 1999
error-version-not-supported'. In this case, it MUST set the value of error-version-not-supported'. In this case, it MUST set the value of
the "attributes-charset" operation attribute to 'utf-8' in the error the "attributes-charset" operation attribute to 'utf-8' in the error
response. response.
3.1.6.3 "detailed-status-message" (text(MAX)) 3.1.6.3 "detailed-status-message" (text(MAX))
The OPTIONAL "detailed-status-message" operation attribute provides The OPTIONAL "detailed-status-message" operation attribute provides
additional more detailed technical and implementation-specific additional more detailed technical and implementation-specific
information about the operation. The "detailed-status-message" information about the operation. The "detailed-status-message"
attribute's syntax is "text(MAX)", so the maximum length is 1023 octets attribute's syntax is "text(MAX)", so the maximum length is 1023 octets
skipping to change at page 31, line 30 skipping to change at page 31, line 58
administrator or other experienced technical persons. Clients MUST NOT administrator or other experienced technical persons. Clients MUST NOT
attempt to parse the value of this attribute. See the "document-access- attempt to parse the value of this attribute. See the "document-access-
error" operation attribute (section 3.1.6.4) for additional errors that error" operation attribute (section 3.1.6.4) for additional errors that
a program can process. a program can process.
3.1.6.4 "document-access-error" (text(MAX)) 3.1.6.4 "document-access-error" (text(MAX))
This OPTIONAL operation attribute provides additional information about This OPTIONAL operation attribute provides additional information about
any document access errors encountered by the Printer before it returned 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) a response to the Print-URI (section 3.2.2) or Send-URI (section 3.3.1)
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
operation. For errors in the protocol identified by the URI scheme in operation. For errors in the protocol identified by the URI scheme in
the "document-uri" operation attribute, such as 'http:' or 'ftp:', the the "document-uri" operation attribute, such as 'http:' or 'ftp:', the
error code is returned in parentheses, followed by the URI. For error code is returned in parentheses, followed by the URI. For
example: example:
(404) http://ftp.pwg.org/pub/pwg/ipp/new_MOD/ipp-model-v11- (404) http://ftp.pwg.org/pub/pwg/ipp/new_MOD/ipp-model-v11-
990510.pdf 990510.pdf
Most Internet protocols use decimal error codes (unlike IPP), so the Most Internet protocols use decimal error codes (unlike IPP), so the
ASCII error code representation is in decimal. ASCII error code representation is in decimal.
skipping to change at page 32, line 5 skipping to change at page 32, line 35
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
Expires December 23, 1999
b. unsupported by the printer. See below for details on the three b. unsupported by the printer. See below for details on the three
categories .unsupported. attributes. categories .unsupported. attributes.
If the status code is one of those in the table in section 3.1.6.1, the
Unsupported Attributes group NEED NOT contain the unsupported parameter
or attribute indicated in that table.
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).
2. The Printer object does support the attribute, but does not support 2. The Printer object does support the attribute, but does not support
some or all of the particular attribute syntaxes or values supplied some or all of the particular attribute syntaxes or values supplied
by the client (i.e., the Printer object does not have those by the client (i.e., the Printer object does not have those
attribute syntaxes or values in its corresponding "xxx-supported" attribute syntaxes or values in its corresponding "xxx-supported"
attribute). attribute).
3. The Printer object does support the attributes and values supplied, 3. The Printer object does support the attributes and values supplied,
but the particular values are in conflict with one another, because but the particular values are in conflict with one another, because
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
they violate a constraint, such as not being able to staple they violate a constraint, such as not being able 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"
document [IPP-PRO]. Its value indicates no support for the attribute document [IPP-PRO]. Its value indicates no support for the attribute
itself (see the beginning of section 4.1). itself (see the beginning of section 4.1).
skipping to change at page 33, line 5 skipping to change at page 33, line 35
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 23, 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, client to identify which version of IPP it is interested in using,
i.e., the version whose conformance requirements the client may be i.e., the version whose conformance requirements the client may be
depending upon the Printer to meet. depending upon the Printer to meet.
skipping to change at page 33, line 28 skipping to change at page 33, line 56
the client, i.e., the major version field of the "version-number" the client, i.e., the major version field of the "version-number"
parameter does not match any of the values of the Printer's "ipp- parameter does not match any of the values of the Printer's "ipp-
versions-supported" (see section 4.4.14), the object MUST respond with a 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). If the 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, major version number is supported, but the minor version number is not,
the IPP object SHOULD accept and attempt to perform the request (or the IPP object SHOULD accept and attempt to perform the request (or
reject the request if the operation is not supported), else it rejects reject the request if the operation is not supported), else it rejects
the request and returns the 'server-error-version-not-supported' status the request and returns the 'server-error-version-not-supported' status
code. In all cases, the IPP object MUST return the "version-number" code. In all cases, the IPP object MUST return the "version-number"
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
that it supports that is closest to the version number supplied by the that it supports that is closest to the version number supplied by the
client in the request. 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, a 'server-error-version-not-supported' status code from an IPP object, a
client SHOULD try again with a different version number. A client MAY client SHOULD try again with a different version number. A client MAY
also determine the versions supported either from a directory that also determine the versions supported either from a directory that
conforms to Appendix E (see section 16) or by querying the Printer conforms to Appendix E (see section 16) or by querying the Printer
object's "ipp-versions-supported" attribute (see section 4.4.14) to object's "ipp-versions-supported" attribute (see section 4.4.14) to
determine which versions are supported. determine which versions are supported.
skipping to change at page 34, line 4 skipping to change at page 34, line 39
Changes to the major version number of the Model and Semantics document Changes to the major version number of the Model and Semantics document
indicate structural or syntactic changes that make it impossible for indicate structural or syntactic changes that make it impossible for
older version of IPP clients and Printer objects to correctly parse and older version of IPP clients and Printer objects to correctly parse and
correctly process the new or changed attributes, operations and correctly process the new or changed attributes, operations and
responses. If the major version number changes, the minor version responses. If the major version number changes, the minor version
numbers is set to zero. As an example, adding the REQUIRED "ipp- numbers is set to zero. As an example, adding the REQUIRED "ipp-
attribute-fidelity" attribute to version '1.1' (if it had not been part attribute-fidelity" attribute to version '1.1' (if it had not been part
of version '1.0'), would have required a change to the major version of version '1.0'), would have required a change to the major version
number, since an IPP/1.0 Printer would not have processed a request with number, since an IPP/1.0 Printer would not have processed a request with
the correct semantics that contained the "ipp-attribute-fidelity" the correct semantics that contained the "ipp-attribute-fidelity"
Expires December 23, 1999
attribute that it did not know about. Items that might affect the attribute that it did not know about. Items that might affect the
changing of the major version number include any changes to the Model changing of the major version number include any changes to the Model
and Semantics document (this document) or the "Encoding and Transport" and Semantics document (this document) or the "Encoding and Transport"
document [IPP-PRO] itself, such as: 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
all IPP objects, but which can be ignored if not understood. Items that all IPP objects, but which can be ignored if not understood. Items that
might affect the changing of the minor version number include any might affect the changing of the minor version number include any
changes to the model objects and attributes but not the encoding and changes to the model objects and attributes but not the encoding and
transport rules [IPP-PRO] (except adding attribute syntaxes). Examples transport rules [IPP-PRO] (except adding attribute syntaxes). Examples
of such changes are: of such changes are:
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
- grouping all extensions not included in a previous version into a - grouping all extensions not included in a previous version into a
new version new version
- adding new attribute values - adding new attribute values
- adding new object attributes - adding new object attributes
- adding OPTIONAL (for an IPP object to support) operation attributes - adding OPTIONAL (for an IPP object to support) operation attributes
(i.e., those attributes that an IPP object can ignore without (i.e., those attributes that an IPP object can ignore without
confusing clients) confusing clients)
- adding OPTIONAL (for an IPP object to support) operation attribute - adding OPTIONAL (for an IPP object to support) operation attribute
groups (i.e., those attributes that an IPP object can ignore groups (i.e., those attributes that an IPP object can ignore
without confusing clients) without confusing clients)
skipping to change at page 35, line 5 skipping to change at page 35, line 35
elements (attributes, error codes, tags, etc.) that are not carried elements (attributes, error codes, tags, etc.) that are not carried
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 IPP specification document), that version will specify which of a new IPP specification document), that version will specify which
previous versions MUST and which versions SHOULD be supported in previous versions MUST and which versions SHOULD be supported in
compliant implementations. compliant implementations.
Expires December 23, 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
Printer object by including the document data in the request Printer object by including the document data in the request
skipping to change at page 35, line 30 skipping to change at page 35, line 58
with only a single document (where the Printer object "pulls" the with only a single document (where the Printer object "pulls" the
document data instead of the client "pushing" the data to the document data instead of the client "pushing" the data to the
Printer object) uses the Print-URI operation. In this case, the Printer object) uses the Print-URI operation. In this case, the
client includes in the request only a URI reference to the document client includes in the request only a URI reference to the document
data (not the document data itself). data (not the document data itself).
- The Create-Job Request: A client that wants to submit a print job - The Create-Job Request: A client that wants to submit a print job
with multiple documents uses the Create-Job operation. This with multiple documents uses the Create-Job operation. This
operation is followed by an arbitrary number of Send-Document operation is followed by an arbitrary number of Send-Document
and/or Send-URI operations (each creating another document for the and/or Send-URI operations (each creating another document for the
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 document, the term "create request" is used to Throughout this model document, the term "create request" is used to
skipping to change at page 36, line 5 skipping to change at page 36, line 35
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). When the 'pending-held', or 'processing' state (see section 4.3.7). When the
Printer object begins processing the print job, the Job object's state Printer object begins processing the print job, the Job object's state
moves to 'processing'. This is known as job processing time. There are moves to 'processing'. This is known as job processing time. There are
validation checks that must be done at job submission time and others validation checks that must be done at job submission time and others
that must be performed at job processing time. 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 23, 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 36, line 28 skipping to change at page 36, line 57
At job submission time the Printer object NEED NOT perform the At job submission time the Printer object NEED NOT perform the
validation checks reserved for job processing time such as: validation checks reserved for job processing time such as:
1. Validating the document data 1. Validating the document data
2. Validating the actual contents of any client supplied URI (resolve 2. Validating the actual contents of any client supplied URI (resolve
the reference and follow the link to the document data) the reference and follow the link to the document data)
At job submission time, these additional job processing time validation At job submission time, these additional job processing time validation
checks are essentially useless, since they require actually parsing and checks are essentially useless, since they require actually parsing and
interpreting the document data, are not guaranteed to be 100% accurate, interpreting the document data, are not guaranteed to be 100% accurate,
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
and MUST be done, yet again, at job processing time. Also, in the case and MUST be done, yet again, at job processing time. Also, in the case
of a URI, checking for availability at job submission time does not of a URI, checking for availability at job submission time does not
guarantee availability at job processing time. In addition, at job guarantee availability at job processing time. In addition, at job
processing time, the Printer object might discover any of the following processing time, the Printer object might discover any of the following
conditions that were not detectable at job submission time: conditions that were not detectable at job submission time:
- runtime errors in the document data, - runtime errors in the document data,
- nested document data that is in an unsupported format, - nested document data that is in an unsupported format,
- the URI reference is no longer valid (i.e., the server hosting the - the URI reference is no longer valid (i.e., the server hosting the
document might be down), or document might be down), or
skipping to change at page 37, line 4 skipping to change at page 37, line 37
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. A Printer connection before receiving all bytes of the operation. A Printer
SHOULD indicate that it is temporarily unable to accept jobs by setting SHOULD indicate that it is temporarily unable to accept jobs by setting
the 'spool-space-full' value in its "printer-state-reasons" attribute the 'spool-space-full' value in its "printer-state-reasons" attribute
and removing the value when it can accept another job (see section and removing the value when it can accept another job (see section
4.4.12). 4.4.12).
When receiving a 'server-error-busy' status-code in an operation When receiving a 'server-error-busy' status-code in an operation
response, a client MUST be prepared for the Printer object to close the response, a client MUST be prepared for the Printer object to close the
Expires December 23, 1999
connection before the client has sent all of the data (especially for connection before the client has sent all of the data (especially for
the Print-Job operation). A client MUST be prepared to keep submitting a the Print-Job operation). A client MUST be prepared to keep submitting a
create request until the IPP Printer object accepts the create request. 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.
Note: Asynchronous notification of events is outside the scope of this Note: Asynchronous notification of events is outside the scope of this
IPP/1.1 document. IPP/1.1 document.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
3.2 Printer Operations 3.2 Printer Operations
All Printer operations are directed at Printer objects. A client MUST All Printer operations are directed at Printer objects. A client MUST
always supply the "printer-uri" operation attribute in order to identify always supply the "printer-uri" operation attribute in order to identify
the correct target of the operation. the correct target of the operation.
3.2.1 Print-Job Operation 3.2.1 Print-Job Operation
This REQUIRED operation allows a client to submit a print job with only This REQUIRED operation allows a client to submit a print job with only
one document and supply the document data (rather than just a reference one document and supply the document data (rather than just a reference
skipping to change at page 38, line 5 skipping to change at page 38, line 40
attributes described in sections 4.3.19 and 4.3.20. 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 December 23, 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
generates a name to use in the "job-name" attribute of the newly generates a name to use in the "job-name" attribute of the newly
created Job object (see Section 4.3.5). created Job object (see Section 4.3.5).
"ipp-attribute-fidelity" (boolean): "ipp-attribute-fidelity" (boolean):
The client OPTIONALLY supplies this attribute. The Printer object The client OPTIONALLY supplies this attribute. The Printer object
MUST support this attribute. The value 'true' indicates that total MUST support this attribute. The value 'true' indicates that total
fidelity to client supplied Job Template attributes and values is fidelity to client supplied Job Template attributes and values is
required, else the Printer object MUST reject the Print-Job required, else the Printer object MUST reject the Print-Job
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
request. The value 'false' indicates that a reasonable attempt to request. The value 'false' indicates that a reasonable attempt to
print the Job object is acceptable and the Printer object MUST print the Job object is acceptable and the Printer object MUST
accept the Print-job request. If not supplied, the Printer object accept the Print-Job request. If not supplied, the Printer object
assumes the value is 'false'. All Printer objects MUST support assumes the value is 'false'. All Printer objects MUST support
both types of job processing. See section 15 for a full both types of job processing. See section 15 for a full
description of "ipp-attribute-fidelity" and its relationship to description of "ipp-attribute-fidelity" and its relationship to
other attributes, especially the Printer object's "pdl-override- other attributes, especially the Printer object's "pdl-override-
supported" attribute. supported" attribute.
"document-name" (name(MAX)): "document-name" (name(MAX)):
The client OPTIONALLY supplies this attribute. The Printer object The client OPTIONALLY supplies this attribute. The Printer object
MUST support this attribute. It contains the client supplied MUST support this attribute. It contains the client supplied
document name. The document name MAY be different than the Job document name. The document name MAY be different than the Job
skipping to change at page 39, line 4 skipping to change at page 39, line 41
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-
Expires December 23, 1999
supported" attribute, the Printer object MUST reject the 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-
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
format" attribute, if supplied (see "document-format" format" attribute, if supplied (see "document-format"
operation attribute definition below). 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
skipping to change at page 40, line 4 skipping to change at page 40, line 42
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 23, 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. value to the job's "job-state-reasons" attribute.
"document-natural-language" (naturalLanguage): "document-natural-language" (naturalLanguage):
The client OPTIONALLY supplies this attribute. The Printer object 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
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
K octets being submitted (see section 4.3.17.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.
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
skipping to change at page 41, line 5 skipping to change at page 41, line 40
"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.17.2 for the complete semantics). section 4.3.17.2 for the complete semantics).
See last paragraph under "job-k-octets". See last paragraph under "job-k-octets".
Expires December 23, 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 of media sheets to be produced for this job (see section 4.3.17.3
for the complete semantics). for the complete semantics).
See last paragraph under "job-k-octets". See last paragraph under "job-k-octets".
Group 2: Job Template Attributes Group 2: Job Template Attributes
The client OPTIONALLY supplies a set of Job Template attributes as The client 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.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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.
In addition to the MANDATORY parameters required for every operation In addition to the MANDATORY parameters required for every 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:
skipping to change at page 42, line 4 skipping to change at page 42, line 41
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(255)) the response OPTIONALLY includes a "status-message" (text(255))
and/or a "detailed-status-message" (text(MAX)) operation attribute and/or a "detailed-status-message" (text(MAX)) operation attribute
as described in sections 13 and 3.1.6. If the client supplies as described in sections 13 and 3.1.6. If the client supplies
unsupported or conflicting Job Template attributes or values, the unsupported or conflicting Job Template attributes or values, the
Printer object MUST reject or accept the Print-Job request Printer object MUST reject or accept the Print-Job request
Expires December 23, 1999
depending on the whether the client supplied a 'true' or 'false' depending on the whether the client supplied a 'true' or 'false'
value for the "ipp-attribute-fidelity" operation attribute. See value for the "ipp-attribute-fidelity" operation attribute. See
the Implementer's Guide [IPP-IIG] for a complete description of the the Implementer's Guide [IPP-IIG] for a complete description of the
suggested steps for processing a create request. suggested steps for processing a create request.
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
group. The value of "ipp-attribute-fidelity" only affects whether group. The value of "ipp-attribute-fidelity" only affects whether
the Print-Job operation is accepted or rejected. If the job is the Print-Job operation is accepted or rejected. If the job is
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
accepted, the client may query the job using the Get-Job-Attributes accepted, the client may query the job using the Get-Job-Attributes
operation requesting the unsupported attributes that were returned operation requesting the unsupported attributes that were returned
in the create response to see which attributes were ignored (not in the create response to see which attributes were ignored (not
stored on the Job object) and which attributes were stored with stored on the Job object) and which attributes were stored with
other (substituted) values. other (substituted) values.
Group 3: Job Object Attributes Group 3: Job Object Attributes
"job-uri" (uri): "job-uri" (uri):
The Printer object MUST return the Job object's URI by returning The Printer object MUST return the Job object's URI by returning
skipping to change at page 43, line 5 skipping to change at page 43, line 42
"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 23, 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. state-reasons" attribute.
"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
"number-of-intervening-jobs" attribute. If the Printer object "number-of-intervening-jobs" attribute. If the Printer object
supports this attribute then it MUST be returned in the response. supports this attribute then it MUST be returned in the response.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
If this attribute is not returned in the response, the client can If this attribute is not returned in the response, the client can
assume that the "number-of-intervening-jobs" attribute is not assume that the "number-of-intervening-jobs" attribute is not
supported and will not be returned in a subsequent Job object supported and will not be returned in a subsequent Job object
query. query.
Note: Since any printer state information which affects a job's Note: Since any printer state information which affects a job's
state is reflected in the "job-state" and "job-state-reasons" state is reflected in the "job-state" and "job-state-reasons"
attributes, it is sufficient to return only these attributes and no attributes, it is sufficient to return only these attributes and no
specific printer status attributes. specific printer status attributes.
skipping to change at page 44, line 4 skipping to change at page 44, line 42
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. The Printer MAY also return a specific document access error code code. The Printer MAY also return a specific document access error code
Expires December 23, 1999
using the "document-access-error" operation attribute (see section using the "document-access-error" operation attribute (see section
3.1.6.4). 3.1.6.4).
If the Printer determines this document accessibility problem after 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 and MAY populate error' value to the job's "job-state-reasons" attribute and MAY populate
the job's "job-document-access-errors" Job Description attribute (see the job's "job-document-access-errors" Job Description attribute (see
section 4.3.11). See The Implementer's Guide [IPP-IIG] for suggested section 4.3.11). See The Implementer's Guide [IPP-IIG] for suggested
additional checks. additional checks.
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).
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
It is up to the IPP object to interpret the URI and subsequently "pull" It is up to the IPP object to interpret the URI and subsequently "pull"
the document from the source referenced by the URI string. the document from the source referenced by the URI string.
3.2.3 Validate-Job Operation 3.2.3 Validate-Job Operation
This REQUIRED operation is similar to the Print-Job operation (section This REQUIRED operation is similar to the Print-Job operation (section
3.2.1) except that a client supplies no document data and the Printer 3.2.1) except that a client supplies no document data and the Printer
allocates no resources (i.e., it does not create a new Job object). allocates no resources (i.e., it does not create a new Job object).
This operation is used only to verify capabilities of a printer object This operation is used only to verify capabilities of a printer object
against whatever attributes are supplied by the client in the Validate- against whatever attributes are supplied by the client in the Validate-
skipping to change at page 45, line 5 skipping to change at page 45, line 45
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 23, 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 (see "multiple-document-jobs-supported" Printer Description attribute (see
section 4.4.16) and indicate whether or not it supports multiple- section 4.4.16) and indicate whether or not it supports multiple-
document jobs. document jobs.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 (see section 4.2). 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-
skipping to change at page 46, line 4 skipping to change at page 46, line 47
- '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. 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 23, 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.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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:
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 47, line 4 skipping to change at page 47, line 51
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 23, 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
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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:
- 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",
skipping to change at page 48, line 5 skipping to change at page 48, line 51
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 23, 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(255)) the response OPTIONALLY includes a "status-message" (text(255))
and/or a "detailed-status-message" (text(MAX)) operation attribute and/or a "detailed-status-message" (text(MAX)) operation attribute
as described in sections 13 and 3.1.6. as described in sections 13 and 3.1.6.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 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
skipping to change at page 49, line 5 skipping to change at page 49, line 50
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 23, 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:
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 49, line 50 skipping to change at page 50, line 43
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
values: 'job-uri' and 'job-id'. values: 'job-uri' and 'job-id'.
"which-jobs" (keyword): "which-jobs" (type2 keyword):
The client OPTIONALLY supplies this attribute. The Printer object The client OPTIONALLY supplies this attribute. The Printer object
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 23, 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.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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'.
"my-jobs" (boolean): "my-jobs" (boolean):
skipping to change at page 51, line 5 skipping to change at page 51, line 53
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(255)) the response OPTIONALLY includes a "status-message" (text(255))
and/or a "detailed-status-message" (text(MAX)) operation attribute and/or a "detailed-status-message" (text(MAX)) operation attribute
as described in sections 13 and 3.1.6. 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.
Expires December 23, 1999
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.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 object does include unsupported attributes referenced the Printer object does include unsupported attributes referenced
in "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. implementation.
Groups 3 to N: Job Object Attributes Groups 3 to N: Job Object Attributes
skipping to change at page 52, line 5 skipping to change at page 52, line 55
Pause-Printer operation MAY also stop the Printer from processing the Pause-Printer operation MAY also stop the Printer from processing the
current job or jobs. Any job that is currently being printed is either current job or jobs. Any job that is currently being printed is either
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.
Expires December 23, 1999
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 will take appreciable implementation permits. If the implementation will take appreciable
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
time to stop, the IPP Printer adds the 'moving-to-paused' value to the time to stop, the IPP Printer adds the 'moving-to-paused' value to the
Printer object's "printer-state-reasons" attribute (see section 4.4.12). Printer object's "printer-state-reasons" attribute (see section 4.4.12).
When the device(s) have all stopped, the IPP Printer transitions the When the device(s) have all stopped, the IPP Printer transitions the
Printer object to the 'stopped' state, removes the 'moving-to-paused' Printer object to the 'stopped' state, removes the 'moving-to-paused'
value, if present, and adds the 'paused' value to the Printer object's value, if present, and adds the 'paused' value to the Printer object's
"printer-state-reasons" attribute. "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'
skipping to change at page 53, line 4 skipping to change at page 53, line 58
"printer-state-reasons" "printer-state-reasons"
attribute attribute
'processing' 'stopped' 'paused' OPTION 2: 'successful-ok'; 'processing' 'stopped' 'paused' OPTION 2: 'successful-ok';
all device output stopped 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
Expires December 23, 1999
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.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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.
skipping to change at page 54, line 5 skipping to change at page 54, line 57
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 MUST remove the 'paused' jobs on all its devices. The Printer object MUST remove the 'paused'
and 'moving-to-paused' values from the Printer object's "printer-state- and 'moving-to-paused' values from the Printer object's "printer-state-
reasons" attribute, if present. If there are no other reasons to keep a reasons" attribute, if present. If there are no other reasons to keep a
device paused (such as media-jam), the IPP Printer transitions itself to device paused (such as media-jam), the IPP Printer transitions itself to
the 'processing' or 'idle' states, depending on whether there are jobs the 'processing' or 'idle' states, depending on whether there are jobs
to be processed or not, respectively, and the device(s) resume to be processed or not, respectively, and the device(s) resume
processing jobs. processing jobs.
Expires December 23, 1999
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.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
The IPP Printer removes the 'printer-stopped' value from any job's "job- The IPP Printer removes the 'printer-stopped' value from any job's "job-
state-reasons" attributes contained in that Printer. state-reasons" attributes contained in that Printer.
The IPP Printer MUST accept the request in any state, transition the The IPP Printer MUST accept the request in any state, transition the
Printer object to the indicated new state as follows: Printer object to the indicated new state as follows:
Current New "printer- IPP Printer's response status code and Current New "printer- IPP Printer's response status code and
"printer- state" action: "printer- state" action:
state" state"
skipping to change at page 54, line 56 skipping to change at page 55, line 52
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.
Note: if an operator wants to cancel all jobs without clearing out the Note: if an operator wants to cancel all jobs without clearing out the
Job History, the operator uses the Cancel-Job operation on each job Job History, the operator uses the Cancel-Job operation on each job
instead of using the Purge-Job operation. instead of using the Purge-Jobs operation.
The Printer object MUST accept this operation in any state and The Printer object MUST accept this operation in any state and
transition the Printer object to the 'idle' state. transition the Printer object to the 'idle' state.
Expires December 23, 1999
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
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
(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.
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
skipping to change at page 56, line 4 skipping to change at page 56, line 55
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
Expires December 23, 1999
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:
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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), and clean up all resources associated with the Job. In 4.3.8), and clean up all resources associated with the Job. In
this case, if another send operation is finally received, the this case, if another send operation is finally received, the
Printer responds with an "client-error-not-possible" or "client- Printer responds with an "client-error-not-possible" or "client-
error-not-found" depending on whether or not the Job object is error-not-found" depending on whether or not the Job object is
still around when the send operation finally arrives. 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'),
skipping to change at page 57, line 5 skipping to change at page 57, line 55
Natural Language and Character Set: Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" The "attributes-charset" and "attributes-natural-language"
attributes as described in section 3.1.4.1. attributes as described in section 3.1.4.1.
Target: Target:
Either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX))or Either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX))or
(2) the "job-uri" (uri) operation attribute(s) which define the (2) the "job-uri" (uri) operation attribute(s) which define the
target for this operation as described in section 3.1.5. target for this operation as described in section 3.1.5.
Expires December 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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
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
skipping to change at page 57, line 53 skipping to change at page 58, line 52
Group 2: Document Content Group 2: Document Content
The client MUST supply the document data if the "last-document" The client MUST supply the document data if the "last-document"
flag is set to 'false'. However, since a client might not know flag is set to 'false'. However, since a client might not know
that the previous document sent with a Send-Document (or Send-URI) that the previous document sent with a Send-Document (or Send-URI)
operation was the last document (i.e., the "last-document" operation was the last document (i.e., the "last-document"
attribute was set to 'false'), it is legal to send a Send-Document attribute was set to 'false'), it is legal to send a Send-Document
request with no document data where the "last-document" flag is set request with no document data where the "last-document" flag is set
to 'true'. Such a request MUST NOT increment the value of the Job to 'true'. Such a request MUST NOT increment the value of the Job
object's "number-of-documents" attribute, since no real document object's "number-of-documents" attribute, since no real document
was added to the job. was added to the job. It is not an error for a client to submit a
job with no actual document data, i.e., only a single Create-Job
and Send-Document request with a "last-document" operation
attribute set to 'true' with no document data.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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:
Expires December 23, 1999
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(255)) the response OPTIONALLY includes a "status-message" (text(255))
and/or a "detailed-status-message" (text(MAX)) operation attribute and/or a "detailed-status-message" (text(MAX)) operation attribute
as described in sections 13 and 3.1.6. 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"
skipping to change at page 58, line 57 skipping to change at page 59, line 60
document as part of the operation or subsequently (see section 3.2.2). 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.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 23, 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-held' 'canceled' 'successful-ok'
'processing' 'canceled' 'successful-ok' 'processing' 'canceled' 'successful-ok'
'processing' 'processing' 'successful-ok' See Rule 1 'processing' 'processing' 'successful-ok' See Rule 1
'processing' 'processing' 'client-error-not-possible' 'processing' 'processing' 'client-error-not-possible'
See Rule 2 See Rule 2
'processing- 'canceled' 'successful-ok' 'processing- 'canceled' 'successful-ok'
skipping to change at page 59, line 55 skipping to change at page 60, line 59
Group 1: Operation Attributes Group 1: Operation Attributes
Natural Language and Character Set: Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" The "attributes-charset" and "attributes-natural-language"
attributes as described in section 3.1.4.1. attributes as described in section 3.1.4.1.
Target: Target:
Either (1) the "printer-uri" (uri) plus "job-id" Either (1) the "printer-uri" (uri) plus "job-id"
(integer(1:MAX))or (2) the "job-uri" (uri) operation attribute(s) (integer(1:MAX))or (2) the "job-uri" (uri) operation attribute(s)
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 23, 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 60, line 50 skipping to change at page 61, line 52
Once a successful response has been sent, the implementation guarantees Once a successful response has been sent, the implementation guarantees
that the Job will eventually end up in the 'canceled' state. Between the that the Job will eventually end up in the 'canceled' state. Between the
time of the Cancel-Job operation is accepted and when the job enters the time of the Cancel-Job operation is accepted and when the job enters the
'canceled' job-state (see section 4.3.7), the "job-state-reasons" 'canceled' job-state (see section 4.3.7), the "job-state-reasons"
attribute SHOULD contain the 'processing-to-stop-point' value which attribute SHOULD contain the 'processing-to-stop-point' value which
indicates to later queries that although the Job might still be indicates to later queries that although the Job might still be
'processing', it will eventually end up in the 'canceled' state, not the 'processing', it will eventually end up in the 'canceled' state, not the
'completed' state. 'completed' state.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 23, 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
skipping to change at page 61, line 54 skipping to change at page 62, line 60
Target: Target:
Either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX)) Either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX))
or (2) the "job-uri" (uri) operation attribute(s) which define the or (2) the "job-uri" (uri) operation attribute(s) which define the
target for this operation as described in section 3.1.5. target for this operation as described in section 3.1.5.
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.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
"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 23, 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(255)) the response OPTIONALLY includes a "status-message" (text(255))
skipping to change at page 62, line 49 skipping to change at page 63, line 54
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
attributes) for which the IPP object does not know the value, attributes) for which the IPP object does not know the value,
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
unless it would violate the security policy. See the description unless it would violate the security policy. See the description
of the "out-of-band" values in the beginning of Section 4.1. of the "out-of-band" values in the beginning of Section 4.1.
3.3.5 Hold-Job Operation 3.3.5 Hold-Job Operation
This OPTIONAL operation allows a client to hold a pending job in the This OPTIONAL operation allows a client to hold a pending job in the
queue so that it is not eligible for scheduling. If the Hold-Job queue so that it is not eligible for scheduling. If the Hold-Job
operation is supported, then the Release-Job operation MUST be operation is supported, then the Release-Job operation MUST be
supported, and vice-versa. The OPTIONAL "job-hold-until" operation supported, and vice-versa. The OPTIONAL "job-hold-until" operation
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 23, 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-state" IPP object's response status Current "job- New "job-state" IPP object's response status
state" code and action: state" code and action:
'pending' 'pending-held' 'successful-ok' See Rule 1 'pending' 'pending-held' 'successful-ok' See Rule 1
'pending' 'pending' 'successful-ok' See Rule 2 'pending' 'pending' 'successful-ok' See Rule 2
'pending-held' 'pending-held' 'successful-ok' See Rule 1 'pending-held' 'pending-held' 'successful-ok' See Rule 1
skipping to change at page 63, line 48 skipping to change at page 64, line 58
it will be added as an additional operation, rather than overloading the it will be added as an additional operation, rather than overloading the
Hold-Job operation. Then it is clear to clients by querying the Printer Hold-Job operation. Then it is clear to clients by querying the Printer
object's "operations-supported" (see Section 4.4.15) and the Job object's "operations-supported" (see Section 4.4.15) and the Job
object's "job-state" (see Section 4.3.7) attributes which operations are object's "job-state" (see Section 4.3.7) attributes which operations are
possible. possible.
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',
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
'client-error-not-authenticated', or 'client-error-not-authorized' as 'client-error-not-authenticated', or 'client-error-not-authorized' as
appropriate. appropriate.
3.3.5.1 Hold-Job Request 3.3.5.1 Hold-Job Request
The groups and operation attributes are the same as for a Cancel-Job The groups and operation attributes are the same as for a Cancel-Job
request (see section 3.3.3.1), with the addition of the following Group request (see section 3.3.3.1), with the addition of the following Group
1 Operation attribute: 1 Operation attribute:
"job-hold-until" (type3 keyword | name(MAX)): "job-hold-until" (type3 keyword | name(MAX)):
The client OPTIONALLY supplies this Operation attribute. The IPP The client OPTIONALLY supplies this Operation attribute. The IPP
object MUST support this operation attribute in a Hold-Job request, object MUST support this operation attribute in a Hold-Job request,
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 23, 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
skipping to change at page 64, line 45 skipping to change at page 65, line 59
object with a "job-hold-until" attribute with the 'indefinite' object with a "job-hold-until" attribute with the 'indefinite'
value (if IPP object supports the "job-hold-until" attribute) and value (if IPP object supports the "job-hold-until" attribute) and
hold the job indefinitely, until a client performs a Release-Job hold the job indefinitely, until a client performs a Release-Job
operation. operation.
3.3.5.2 Hold-Job Response 3.3.5.2 Hold-Job Response
The groups and attributes are the same as for a Cancel-Job response (see The groups and attributes are the same as for a Cancel-Job response (see
section 3.3.3.2). section 3.3.3.2).
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 removes its effect on the job. Hold-Job or Restart-Job operation and removes its effect on the job.
The IPP object MUST remove the 'job-hold-until-specified' value from the The IPP object MUST remove the 'job-hold-until-specified' value from the
job's "job-state-reasons" attribute, if present. See section 4.3.8. job's "job-state-reasons" attribute, if present. See section 4.3.8.
Expires December 23, 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-state" IPP object's response status Current "job- New "job-state" IPP object's response status
state" code and action: state" code and action:
'pending' 'pending' 'successful-ok' 'pending' 'pending' 'successful-ok'
No effect on the job. No effect on the job.
'pending-held' 'pending-held' 'successful-ok' See Rule 1 'pending-held' 'pending-held' 'successful-ok' See Rule 1
skipping to change at page 65, line 45 skipping to change at page 66, line 57
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.
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).
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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.2). 4.3.7.2).
The job is moved to the 'pending' job state and restarts at the The job is moved to the 'pending' or 'pending-held' job state and
beginning on the same IPP Printer object with the same attribute values. restarts at the beginning on the same IPP Printer object with the same
attribute values. If any of the documents in the job were passed by
reference (Print-URI or Send-URI), the Printer MUST re-fetch the data,
since the semantics of Restart-Job are to repeat all Job processing.
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 23, 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-state" IPP object's response status Current "job- New "job-state" IPP object's response status
state" code and action: state" code and action:
'pending' 'pending' 'client-error-not-possible' 'pending' 'pending' 'client-error-not-possible'
'pending-held' 'pending-held' 'client-error-not-possible' 'pending-held' 'pending-held' 'client-error-not-possible'
'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' 'pending' 'successful-ok' - job is started 'completed' 'pending' or 'successful-ok' - job is started
over. 'pending-held' over.
'completed' 'completed' 'client-error-not-possible' - 'completed' 'completed' 'client-error-not-possible' -
see Rule 1 see Rule 1
'canceled' 'pending' 'successful-ok' - job is started 'canceled' 'pending' or 'successful-ok' - job is started
over. 'pending-held' over.
'canceled' 'canceled' 'client-error-not-possible' - 'canceled' 'canceled' 'client-error-not-possible' -
see Rule 1 see Rule 1
'aborted' 'pending' 'successful-ok' - job is started 'aborted' 'pending' or 'successful-ok' - job is started
over. 'pending-held' over.
'aborted' 'aborted' 'client-error-not-possible' - 'aborted' 'aborted' 'client-error-not-possible' -
see Rule 1 see Rule 1
Rule 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.2. 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
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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
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.
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 23, 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
candidate for scheduling during the supplied named time period. candidate for scheduling during the supplied named time period.
skipping to change at page 67, line 40 skipping to change at page 68, line 60
status code, and restarts the job, i.e., ignores the "job-hold- status code, and restarts the job, i.e., ignores the "job-hold-
until" attribute. until" attribute.
If the client (1) supplies a value that specifies a time period If the client (1) supplies a value that specifies a time period
that has already started or the 'no-hold' value (meaning don't hold that has already started or the 'no-hold' value (meaning don't hold
the job) and (2) the IPP object supports the "job-hold-until" the job) and (2) the IPP object supports the "job-hold-until"
operation attribute and there are no other reasons to hold the job, operation attribute and there are no other reasons to hold the job,
the IPP object makes the job a candidate for processing immediately the IPP object makes the job a candidate for processing immediately
(see Section 4.2.2). (see Section 4.2.2).
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
If the client does not supply a "job-hold-until" operation If the client does not supply a "job-hold-until" operation
attribute in the request, the IPP object removes the "job-hold- attribute in the request, the IPP object removes the "job-hold-
until" attribute, if present, from the job. If there are no other until" attribute, if present, from the job. If there are no other
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 or Set-Job-Attributes Note: In the future an OPTIONAL Modify-Job or Set-Job-Attributes
operation may be specified that allows the client to modify other operation may be specified that allows the client to modify other
attributes before releasing the restarted job. attributes before releasing the restarted job.
Expires December 23, 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 documents: from other relevant documents:
- Document Printing Application (DPA) [ISO10175] - Document Printing Application (DPA) [ISO10175]
- RFC 1759 Printer MIB [RFC1759] - RFC 1759 Printer MIB [RFC1759]
skipping to change at page 68, line 42 skipping to change at page 69, line 55
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
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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" document [IPP-PRO]. Standard defined in the "Encoding and Transport" document [IPP-PRO]. Standard
"out-of-band" values are: "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 23, 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
skipping to change at page 69, line 41 skipping to change at page 70, line 56
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 document, all text attributes are defined using the 'text' In this document, all text attributes are defined using the 'text'
syntax. However, 'text' is used only for brevity; the formal syntax. However, 'text' is used only for brevity; the formal
interpretation of 'text' is: 'textWithoutLanguage | textWithLanguage'. interpretation of 'text' is: 'textWithoutLanguage | textWithLanguage'.
That is, for any attribute defined in this document using the 'text' That is, for any attribute defined in this document using the 'text'
attribute syntax, all IPP objects and clients MUST support both the attribute syntax, all IPP objects and clients MUST support both 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
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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.20, "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 23, 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 encoded in a maximum of 1023 (MAX) octets.
some charset. The Printer object MUST support the UTF-8 charset Text strings are encoded using the rules of some charset. The Printer
[RFC2279] and MAY support additional charsets to represent 'text' object MUST support the UTF-8 charset [RFC2279] and MAY support
values, provided that the charsets are registered with IANA [IANA-CS]. additional charsets to represent 'text' values, provided that the
See Section 4.1.7 for the definition of the 'charset' attribute syntax, charsets are registered with IANA [IANA-CS]. See Section 4.1.7 for the
including restricted semantics and examples of charsets. definition of the 'charset' attribute syntax, including restricted
semantics and examples of charsets.
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 encoded in a
'naturalLanguage' (see section 4.1.8) part that overrides the natural maximum of 1023 (MAX) octets plus an additional 'naturalLanguage' (see
language in force. The 'naturalLanguage' part explicitly identifies the section 4.1.8) part that overrides the natural language in force. The
natural language that applies to the text part of that value and that 'naturalLanguage' part explicitly identifies the natural language that
value alone. For any give text attribute, the 'textWithoutLanguage' applies to the text part of that value and that value alone. For any
part is limited to the maximum length defined for that attribute, but give text attribute, the 'textWithoutLanguage' part is limited to the
the 'naturalLanguage' part is always limited to 63 octets. Using the maximum length defined for that 'text' attribute, and the
'textWithLanguage' attribute syntax rather than the normal 'naturalLanguage' part is always limited to 63 (additional) octets.
Using the 'textWithLanguage' attribute syntax rather than the normal
'textWithoutLanguage' syntax is the so-called Natural Language Override 'textWithoutLanguage' syntax is the so-called Natural Language Override
mechanism and MUST be supported by all IPP objects and clients. mechanism and MUST be supported by all IPP objects and clients.
If the attribute is multi-valued (1setOf text), then the If the attribute is multi-valued (1setOf text), then the
'textWithLanguage' attribute syntax MUST be used to explicitly specify 'textWithLanguage' attribute syntax MUST be used to explicitly specify
each attribute value whose natural language needs to be overridden. each attribute value whose natural language needs to be overridden.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
Other values in a multi-valued 'text' attribute in a request or a Other values in a multi-valued 'text' attribute in a request or a
response revert to the natural language of the operation attribute. response revert to the natural language of the operation attribute.
In a create request, the Printer object MUST accept and store with the In a create request, the Printer object MUST accept and store with the
Job object any natural language in the "attributes-natural-language" Job object any natural language in the "attributes-natural-language"
operation attribute, whether the Printer object supports that natural operation attribute, whether the Printer object supports that natural
language or not. Furthermore, the Printer object MUST accept and store language or not. Furthermore, the Printer object MUST accept and store
any 'textWithLanguage' attribute value, whether the Printer object any 'textWithLanguage' attribute value, whether the Printer object
supports that natural language or not. These requirements are supports that natural language or not. These requirements are
independent of the value of the "ipp-attribute-fidelity" operation independent of the value of the "ipp-attribute-fidelity" operation
skipping to change at page 71, line 5 skipping to change at page 72, line 29
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 23, 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
skipping to change at page 71, line 33 skipping to change at page 72, line 55
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.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
4.1.2.1 'nameWithoutLanguage' 4.1.2.1 'nameWithoutLanguage'
The nameWithoutLanguage' syntax indicates a value that is sequence of The nameWithoutLanguage' syntax indicates a value that is sequence of
zero or more characters so that its encoded form does not exceed MAX zero or more characters encoded in a maximum of 255 (MAX) octets.
octets.
4.1.2.2 'nameWithLanguage' 4.1.2.2 'nameWithLanguage'
The 'nameWithLanguage' attribute syntax is a compound attribute syntax The 'nameWithLanguage' attribute syntax is a compound attribute syntax
consisting of two parts: a 'nameWithoutLanguage' part plus an additional consisting of two parts: a 'nameWithoutLanguage' part encoded in a
'naturalLanguage' (see section 4.1.8) part that overrides the natural maximum of 1023 (MAX) octets plus an additional 'naturalLanguage' (see
language in force. The 'naturalLanguage' part explicitly identifies the section 4.1.8) part that overrides the natural language in force. The
natural language that applies to that name value and that name value 'naturalLanguage' part explicitly identifies the natural language that
alone. applies to that name value and that name value alone. For any give text
attribute, the 'textWithoutLanguage' part is limited to the maximum
length defined for that 'text' attribute, and the 'naturalLanguage' part
is always limited to 63 (additional) octets. Using the
'textWithLanguage' attribute syntax rather than the normal
'textWithoutLanguage' syntax is the so-called Natural Language Override
mechanism and MUST be supported by all IPP objects and clients.
The 'nameWithLanguage' attribute syntax behaves the same as the The 'nameWithLanguage' attribute syntax behaves the same as the
'textWithLanguage' syntax. If a name is in a language that is different 'textWithLanguage' syntax. Using the 'textWithLanguage' attribute
syntax rather than the normal 'textWithoutLanguage' syntax is the so-
called Natural Language Override mechanism and MUST be supported by all
IPP objects and clients. If a name is in a language that is different
than the rest of the object or operation, then this 'nameWithLanguage' than the rest of the object or operation, then this 'nameWithLanguage'
syntax is used rather than the generic 'nameWithoutLanguage' syntax. syntax is used rather than the generic 'nameWithoutLanguage' syntax.
If the attribute is multi-valued (1setOf text), then the
'nameWithLanguage' attribute syntax MUST be used to explicitly specify
each attribute value whose natural language needs to be overridden.
Other values in a multi-valued 'name' attribute in a request or a
response revert to the natural language of the operation attribute.
In a create request, the Printer object MUST accept and store with the
Job object any natural language in the "attributes-natural-language"
operation attribute, whether the Printer object supports that natural
language or not. Furthermore, the Printer object MUST accept and store
any 'nameWithLanguage' attribute value, whether the Printer object
supports that natural language or not. These requirements are
independent of the value of the "ipp-attribute-fidelity" operation
attribute that the client MAY supply.
Example: If the client supplies the "attributes-natural-language" Example: If the client supplies the "attributes-natural-language"
operation attribute with the value: 'en' indicating English, but the operation attribute with the value: 'en' indicating English, but the
"printer-name" attribute is in German, the client MUST use the "printer-name" attribute is in German, the client MUST use the
'nameWithLanguage' attribute syntax as follows: 'nameWithLanguage' attribute syntax as follows:
'de': Natural Language Override indicating German 'de': Natural Language Override indicating German
'Farbdrucker': the Printer name in German 'Farbdrucker': the Printer name in German
Expires December 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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.
skipping to change at page 73, line 5 skipping to change at page 74, line 58
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 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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:
skipping to change at page 73, line 59 skipping to change at page 75, line 58
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
Expires December 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
1023 octets. Although most other IPP attribute syntax types allow for
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
skipping to change at page 74, line 57 skipping to change at page 76, line 57
The maximum length of 'charset' values used to represent IPP attribute The maximum length of 'charset' values used to represent IPP attribute
values is 63 octets. values is 63 octets.
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,
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 23, 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
Character Set (UCS) represented as two octets (UCS-2), with the
high order octet of each pair coming first (so-called Big Endian
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
skipping to change at page 76, line 4 skipping to change at page 77, line 55
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 23, 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]
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
'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 section 4.1.9.1 '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
skipping to change at page 77, line 4 skipping to change at page 78, line 56
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
intended (the auto-sensing algorithm might mistake one document format
Expires December 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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
skipping to change at page 78, line 5 skipping to change at page 79, line 54
The 'dateTime' attribute syntax is a standard, fixed length, 11 octet The 'dateTime' attribute syntax is a standard, fixed length, 11 octet
representation of the "DateAndTime" syntax as defined in RFC 2579 representation of the "DateAndTime" syntax as defined in RFC 2579
[RFC2579]. RFC 2579 also identifies an 8 octet representation of a [RFC2579]. RFC 2579 also identifies an 8 octet representation of a
"DateAndTime" value, but IPP objects MUST use the 11 octet "DateAndTime" value, but IPP objects MUST use the 11 octet
representation. A user interface will provide a mapping between representation. A user interface will provide a mapping between
protocol dateTime values and displayable user-friendly words or protocol dateTime values and displayable user-friendly words or
presentation values and phrases which are localized to the natural presentation values and phrases which are localized to the natural
language and date format of the user, including time zone. language and date format of the user, including time zone.
Expires December 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 78, line 59 skipping to change at page 80, line 58
attribute nor an "xxx-supported" attribute, and it MUST treat an attribute nor an "xxx-supported" attribute, and it MUST treat an
attribute "xxx" supplied by a client as unsupported. An attribute attribute "xxx" supplied by a client as unsupported. An attribute
"xxx" may be supported for some document formats and not supported "xxx" may be supported for some document formats and not supported
for other document formats. For example, it is expected that a for other document formats. For example, it is expected that a
Printer object would only support "orientation-requested" for some Printer object would only support "orientation-requested" for some
document formats (such as 'text/plain' or 'text/html') but not document formats (such as 'text/plain' or 'text/html') but not
others (such as 'application/postscript'). others (such as 'application/postscript').
2. "xxx" is OPTIONALLY supplied by the client in a create request. 2. "xxx" is OPTIONALLY supplied by the client in a create request.
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
Expires December 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
processing behavior for this Job. When "xxx" is not supplied, the
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.
Since an administrator MAY change the default value attribute after Since an administrator MAY change the default value attribute after
a Job object has been submitted but before it has been processed, a Job object has been submitted but before it has been processed,
the default value used by the Printer object at job processing time the default value used by the Printer object at job processing time
may be different that the default value in effect at job submission may be different that the default value in effect at job submission
time. time.
skipping to change at page 79, line 57 skipping to change at page 81, line 57
The "finishings" attribute is an example of a Job Template attribute. The "finishings" attribute is an example of a Job Template attribute.
It can take on a set of values such as 'staple', 'punch', and/or It can take on a set of values such as 'staple', 'punch', and/or
'cover'. A client can query the Printer object for the "finishings- 'cover'. A client can query the Printer object for the "finishings-
supported" attribute and the "finishings-default" attribute. The supported" attribute and the "finishings-default" attribute. The
supported attribute contains a set of supported values. The default supported attribute contains a set of supported values. The default
value attribute contains the finishing value(s) that will be used for a value attribute contains the finishing value(s) that will be used for a
new Job if the client does not supply a "finishings" attribute in the new Job if the client does not supply a "finishings" attribute in the
create request and the document data does not contain any corresponding create request and the document data does not contain any corresponding
finishing instructions. If the client does supply the "finishings" finishing instructions. If the client does supply the "finishings"
attribute in the create request, the IPP object validates the value or
values to make sure that they are a subset of the supported values
Expires December 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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
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 December 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
+===================+======================+======================+ +===================+======================+======================+
| 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 81, line 42 skipping to change at page 83, line 41
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| page-ranges | No | page-ranges- | | page-ranges | No | page-ranges- |
| (1setOf | | supported (boolean) | | (1setOf | | supported (boolean) |
| rangeOfInteger | | | | rangeOfInteger | | |
| (1:MAX)) | | | | (1:MAX)) | | |
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| sides | sides-default | sides-supported | | sides | sides-default | sides-supported |
| (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)| | (type2 keyword) | (type2 keyword) |(1setOf type2 keyword)|
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| number-up | number-up-default | number-up-supported | | number-up | number-up-default | number-up-supported |
| (integer (1:MAX)) | (integer (1:MAX)) |(1setOf integer | | (integer (1:MAX)) | (integer (1:MAX)) |(1setOf (integer |
| | | (1:MAX) | | | | | (1:MAX) | |
| | | rangeOfInteger | | | | rangeOfInteger |
| | | (1:MAX)) | | | | (1:MAX))) |
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| orientation- |orientation-requested-|orientation-requested-| | orientation- |orientation-requested-|orientation-requested-|
| requested | default | supported | | requested | default | supported |
| (type2 enum) | (type2 enum) | (1setOf type2 enum) | | (type2 enum) | (type2 enum) | (1setOf type2 enum) |
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| media | media-default | media-supported | | media | media-default | media-supported |
| (type3 keyword | | (type3 keyword | |(1setOf ( | | (type3 keyword | | (type3 keyword | |(1setOf ( |
| name) | name) |type3 keyword | name))| | name) | name) |type3 keyword | name))|
| | | | | | | |
| | | media-ready | | | | media-ready |
| | |(1setOf ( | | | |(1setOf ( |
| | |type3 keyword | name))| | | |type3 keyword | name))|
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
| printer-resolution| printer-resolution- | printer-resolution- |
Expires December 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
| printer-resolution| printer-resolution- | printer-resolution- |
| (resolution) | default | supported | | (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))
skipping to change at page 82, line 56 skipping to change at page 84, line 56
through n-1. through n-1.
For example, if n=1 the sequence of values is 50; if n=2, the sequence For example, if n=1 the sequence of values is 50; if n=2, the sequence
of values is: 25 and 75; if n = 3, the sequence of values 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
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 December 23, 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
'indefinite': - the job is held indefinitely, until a client 'indefinite': - the job is held indefinitely, until a client
skipping to change at page 83, line 54 skipping to change at page 85, line 56
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).
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 23, 1999
'none': no job sheet is printed 'none': no job sheet is printed
'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.
The effect of this attribute on jobs with multiple documents MAY be The effect of this attribute on jobs with multiple documents MAY be
affected by the "multiple-document-handling" job attribute (section affected by the "multiple-document-handling" job attribute (section
skipping to change at page 84, line 52 skipping to change at page 86, line 59
from processing the document data MUST be a(*), b(*), a(*), b(*), from processing the document data MUST be a(*), b(*), a(*), b(*),
..., and the Printer object MUST force each copy (a(*),b(*)) to ..., and the Printer object MUST force each copy (a(*),b(*)) to
start on a new media sheet. start on a new media sheet.
'separate-documents-uncollated-copies': If a Job object has multiple 'separate-documents-uncollated-copies': If a Job object has multiple
documents, say, the document data is called a and b, then the documents, say, the document data is called a and b, then the
result of processing the data in each document instance MUST be result of processing the data in each document instance MUST be
treated as a single sequence of media sheets for finishing treated as a single sequence of media sheets for finishing
operations; that is, the sets a(*) and b(*) would each be finished operations; that is, the sets a(*) and b(*) would each be finished
separately. The Printer object MUST force each copy of the result separately. The Printer object MUST force each copy of the result
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
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 23, 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
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
skipping to change at page 85, line 52 skipping to change at page 87, line 58
On many devices the supported number of collated copies will be limited On many devices the supported number of collated copies will be limited
by the number of physical output bins on the device, and may be by the number of physical output bins on the device, and may be
different from the number of uncollated copies which can be supported. different from the number of uncollated copies which can be supported.
Note: The effect of this attribute on jobs with multiple documents is Note: The effect of this attribute on jobs with multiple documents is
controlled by the "multiple-document-handling" job attribute (section controlled by the "multiple-document-handling" job attribute (section
4.2.4) and the relationship of this attribute and the other attributes 4.2.4) and the relationship of this attribute and the other attributes
that control document processing is described in section 15.3. that control document processing is described in section 15.3.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 23, 1999
Standard enum values are: Standard enum values are:
Value Symbolic Name and Description Value Symbolic Name and Description
'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
skipping to change at page 86, line 54 skipping to change at page 88, line 60
'21' 'staple-bottom-left': Bind the document(s) with one or more '21' 'staple-bottom-left': Bind the document(s) with one or more
staples in the bottom left corner. staples in the bottom left corner.
'22' 'staple-top-right': Bind the document(s) with one or more '22' 'staple-top-right': Bind the document(s) with one or more
staples in the top right corner. staples in the top right corner.
'23' 'staple-bottom-right': Bind the document(s) with one or more '23' 'staple-bottom-right': Bind the document(s) with one or more
staples in the bottom right corner. staples in the bottom right corner.
'24' 'edge-stitch-left': Bind the document(s) with one or more '24' 'edge-stitch-left': Bind the document(s) with one or more
staples (wire stitches) along the left edge. The exact staples (wire stitches) along the left 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.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
'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 23, 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.
'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).
skipping to change at page 87, line 48 skipping to change at page 89, line 55
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.
If the client supplies a value of 'none' along with any other If the client supplies a value of 'none' along with any other
combination of values, it is the same as if only that other combination combination of values, it is the same as if only that other combination
of values had been supplied (that is the 'none' value has no effect). of values had been supplied (that is the 'none' value has no effect).
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX)) 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX))
This attribute identifies the range(s) of print-stream pages that the This attribute identifies the range(s) of print-stream pages that the
Printer object uses for each copy of each document which are to be Printer object uses for each copy of each document which are to be
printed. Nothing is printed for any pages identified that do not exist printed. Nothing is printed for any pages identified that do not exist
in the document(s). Ranges MUST be in ascending order, for example: 1- in the document(s). Ranges MUST be in ascending order, for example: 1-
3, 5-7, 15-19 and MUST NOT overlap, so that a non-spooling Printer 3, 5-7, 15-19 and MUST NOT overlap, so that a non-spooling Printer
object can process the job in a single pass. If the ranges are not object can process the job in a single pass. If the ranges are not
ascending or are overlapping, the IPP object MUST reject the request and ascending or are overlapping, the IPP object MUST reject the request and
return the 'client-error-bad-request' status code. The attribute is return the 'client-error-bad-request' status code. The attribute is
associated with print-stream pages not application-numbered pages (for associated with print-stream pages not application-numbered pages (for
Expires December 23, 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-
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
skipping to change at page 88, line 48 skipping to change at page 90, line 58
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.8 sides (type2 keyword) 4.2.8 sides (type2 keyword)
This attribute specifies how print-stream pages are to be imposed upon This attribute specifies how print-stream pages are to be imposed upon
the sides of an instance of a selected medium, i.e., an impression. the sides of an instance of a selected medium, i.e., an impression.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
The standard keyword values are: The standard keyword values are:
'one-sided': imposes each consecutive print-stream page upon the same 'one-sided': imposes each consecutive print-stream page upon the same
side of consecutive media sheets. side of consecutive media sheets.
'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 23, 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
'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.
skipping to change at page 89, line 44 skipping to change at page 91, line 57
of translation, scaling, or rotation). of translation, scaling, or rotation).
'4' the Printer MUST place four print-stream pages on a single '4' the Printer MUST place four print-stream pages on a single
side of an instance of the selected medium (MAY add some side of an instance of the selected medium (MAY add some
sort of translation, scaling, or rotation). sort of translation, scaling, or rotation).
This attribute primarily controls the translation, scaling and rotation This attribute primarily controls the translation, scaling and rotation
of print-stream pages. of print-stream pages.
Note: The effect of this attribute on jobs with multiple documents is Note: The effect of this attribute on jobs with multiple documents is
controlled by the "multiple-document-handling" job attribute (section controlled by the "multiple-document-handling" job attribute (section
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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.10 orientation-requested (type2 enum) 4.2.10 orientation-requested (type2 enum)
This attribute indicates the desired orientation for printed print- This attribute indicates the desired orientation for printed print-
stream pages; it does not describe the orientation of the client- stream pages; it does not describe the orientation of the client-
supplied print-stream pages. supplied print-stream pages.
For some document formats (such as 'application/postscript'), the For some document formats (such as 'application/postscript'), the
desired orientation of the print-stream pages is specified within the desired orientation of the print-stream pages is specified within the
document data. This information is generated by a device driver prior document data. This information is generated by a device driver prior
to the submission of the print job. Other document formats (such as to the submission of the print job. Other document formats (such as
'text/plain') do not include the notion of desired orientation within 'text/plain') do not include the notion of desired orientation within
Expires December 23, 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
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
skipping to change at page 90, line 46 skipping to change at page 92, line 59
from the portrait orientation. Note: The 'reverse- from the portrait orientation. Note: The 'reverse-
landscape' value was added because some applications landscape' value was added because some applications
rotate landscape -90 degrees from portrait, rather than rotate landscape -90 degrees from portrait, rather than
+90 degrees. +90 degrees.
'6' 'reverse-portrait': The content will be imaged across the '6' 'reverse-portrait': The content will be imaged across the
short edge of the medium. Reverse-portrait is defined to short edge of the medium. Reverse-portrait is defined to
be a rotation of the print-stream page to be imaged by be a rotation of the print-stream page to be imaged by
180 degrees with respect to the medium from the portrait 180 degrees with respect to the medium from the portrait
orientation. Note: The 'reverse-portrait' value was orientation. Note: The 'reverse-portrait' value was
added for use with the "finishings" attribute in cases added for use with the "finishings" attribute in cases
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
where the opposite edge is desired for finishing a where the opposite edge is desired for finishing a
portrait document on simple finishing devices that have portrait document on simple finishing devices that have
only one finishing position. Thus a 'text'/plain' only one finishing position. Thus a 'text'/plain'
portrait document can be stapled "on the right" by a portrait document can be stapled "on the right" by a
simple finishing device as is common use with some middle simple finishing device as is common use with some middle
eastern languages such as Hebrew. eastern languages such as Hebrew.
Note: The effect of this attribute on jobs with multiple documents is Note: The effect of this attribute on jobs with multiple documents is
controlled by the "multiple-document-handling" job attribute (section controlled by the "multiple-document-handling" job attribute (section
4.2.4) and the relationship of this attribute and the other attributes 4.2.4) and the relationship of this attribute and the other attributes
that control document processing is described in section 15.3. that control document processing is described in section 15.3.
Expires December 23, 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
skipping to change at page 91, line 29 skipping to change at page 93, line 39
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.
Standard keyword values are (taken from ISO DPA and the Printer MIB) and Standard keyword values are taken from ISO DPA [ISO10175], the Printer
are listed in section 14. An administrator MAY define additional values MIB [RFC1759], and ASME-Y14.1M [ASME-Y14.1M] and are listed in section
using the 'name' or 'keyword' attribute syntax, depending on 14. An administrator MAY define additional values using the 'name' or
implementation. 'keyword' attribute syntax, depending on implementation.
There is also an additional Printer attribute named "media-ready" which There is also an additional Printer attribute named "media-ready" which
differs from "media-supported" in that legal values only include the differs from "media-supported" in that legal values only include the
subset of "media-supported" values that are physically loaded and ready subset of "media-supported" values that are physically loaded and ready
for printing with no operator intervention required. If an IPP object for printing with no operator intervention required. If an IPP object
supports "media-supported", it NEED NOT support "media-ready". supports "media-supported", it NEED NOT support "media-ready".
The relationship of this attribute and the other attributes that control The relationship of this attribute and the other attributes that control
document processing is described in section 15.3. document processing is described in section 15.3.
4.2.12 printer-resolution (resolution) 4.2.12 printer-resolution (resolution)
This attribute identifies the resolution that Printer uses for the Job. This attribute identifies the resolution that Printer uses for the Job.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
4.2.13 print-quality (type2 enum) 4.2.13 print-quality (type2 enum)
This attribute specifies the print quality that the Printer uses for the This attribute specifies the print quality that the Printer uses for the
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 23, 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 December 23, 1999 deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| Attribute | Syntax | REQUIRED? | | Attribute | Syntax | REQUIRED? |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-uri | uri | REQUIRED | | job-uri | uri | REQUIRED |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-id | integer(1:MAX) | REQUIRED | | job-id | integer(1:MAX) | REQUIRED |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-printer-uri | uri | REQUIRED | | job-printer-uri | uri | REQUIRED |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
skipping to change at page 93, line 28 skipping to change at page 95, line 27
| job-name | name (MAX) | REQUIRED | | job-name | name (MAX) | REQUIRED |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-originating-user-name | name (MAX) | REQUIRED | | job-originating-user-name | name (MAX) | REQUIRED |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-state | type1 enum | REQUIRED | | job-state | type1 enum | REQUIRED |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-state-reasons | 1setOf type2 keyword | REQUIRED | | job-state-reasons | 1setOf type2 keyword | REQUIRED |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-state-message | text (MAX) | | | job-state-message | text (MAX) | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-detailed-status- | 1setOf text (MAX) | |
| messages | | |
+----------------------------+----------------------+----------------+
| job-document-access-errors | 1setOf text (MAX) | |
+----------------------------+----------------------+----------------+
| number-of-documents | integer (0:MAX) | | | number-of-documents | integer (0:MAX) | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| output-device-assigned | name (127) | | | output-device-assigned | name (127) | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| time-at-creation | integer (MIN:MAX) | REQUIRED | | time-at-creation | integer (MIN:MAX) | REQUIRED |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| time-at-processing | integer (MIN:MAX) | REQUIRED | | time-at-processing | integer (MIN:MAX) | REQUIRED |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| time-at-completed | integer (MIN:MAX) | REQUIRED | | time-at-completed | integer (MIN:MAX) | REQUIRED |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-printer-up-time | integer (1:MAX) | REQUIRED | | job-printer-up-time | integer (1:MAX) | REQUIRED |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| date-time-at-creation | dateTime | OPTIONAL | | date-time-at-creation | dateTime | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| date-time-at-processing | dateTime | OPTIONAL | | date-time-at-processing | dateTime | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| date-time-at-completed | dateTime | OPTIONAL | | date-time-at-completed | dateTime | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| number-of-intervening-jobs | integer (0:MAX) | | | number-of-intervening-jobs | integer (0:MAX) | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-message-from-operator | text (127) | | | job-message-from-operator | text (127) | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-k-octets | integer (0:MAX) | | | job-k-octets | integer (0:MAX) | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-impressions | integer (0:MAX) | | | job-impressions | integer (0:MAX) | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-media-sheets | integer (0:MAX) | | | job-media-sheets | integer (0:MAX) | |
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-k-octets-processed | integer (0:MAX) | | | job-k-octets-processed | integer (0:MAX) | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-impressions-completed | integer (0:MAX) | | | job-impressions-completed | integer (0:MAX) | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| job-media-sheets-completed | integer (0:MAX) | | | job-media-sheets-completed | integer (0:MAX) | |
Expires December 23, 1999
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| attributes-charset | charset | REQUIRED | | attributes-charset | charset | REQUIRED |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| attributes-natural-language| naturalLanguage | REQUIRED | | attributes-natural-language| naturalLanguage | REQUIRED |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
4.3.1 job-uri (uri) 4.3.1 job-uri (uri)
This REQUIRED attribute contains the URI for the job. The Printer This REQUIRED attribute contains the URI for the job. The Printer
object, on receipt of a new job, generates a URI which identifies the object, on receipt of a new job, generates a URI which identifies the
skipping to change at page 94, line 51 skipping to change at page 96, line 56
For a description of this attribute and its relationship to "job-uri" For a description of this attribute and its relationship to "job-uri"
and "job-printer-uri" attribute, see the discussion in section 2.4 on and "job-printer-uri" attribute, see the discussion in section 2.4 on
"Object Identity". "Object Identity".
4.3.3 job-printer-uri (uri) 4.3.3 job-printer-uri (uri)
This REQUIRED attribute identifies the Printer object that created this This REQUIRED attribute identifies the Printer object that created this
Job object. When a Printer object creates a Job object, it populates Job object. When a Printer object creates a Job object, it populates
this attribute with the Printer object URI that was used in the create this attribute with the Printer object URI that was used in the create
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
request. This attribute permits a client to identify the Printer object request. This attribute permits a client to identify the Printer object
that created this Job object when only the Job object's URI is available that created this Job object when only the Job object's URI is available
to the client. The client queries the creating Printer object to to the client. The client queries the creating Printer object to
determine which languages, charsets, operations, are supported for this determine which languages, charsets, operations, are supported for this
Job. Job.
Expires December 23, 1999
For a description of this attribute and its relationship to "job-uri" For a description of this attribute and its relationship to "job-uri"
and "job-id" attribute, see the discussion in section 2.4 on "Object and "job-id" attribute, see the discussion in section 2.4 on "Object
Identity". Identity".
4.3.4 job-more-info (uri) 4.3.4 job-more-info (uri)
Similar to "printer-more-info", this attribute contains the URI Similar to "printer-more-info", this attribute contains the URI
referencing some resource with more information about this Job object, referencing some resource with more information about this Job object,
perhaps an HTML page containing information about the Job. perhaps an HTML page containing information about the Job.
skipping to change at page 95, line 40 skipping to change at page 97, line 45
other piece of Job specific and/or Document Content information. other piece of Job specific and/or Document Content information.
4.3.6 job-originating-user-name (name(MAX)) 4.3.6 job-originating-user-name (name(MAX))
This REQUIRED attribute contains the name of the end user that submitted This REQUIRED attribute contains the name of the end user that submitted
the print job. The Printer object sets this attribute to the most the print job. The Printer object sets this attribute to the most
authenticated printable name that it can obtain from the authentication authenticated printable name that it can obtain from the authentication
service over which the IPP operation was received. Only if such is not service over which the IPP operation was received. Only if such is not
available, does the Printer object use the value supplied by the client available, does the Printer object use the value supplied by the client
in the "requesting-user-name" operation attribute of the create in the "requesting-user-name" operation attribute of the create
operation (see Section 8). operation (see Sections 4.4.2, 4.4.3, and 8).
Note: The Printer object needs to keep an internal originating user id Note: The Printer object needs to keep an internal originating user id
of some form, typically as a credential of a principal, with the Job of some form, typically as a credential of a principal, with the Job
object. Since such an internal attribute is implementation-dependent object. Since such an internal attribute is implementation-dependent
and not of interest to clients, it is not specified as a Job Description and not of interest to clients, it is not specified as a Job Description
attribute. This originating user id is used for authorization checks attribute. This originating user id is used for authorization checks
(if any) on all subsequent operation. (if any) on all subsequent operations.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
4.3.7 job-state (type1 enum) 4.3.7 job-state (type1 enum)
This REQUIRED attribute identifies the current state of the job. Even This REQUIRED attribute identifies the current state of the job. Even
though the IPP protocol defines seven values for job states (plus the though the IPP protocol defines seven values for job states (plus the
out-of-band 'unknown' value - see Section 4.1), implementations only out-of-band 'unknown' value - see Section 4.1), implementations only
need to support those states which are appropriate for the particular need to support those states which are appropriate for the particular
implementation. In other words, a Printer supports only those job implementation. In other words, a Printer supports only those job
states implemented by the output device and available to the Printer states implemented by the output device and available to the Printer
object implementation. object implementation.
Expires December 23, 1999
Standard enum values are: Standard enum values are:
Values Symbolic Name and Description Values Symbolic Name and Description
'3' 'pending': The job is a candidate to start processing, but is '3' 'pending': The job is a candidate to start processing, but is
not yet processing. not yet processing.
'4' 'pending-held': The job is not a candidate for processing for '4' 'pending-held': The job is not a candidate for processing for
any number of reasons but will return to the 'pending' any number of reasons but will return to the 'pending'
state as soon as the reasons are no longer present. The state as soon as the reasons are no longer present. The
skipping to change at page 96, line 49 skipping to change at page 98, line 58
Implementations MAY, though they NEED NOT, include Implementations MAY, though they NEED NOT, include
additional values in the job's "job-state-reasons" additional values in the job's "job-state-reasons"
attribute to indicate the progress of the job, such as attribute to indicate the progress of the job, such as
adding the 'job-printing' value to indicate when the adding the 'job-printing' value to indicate when the
output device is actually making marks on paper and/or output device is actually making marks on paper and/or
the 'processing-to-stop-point' value to indicate that the the 'processing-to-stop-point' value to indicate that the
IPP object is in the process of canceling or aborting the IPP object is in the process of canceling or aborting the
job. Most implementations won't bother with this nuance. job. Most implementations won't bother with this nuance.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
'6' 'processing-stopped': The job has stopped while processing '6' 'processing-stopped': The job has stopped while processing
for any number of reasons and will return to the for any number of reasons and will return to the
'processing' state as soon as the reasons are no longer 'processing' state as soon as the reasons are no longer
present. present.
The job's "job-state-reason" attribute MAY indicate why The job's "job-state-reason" attribute MAY indicate why
the job has stopped processing. For example, if the the job has stopped processing. For example, if the
output device is stopped, the 'printer-stopped' value MAY output device is stopped, the 'printer-stopped' value MAY
be included in the job's "job-state-reasons" attribute. be included in the job's "job-state-reasons" attribute.
Expires December 23, 1999
Note: When an output device is stopped, the device Note: When an output device is stopped, the device
usually indicates its condition in human readable form usually indicates its condition in human readable form
locally at the device. A client can obtain more complete locally at the device. A client can obtain more complete
device status remotely by querying the Printer object's device status remotely by querying the Printer object's
"printer-state", "printer-state-reasons" and "printer- "printer-state", "printer-state-reasons" and "printer-
state-message" attributes. state-message" attributes.
'7' 'canceled': The job has been canceled by a Cancel-Job '7' 'canceled': The job has been canceled by a Cancel-Job
operation and the Printer object has completed canceling operation and the Printer object has completed canceling
the job and all job status attributes have reached their the job and all job status attributes have reached their
skipping to change at page 97, line 48 skipping to change at page 99, line 57
'9' 'completed': The job has completed successfully or with '9' 'completed': The job has completed successfully or with
warnings or errors after processing and all of the job warnings or errors after processing and all of the job
media sheets have been successfully stacked in the media sheets have been successfully stacked in the
appropriate output bin(s) and all job status attributes appropriate output bin(s) and all job status attributes
have reached their final values for the job. The job's have reached their final values for the job. The job's
"job-state-reasons" attribute SHOULD contain one of: "job-state-reasons" attribute SHOULD contain one of:
'completed-successfully', 'completed-with-warnings', or 'completed-successfully', 'completed-with-warnings', or
'completed-with-errors' values. 'completed-with-errors' values.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
The final value for this attribute MUST be one of: 'completed', The final value for this attribute MUST be one of: 'completed',
'canceled', or 'aborted' before the Printer removes the job altogether. 'canceled', or 'aborted' before the Printer removes the job altogether.
The length of time that jobs remain in the 'canceled', 'aborted', and The length of time that jobs remain in the 'canceled', 'aborted', and
'completed' states depends on implementation. See section 4.3.7.2. 'completed' states depends on implementation. See section 4.3.7.2.
The following figure shows the normal job state transitions. The following figure shows the normal job state transitions.
Expires December 23, 1999
+----> canceled +----> canceled
/ /
+----> pending --------> processing ---------+------> completed +----> pending --------> processing ---------+------> completed
| ^ ^ \ | ^ ^ \
--->+ | | +----> aborted --->+ | | +----> aborted
| v v / | v v /
+----> pending-held processing-stopped ---+ +----> pending-held processing-stopped ---+
Normally a job progresses from left to right. Other state transitions Normally a job progresses from left to right. Other state transitions
are unlikely, but are not forbidden. Not shown are the transitions to are unlikely, but are not forbidden. Not shown are the transitions to
skipping to change at page 98, line 49 skipping to change at page 100, line 56
4.3.7.2 Partitioning of Job States 4.3.7.2 Partitioning of Job States
This section partitions the 7 job states into phases: Job Not This section partitions the 7 job states into phases: Job Not
Completed, Job Retention, Job History, and Job Removal. This section Completed, Job Retention, Job History, and Job Removal. This section
also explains the 'job-restartable' value of the "job-state-reasons" Job also explains the 'job-restartable' value of the "job-state-reasons" Job
Description attribute for use with the Restart-Job operation. Description attribute for use with the Restart-Job operation.
Job Not Completed: When a job is in the 'pending', 'pending-held', Job Not Completed: When a job is in the 'pending', 'pending-held',
'processing', or 'processing-stopped' states, the job is not completed. 'processing', or 'processing-stopped' states, the job is not completed.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
Job Retention: When a job enters one of the three terminal job states: Job Retention: When a job enters one of the three terminal job states:
'completed', 'canceled', or 'aborted', the IPP Printer object MAY 'completed', 'canceled', or 'aborted', the IPP Printer object MAY
"retain" the job in a restartable condition for an implementation- "retain" the job in a restartable condition for an implementation-
defined time period. This time period MAY be zero seconds and MAY defined time period. This time period MAY be zero seconds and MAY
depend on the terminal job state. This phase is called Job Retention. depend on the terminal job state. This phase is called Job Retention.
While in the Job Retention phase, the job's document data is retained While in the Job Retention phase, the job's document data is retained
and a client may restart the job using the Restart-Job operation. If and a client may restart the job using the Restart-Job operation. If
the IPP object supports the Restart-Job operation, then it SHOULD the IPP object supports the Restart-Job operation, then it SHOULD
indicate that the job is restartable by adding the 'job-restartable' indicate that the job is restartable by adding the 'job-restartable'
Expires December 23, 1999
value to the job's "job-state-reasons" attribute (see Section 4.3.8) value to the job's "job-state-reasons" attribute (see Section 4.3.8)
during the Job Retention phase. during the Job Retention phase.
Job History: After the Job Retention phase expires for a job, the Job History: After the Job Retention phase expires for a job, the
Printer object deletes the document data for the job and the job becomes Printer object deletes the document data for the job and the job becomes
part of the Job History. The Printer object MAY also delete any number part of the Job History. The Printer object MAY also delete any number
of the job attributes. Since the job is no longer restartable, the of the job attributes. Since the job is no longer restartable, the
Printer object MUST remove the 'job-restartable' value from the job's Printer object MUST remove the 'job-restartable' value from the job's
"job-state-reasons" attribute, if present. "job-state-reasons" attribute, if present.
skipping to change at page 99, line 50 skipping to change at page 101, line 58
conformance requirements; the rest are OPTIONAL. Furthermore, when conformance requirements; the rest are OPTIONAL. Furthermore, when
implemented, the Printer MUST return these values when the reason implemented, the Printer MUST return these values when the reason
applies and MUST NOT return them when the reason no longer applies applies and MUST NOT return them when the reason no longer applies
whether the value of the Job's "job-state" attribute changed or not. whether the value of the Job's "job-state" attribute changed or not.
When the Job does not have any reasons for being in its current state, When the Job does not have any reasons for being in its current state,
the value of the Job's "job-state-reasons" attribute MUST be 'none'. the value of the Job's "job-state-reasons" attribute MUST be 'none'.
Note: While values cannot be added to the 'job-state' attribute without Note: While values cannot be added to the 'job-state' attribute without
impacting deployed clients that take actions upon receiving "job-state" impacting deployed clients that take actions upon receiving "job-state"
values, it is the intent that additional "job-state-reasons" values can values, it is the intent that additional "job-state-reasons" values can
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
be defined and registered without impacting such deployed clients. In be defined and registered without impacting such deployed clients. In
other words, the "job-state-reasons" attribute is intended to be other words, the "job-state-reasons" attribute is intended to be
extensible. extensible.
The following standard keyword values are defined. For ease of The following standard keyword values are defined. For ease of
understanding, the values are presented in the order in which the understanding, the values are presented in the order in which the
reasons are likely to occur (if implemented), starting with the 'job- reasons are likely to occur (if implemented), starting with the 'job-
incoming' value: incoming' value:
'none': There are no reasons for the job's current state. This 'none': There are no reasons for the job's current state. This
state reason is semantically equivalent to "job-state-reasons" state reason is semantically equivalent to "job-state-reasons"
Expires December 23, 1999
without any value and MUST be used when there is no other value, without any value and MUST be used when there is no other value,
since the 1setOf attribute syntax requires at least one value. since the 1setOf attribute syntax requires at least one value.
'job-incoming': The Create-Job operation has been accepted by the 'job-incoming': The Create-Job operation has been accepted by the
Printer, but the Printer is expecting additional Send-Document Printer, but the Printer is expecting additional Send-Document
and/or Send-URI operations and/or is accessing/accepting document and/or Send-URI operations and/or is accessing/accepting document
data. data.
'job-data-insufficient': The Create-Job operation has been accepted 'job-data-insufficient': The Create-Job operation has been accepted
by the Printer, but the Printer is expecting additional document by the Printer, but the Printer is expecting additional document
data before it can move the job into the 'processing' state. If a data before it can move the job into the 'processing' state. If a
Printer starts processing before it has received all data, the Printer starts processing before it has received all data, the
skipping to change at page 100, line 48 skipping to change at page 102, line 59
client crashed or failed to close the job before the time-out client crashed or failed to close the job before the time-out
period. See section 4.4.31. period. See section 4.4.31.
'job-outgoing': The Printer is transmitting the job to the output 'job-outgoing': The Printer is transmitting the job to the output
device. device.
'job-hold-until-specified': The value of the job's "job-hold-until" 'job-hold-until-specified': The value of the job's "job-hold-until"
attribute was specified with a time period that is still in the attribute was specified with a time period that is still in the
future. The job MUST NOT be a candidate for processing until this future. The job MUST NOT be a candidate for processing until this
reason is removed and there are no other reasons to hold the job. reason is removed and there are no other reasons to hold the job.
This value SHOULD be supported if the "job-hold-until" Job Template This value SHOULD be supported if the "job-hold-until" Job Template
attribute is supported. attribute is supported.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
'resources-are-not-ready': At least one of the resources needed by 'resources-are-not-ready': At least one of the resources needed by
the job, such as media, fonts, resource objects, etc., is not ready the job, such as media, fonts, resource objects, etc., is not ready
on any of the physical printer's for which the job is a candidate. on any of the physical printer's for which the job is a candidate.
This condition MAY be detected when the job is accepted, or This condition MAY be detected when the job is accepted, or
subsequently while the job is pending or processing, depending on subsequently while the job is pending or processing, depending on
implementation. The job may remain in its current state or be implementation. The job may remain in its current state or be
moved to the 'pending-held' state, depending on implementation moved to the 'pending-held' state, depending on implementation
and/or job scheduling policy. and/or job scheduling policy.
'printer-stopped-partly': The value of the Printer's "printer-state- 'printer-stopped-partly': The value of the Printer's "printer-state-
reasons" attribute contains the value 'stopped-partly'. reasons" attribute contains the value 'stopped-partly'.
'printer-stopped': The value of the Printer's "printer-state" 'printer-stopped': The value of the Printer's "printer-state"
attribute is 'stopped'. attribute is 'stopped'.
Expires December 23, 1999
'job-interpreting': Job is in the 'processing' state, but more 'job-interpreting': Job is in the 'processing' state, but more
specifically, the Printer is interpreting the document data. specifically, the Printer is interpreting the document data.
'job-queued': Job is in the 'processing' state, but more 'job-queued': Job is in the 'processing' state, but more
specifically, the Printer has queued the document data. specifically, the Printer has queued the document data.
'job-transforming': Job is in the 'processing' state, but more 'job-transforming': Job is in the 'processing' state, but more
specifically, the Printer is interpreting document data and specifically, the Printer is interpreting document data and
producing another electronic representation. producing another electronic representation.
'job-queued-for-marker': Job is in any of the 'pending-held', 'job-queued-for-marker': Job is in any of the 'pending-held',
'pending', or 'processing' states, but more specifically, the 'pending', or 'processing' states, but more specifically, the
Printer has completed enough processing of the document to be able Printer has completed enough processing of the document to be able
skipping to change at page 101, line 46 skipping to change at page 103, line 57
be supported. be supported.
'job-canceled-by-operator': The job was canceled by the operator 'job-canceled-by-operator': The job was canceled by the operator
using the Cancel-Job request, i.e., by a user who has been using the Cancel-Job request, i.e., by a user who has been
authenticated as having operator privileges (whether local or authenticated as having operator privileges (whether local or
remote). If the security policy is to allow anyone to cancel remote). If the security policy is to allow anyone to cancel
anyone's job, then this value may be used when the job is canceled anyone's job, then this value may be used when the job is canceled
by other than the owner of the job. For such a security policy, in by other than the owner of the job. For such a security policy, in
effect, everyone is an operator as far as canceling jobs with IPP effect, everyone is an operator as far as canceling jobs with IPP
is concerned. This value SHOULD be supported if the implementation is concerned. This value SHOULD be supported if the implementation
permits canceling by other than the owner of the job. permits canceling by other than the owner of the job.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
'job-canceled-at-device': The job was canceled by an unidentified 'job-canceled-at-device': The job was canceled by an unidentified
local user, i.e., a user at a console at the device. This value local user, i.e., a user at a console at the device. This value
SHOULD be supported if the implementation supports canceling jobs SHOULD be supported if the implementation supports canceling jobs
at the console. at the console.
'aborted-by-system': The job (1) is in the process of being aborted, 'aborted-by-system': The job (1) is in the process of being aborted,
(2) has been aborted by the system and placed in the 'aborted' (2) has been aborted by the system and placed in the 'aborted'
state, or (3) has been aborted by the system and placed in the state, or (3) has been aborted by the system and placed in the
'pending-held' state, so that a user or operator can manually try 'pending-held' state, so that a user or operator can manually try
the job again. This value SHOULD be supported. the job again. This value SHOULD be supported.
'unsupported-compression': The job was aborted by the system because 'unsupported-compression': The job was aborted by the system because
the Printer determined while attempting to decompress the document- the Printer determined while attempting to decompress the document-
data's that the compression is actually not among those supported data's that the compression is actually not among those supported
by the Printer. This value MUST be supported, since "compressions by the Printer. This value MUST be supported, since "compressions
is a REQUIRED operation attribute. is a REQUIRED operation attribute.
Expires December 23, 1999
'compression-error': The job was aborted by the system because the 'compression-error': The job was aborted by the system because the
Printer encountered an error in the document-data while Printer encountered an error in the document-data while
decompressing it. If the Printer posts this reason, the document- decompressing it. If the Printer posts this reason, the document-
data has already passed any tests that would have led to the data has already passed any tests that would have led to the
'unsupported-compression' job-state-reason. 'unsupported-compression' job-state-reason.
'unsupported-document-format': The job was aborted by the system 'unsupported-document-format': The job was aborted by the system
because the document-data's document-format is not among those because the document-data's document-format is not among those
supported by the Printer. If the client specifies the document- supported by the Printer. If the client specifies the document-
format as 'application/octet-stream', the printer MAY abort the job format as 'application/octet-stream', the printer MAY abort the job
and post this reason even though the format is a member of the and post this reason even though the format is a member of the
skipping to change at page 102, line 44 skipping to change at page 104, line 57
job's job description attributes have stopped incrementing, the job's job description attributes have stopped incrementing, the
Printer object moves the job from the 'processing' state to the Printer object moves the job from the 'processing' state to the
'canceled' or 'aborted' job states. 'canceled' or 'aborted' job states.
'service-off-line': The Printer is off-line and accepting no jobs. 'service-off-line': The Printer is off-line and accepting no jobs.
All 'pending' jobs are put into the 'pending-held' state. This All 'pending' jobs are put into the 'pending-held' state. This
situation could be true if the service's or document transform's situation could be true if the service's or document transform's
input is impaired or broken. input is impaired or broken.
'job-completed-successfully': The job completed successfully. This 'job-completed-successfully': The job completed successfully. This
value SHOULD be supported. value SHOULD be supported.
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
'job-completed-with-warnings': The job completed with warnings. 'job-completed-with-warnings': The job completed with warnings.
This value SHOULD be supported if the implementation detects This value SHOULD be supported if the implementation detects
warnings. warnings.
'job-completed-with-errors': The job completed with errors (and 'job-completed-with-errors': The job completed with errors (and
possibly warnings too). This value SHOULD be supported if the possibly warnings too). This value SHOULD be supported if the
implementation detects errors. implementation detects errors.
'job-restartable' - This job is retained (see section 4.3.7.2) and is 'job-restartable' - This job is retained (see section 4.3.7.2) and is
currently able to be restarted using the Restart-Job operation (see currently able to be restarted using the Restart-Job operation (see
section 3.3.7). If 'job-restartable' is a value of the job's 'job- section 3.3.7). If 'job-restartable' is a value of the job's 'job-
state-reasons' attribute, then the IPP object MUST accept a state-reasons' attribute, then the IPP object MUST accept a
Restart-Job operation for that job. This value SHOULD be supported Restart-Job operation for that job. This value SHOULD be supported
if the Restart-Job operation is supported. if the Restart-Job operation is supported.
'queued-in-device': The job has been forwarded to a device or print 'queued-in-device': The job has been forwarded to a device or print
system that is unable to send back status. The Printer sets the system that is unable to send back status. The Printer sets the
job's "job-state " attribute to 'completed' and adds the 'queued- job's "job-state " attribute to 'completed' and adds the 'queued-
in-device' value to the job's "job-state-reasons" attribute to in-device' value to the job's "job-state-reasons" attribute to
indicate that the Printer has no additional information about the indicate that the Printer has no additional information about the
Expires December 23, 1999
job and never will have any better information. See section job and never will have any better information. See section
4.3.7.1. 4.3.7.1.
4.3.9 job-state-message (text(MAX)) 4.3.9 job-state-message (text(MAX))
This attribute specifies information about the "job-state" and "job- This attribute specifies information about the "job-state" and "job-
state-reasons" attributes in human readable text. If the Printer object state-reasons" attributes in human readable text. If the Printer object
supports this attribute, the Printer object MUST be able to generate supports this attribute, the Printer object MUST be able to generate
this message in any of the natural languages identified by the Printer's this message in any of the natural languages identified by the Printer's
"generated-natural-language-supported" attribute (see the "attributes- "generated-natural-language-supported" attribute (see the "attributes-
skipping to change at page 103, line 41 skipping to change at page 105, line 57
or other experienced technical persons. Clients MUST NOT attempt to or other experienced technical persons. Clients MUST NOT attempt to
parse the value of this attribute. See "job-document-access-errors" parse the value of this attribute. See "job-document-access-errors"
(section 4.3.11) for additional errors that a program can process. (section 4.3.11) for additional errors that a program can process.
4.3.11 job-document-access-errors (1setOf text(MAX)) 4.3.11 job-document-access-errors (1setOf text(MAX))
This attribute provides additional information about each document This attribute provides additional information about each document
access error for this job encountered by the Printer after it returned a access error for this job encountered by the Printer after it returned a
response to the Print-URI or Send-URI operation and subsequently response to the Print-URI or Send-URI operation and subsequently
attempted to access document(s) supplied in the Print-URI or Send-URI attempted to access document(s) supplied in the Print-URI or Send-URI
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
operation. For errors in the protocol that is identified by the URI operation. For errors in the protocol that is identified by the URI
scheme in the "document-uri" operation attribute, such as 'http:' or scheme in the "document-uri" operation attribute, such as 'http:' or
'ftp:', the error code is returned in parentheses, followed by the URI. 'ftp:', the error code is returned in parentheses, followed by the URI.
For example: For example:
(404) http://ftp.pwg.org/pub/pwg/ipp/new_MOD/ipp-model-v11- (404) http://ftp.pwg.org/pub/pwg/ipp/new_MOD/ipp-model-v11-
990510.pdf 990510.pdf
Most Internet protocols use decimal error codes (unlike IPP), so the Most Internet protocols use decimal error codes (unlike IPP), so the
ASCII error code representation is in decimal. ASCII error code representation is in decimal.
4.3.12 number-of-documents (integer(0:MAX)) 4.3.12 number-of-documents (integer(0:MAX))
This attribute indicates the number of documents in the job, i.e., the This attribute indicates the number of documents in the job, i.e., the
number of Send-Document, Send-URI, Print-Job, or Print-URI operations number of Send-Document, Send-URI, Print-Job, or Print-URI operations
that the Printer has accepted for this job, regardless of whether the that the Printer has accepted for this job, regardless of whether the
document data has reached the Printer object or not. document data has reached the Printer object or not.
Expires December 23, 1999
Implementations supporting the OPTIONAL Create-Job/Send-Document/Send- Implementations supporting the OPTIONAL Create-Job/Send-Document/Send-
URI operations SHOULD support this attribute so that clients can query URI operations SHOULD support this attribute so that clients can query
the number of documents in each job. the number of documents in each job.
4.3.13 output-device-assigned (name(127)) 4.3.13 output-device-assigned (name(127))
This attribute identifies the output device to which the Printer object This attribute identifies the output device to which the Printer object
has assigned this job. If an output device implements an embedded has assigned this job. If an output device implements an embedded
Printer object, the Printer object NEED NOT set this attribute. If a Printer object, the Printer object NEED NOT set this attribute. If a
print server implements a Printer object, the value MAY be empty (zero- print server implements a Printer object, the value MAY be empty (zero-
length string) or not returned until the Printer object assigns an length string) or not returned until the Printer object assigns an
output device to the job. This attribute is particularly useful when a output device to the job. This attribute is particularly useful when a
single Printer object support multiple devices (so called "fan-out"). single Printer object supports multiple devices (so called "fan-out" -
see section 2.1).
4.3.14 Event Time Job Description Attributes 4.3.14 Event Time Job Description Attributes
This section defines the Job Description attributes that indicate the This section defines the Job Description attributes that indicate the
time at which certain events occur for a job. If the job event has not time at which certain events occur for a job. If the job event has not
yet occurred, then the IPP object MUST return the 'no-value' out-of-band yet occurred, then the IPP object MUST return the 'no-value' out-of-band
value (see the beginning of Section 4.1). The "time-at-xxx(integer)" value (see the beginning of Section 4.1). The "time-at-xxx(integer)"
attributes represent time as an 'integer' representing the number of attributes represent time as an 'integer' representing the number of
seconds since the device was powered up (informally called "time seconds since the device was powered up (informally called "time
ticks"). The "date-time-at-xxx(dateTime)" attributes represent time as ticks"). The "date-time-at-xxx(dateTime)" attributes represent time as
'dateTime' representing date and time (including an offset from UTC). 'dateTime' representing date and time (including an offset from UTC).
In order to populate these attributes, the Printer object copies the In order to populate these attributes, the Printer object copies the
value(s) of the following Printer Description attributes at the time the value(s) of the following Printer Description attributes at the time the
event occurs: event occurs:
1. the value in the Printer's "printer-up-time" attribute for the 1. the value in the Printer's "printer-up-time" attribute for the
"time-at-xxx(integer)" attributes "time-at-xxx(integer)" attributes
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
2. the value in the Printer's "printer-current-time" attribute for the 2. the value in the Printer's "printer-current-time" attribute for the
"date-time-at-xxx(dateTime)" attributes. "date-time-at-xxx(dateTime)" attributes.
If the Printer resets its "printer-up-time" attribute to 1 on power-up If the Printer resets its "printer-up-time" attribute to 1 on power-up
(see section 4.4.29) and has persistent jobs, then it MUST change all of (see section 4.4.29) and has persistent jobs, then it MUST change all of
jobs' "time-at-xxx(integer)" (time tick) job attributes whose events jobs' "time-at-xxx(integer)" (time tick) job attributes whose events
have occurred either to: have occurred either to:
1. 0 to indicate that the event happened before the most recent power 1. 0 to indicate that the event happened before the most recent power
up OR up OR
skipping to change at page 105, line 5 skipping to change at page 107, line 27
up that the event took place, though the negative number NEED NOT up that the event took place, though the negative number NEED NOT
reflect the exact number of seconds. reflect the exact number of seconds.
If a client queries a "time-at-xxx(integer)" time tick Job attribute and If a client queries a "time-at-xxx(integer)" time tick Job attribute and
finds the value to be 0 or negative, the client MUST assume that the finds the value to be 0 or negative, the client MUST assume that the
event occurred in some life other than the Printer's current life. event occurred in some life other than the Printer's current life.
Note: A Printer does not change the values of any "date-time-at- Note: A Printer does not change the values of any "date-time-at-
xxx(dateTime)" job attributes on power-up. xxx(dateTime)" job attributes on power-up.
Expires December 23, 1999
4.3.14.1 time-at-creation (integer(MIN:MAX)) 4.3.14.1 time-at-creation (integer(MIN:MAX))
This REQUIRED attribute indicates the time at which the Job object was This REQUIRED attribute indicates the time at which the Job object was
created. created.
4.3.14.2 time-at-processing (integer(MIN:MAX)) 4.3.14.2 time-at-processing (integer(MIN:MAX))
This REQUIRED attribute indicates the time at which the Job object first This REQUIRED attribute indicates the time at which the Job object first
began processing after the create operation or the most recent Restart- began processing after the create operation or the most recent Restart-
Job operation. The out-of-band 'no-value' value is returned if the job Job operation. The out-of-band 'no-value' value is returned if the job
has not yet been in the 'processing' state (see the beginning of Section has not yet been in the 'processing' state (see the beginning of Section
4.1). 4.1).
4.3.14.3 time-at-completed (integer(MIN:MAX)) 4.3.14.3 time-at-completed (integer(MIN:MAX))
This REQUIRED attribute indicates the time at which the Job object This REQUIRED attribute indicates the time at which the Job object
completed (or was cancelled or aborted). The out-of-band 'no-value' completed (or was canceled or aborted). The out-of-band 'no-value'
value is returned if the job has not yet completed, been canceled, or value is returned if the job has not yet completed, been canceled, or
aborted (see the beginning of Section 4.1). aborted (see the beginning of Section 4.1).
4.3.14.4 job-printer-up-time (integer(1:MAX)) 4.3.14.4 job-printer-up-time (integer(1:MAX))
This REQUIRED Job Description attribute indicates the amount of time (in This REQUIRED Job Description attribute indicates the amount of time (in
seconds) that the Printer implementation has been up and running. This seconds) that the Printer implementation has been up and running. This
attribute is an alias for the "printer-up-time" Printer Description attribute is an alias for the "printer-up-time" Printer Description
attribute (see Section 4.4.29). attribute (see Section 4.4.29).
A client MAY request this attribute in a Get-Job-Attributes or Get-Jobs A client MAY request this attribute in a Get-Job-Attributes or Get-Jobs
request and use the value returned in combination with other requested request and use the value returned in combination with other requested
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
Event Time Job Description Attributes in order to display time Event Time Job Description Attributes in order to display time
attributes to a user. The difference between this attribute and the attributes to a user. The difference between this attribute and the
'integer' value of a "time-at-xxx" attribute is the number of seconds 'integer' value of a "time-at-xxx" attribute is the number of seconds
ago that the "time-at-xxx" event occurred. A client can compute the ago that the "time-at-xxx" event occurred. A client can compute the
wall-clock time at which the "time-at-xxx" event occurred by subtracting wall-clock time at which the "time-at-xxx" event occurred by subtracting
this difference from the client.s wall-clock time. this difference from the client.s wall-clock time.
4.3.14.5 date-time-at-creation (dateTime) 4.3.14.5 date-time-at-creation (dateTime)
This attribute indicates the date and time at which the Job object was This attribute indicates the date and time at which the Job object was
skipping to change at page 105, line 57 skipping to change at page 108, line 27
4.3.14.6 date-time-at-processing (dateTime) 4.3.14.6 date-time-at-processing (dateTime)
This attribute indicates the date and time at which the Job object first This attribute indicates the date and time at which the Job object first
began processing after the create operation or the most recent Restart- began processing after the create operation or the most recent Restart-
Job operation. Job operation.
4.3.14.7 date-time-at-completed (dateTime) 4.3.14.7 date-time-at-completed (dateTime)
This attribute indicates the date and time at which the Job object This attribute indicates the date and time at which the Job object
completed (or was cancelled or aborted). completed (or was canceled or aborted).
Expires December 23, 1999
4.3.15 number-of-intervening-jobs (integer(0:MAX)) 4.3.15 number-of-intervening-jobs (integer(0:MAX))
This attribute indicates the number of jobs that are "ahead" of this job This attribute indicates the number of jobs that are "ahead" of this job
in the relative chronological order of expected time to complete (i.e., in the relative chronological order of expected time to complete (i.e.,
the current scheduled order). For efficiency, it is only necessary to the current scheduled order). For efficiency, it is only necessary to
calculate this value when an operation is performed that requests this calculate this value when an operation is performed that requests this
attribute. attribute.
4.3.16 job-message-from-operator (text(127)) 4.3.16 job-message-from-operator (text(127))
skipping to change at page 106, line 32 skipping to change at page 108, line 54
This sub-section defines job attributes that describe the size of the This sub-section defines job attributes that describe the size of the
job. These attributes are not intended to be counters; they are