draft-ietf-ipp-model-v11-05.txt   draft-ietf-ipp-model-v11-06.txt 
INTERNET-DRAFT INTERNET-DRAFT
draft-ietf-ipp-model-v11-05.txt draft-ietf-ipp-model-v11-06.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
February 23, 2000 March 1, 2000
Internet Printing Protocol/1.1: Model and Semantics Internet Printing Protocol/1.1: Model and Semantics
Copyright (C) The Internet Society (2000). 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.
skipping to change at page 1, line 56 skipping to change at page 2, line 5
simplified model consisting of abstract objects, their attributes, and simplified model consisting of abstract objects, their attributes, and
their operations that is independent of encoding and transport. The their operations that is independent of encoding and transport. The
model consists of a Printer and a Job object. A Job optionally supports model consists of a Printer and a Job object. A Job optionally supports
multiple documents. IPP 1.1 semantics allow end-users and operators to multiple documents. IPP 1.1 semantics allow end-users and operators to
query printer capabilities, submit print jobs, inquire about the status query printer capabilities, submit print jobs, inquire about the status
of print jobs and printers, cancel, hold, release, and restart print of print jobs and printers, cancel, hold, release, and restart print
jobs. IPP 1.1 semantics allow operators to pause, resume, and purge jobs. IPP 1.1 semantics allow operators to pause, resume, and purge
(jobs from) Printer objects. This document also addresses security, (jobs from) Printer objects. This document also addresses security,
internationalization, and directory issues. internationalization, and directory issues.
deBry, Hastings, Herriot, Isaacson, Powell Expires September 1, 2000
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]
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]
skipping to change at page 2, line 50 skipping to change at page 3, line 5
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.
deBry, Hastings, Herriot, Isaacson, Powell Expires September 1, 2000
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.............................................21 3.1 Common Semantics.............................................20
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...............................................22 3.1.3 Attributes...............................................21
3.1.4 Character Set and Natural Language Operation Attributes..23 3.1.4 Character Set and Natural Language Operation Attributes..23
3.1.4.1 Request Operation Attributes..........................24 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......30 3.1.6 Operation Response Status Codes and Status Messages......29
3.1.6.1 "status-code" (type2 enum)............................30 3.1.6.1 "status-code" (type2 enum)............................29
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...................................32 3.1.7 Unsupported Attributes...................................31
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...........................................38 3.2 Printer Operations...........................................37
3.2.1 Print-Job Operation......................................38 3.2.1 Print-Job Operation......................................37
3.2.1.1 Print-Job Request.....................................38 3.2.1.1 Print-Job Request.....................................37
3.2.1.2 Print-Job Response....................................42 3.2.1.2 Print-Job Response....................................41
3.2.2 Print-URI Operation......................................44 3.2.2 Print-URI Operation......................................43
3.2.3 Validate-Job Operation...................................45 3.2.3 Validate-Job Operation...................................44
3.2.4 Create-Job Operation.....................................45 3.2.4 Create-Job Operation.....................................45
3.2.5 Get-Printer-Attributes Operation.........................46 3.2.5 Get-Printer-Attributes Operation.........................45
3.2.5.1 Get-Printer-Attributes Request........................47 3.2.5.1 Get-Printer-Attributes Request........................46
3.2.5.2 Get-Printer-Attributes Response.......................48 3.2.5.2 Get-Printer-Attributes Response.......................48
3.2.6 Get-Jobs Operation.......................................49 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.....................................51 3.2.6.2 Get-Jobs Response.....................................50
3.2.7 Pause-Printer Operation..................................52 3.2.7 Pause-Printer Operation..................................52
3.2.7.1 Pause-Printer Request.................................54 3.2.7.1 Pause-Printer Request.................................53
3.2.7.2 Pause-Printer Response................................54 3.2.7.2 Pause-Printer Response................................53
3.2.8 Resume-Printer Operation.................................54 3.2.8 Resume-Printer Operation.................................54
3.2.9 Purge-Jobs Operation.....................................55 3.2.9 Purge-Jobs Operation.....................................55
3.3 Job Operations...............................................56 3.3 Job Operations...............................................55
3.3.1 Send-Document Operation..................................56 3.3.1 Send-Document Operation..................................55
3.3.1.1 Send-Document Request.................................57 3.3.1.1 Send-Document Request.................................57
3.3.1.2 Send-Document Response................................59 3.3.1.2 Send-Document Response................................58
3.3.2 Send-URI Operation.......................................59 3.3.2 Send-URI Operation.......................................58
3.3.3 Cancel-Job Operation.....................................59 3.3.3 Cancel-Job Operation.....................................59
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
3.3.3.1 Cancel-Job Request....................................60 3.3.3.1 Cancel-Job Request....................................60
3.3.3.2 Cancel-Job Response...................................61
3.3.4 Get-Job-Attributes Operation.............................62 Expires September 1, 2000
3.3.3.2 Cancel-Job Response...................................60
3.3.4 Get-Job-Attributes Operation.............................61
3.3.4.1 Get-Job-Attributes Request............................62 3.3.4.1 Get-Job-Attributes Request............................62
3.3.4.2 Get-Job-Attributes Response...........................63 3.3.4.2 Get-Job-Attributes Response...........................62
3.3.5 Hold-Job Operation.......................................64 3.3.5 Hold-Job Operation.......................................63
3.3.5.1 Hold-Job Request......................................65 3.3.5.1 Hold-Job Request......................................64
3.3.5.2 Hold-Job Response.....................................65 3.3.5.2 Hold-Job Response.....................................65
3.3.6 Release-Job Operation....................................66 3.3.6 Release-Job Operation....................................65
3.3.7 Restart-Job Operation....................................67 3.3.7 Restart-Job Operation....................................66
3.3.7.1 Restart-Job Request...................................68 3.3.7.1 Restart-Job Request...................................67
3.3.7.2 Restart-Job Response..................................69 3.3.7.2 Restart-Job Response..................................68
4. Object Attributes...............................................69 4. Object Attributes...............................................68
4.1 Attribute Syntaxes...........................................69 4.1 Attribute Syntaxes...........................................69
4.1.1 'text'...................................................70 4.1.1 'text'...................................................70
4.1.1.1 'textWithoutLanguage'.................................71 4.1.1.1 'textWithoutLanguage'.................................70
4.1.1.2 'textWithLanguage'....................................71 4.1.1.2 'textWithLanguage'....................................71
4.1.2 'name'...................................................72 4.1.2 'name'...................................................71
4.1.2.1 'nameWithoutLanguage'.................................73 4.1.2.1 'nameWithoutLanguage'.................................72
4.1.2.2 'nameWithLanguage'....................................73 4.1.2.2 'nameWithLanguage'....................................72
4.1.2.3 Matching 'name' attribute values......................74 4.1.2.3 Matching 'name' attribute values......................73
4.1.3 'keyword'................................................74 4.1.3 'keyword'................................................73
4.1.4 'enum'...................................................75 4.1.4 'enum'...................................................74
4.1.5 'uri'....................................................75 4.1.5 'uri'....................................................75
4.1.6 'uriScheme'..............................................76 4.1.6 'uriScheme'..............................................75
4.1.7 'charset'................................................76 4.1.7 'charset'................................................75
4.1.8 'naturalLanguage'........................................77 4.1.8 'naturalLanguage'........................................76
4.1.9 'mimeMediaType'..........................................77 4.1.9 'mimeMediaType'..........................................76
4.1.9.1 Application/octet-stream -- Auto-Sensing the document 4.1.9.1 Application/octet-stream -- Auto-Sensing the document
format 78 format 77
4.1.10 'octetString'............................................79 4.1.10 'octetString'............................................78
4.1.11 'boolean'................................................79 4.1.11 'boolean'................................................78
4.1.12 'integer'................................................79 4.1.12 'integer'................................................78
4.1.13 'rangeOfInteger'.........................................79 4.1.13 'rangeOfInteger'.........................................78
4.1.14 'dateTime'...............................................79 4.1.14 'dateTime'...............................................78
4.1.15 'resolution'.............................................80 4.1.15 'resolution'.............................................79
4.1.16 '1setOf X'..............................................80 4.1.16 '1setOf X'..............................................79
4.2 Job Template Attributes......................................80 4.2 Job Template Attributes......................................79
4.2.1 job-priority (integer(1:100))............................84 4.2.1 job-priority (integer(1:100))............................83
4.2.2 job-hold-until (type3 keyword | name (MAX))..............85 4.2.2 job-hold-until (type3 keyword | name (MAX))..............84
4.2.3 job-sheets (type3 keyword | name(MAX))...................86 4.2.3 job-sheets (type3 keyword | name(MAX))...................84
4.2.4 multiple-document-handling (type2 keyword)...............86 4.2.4 multiple-document-handling (type2 keyword)...............85
4.2.5 copies (integer(1:MAX))..................................87 4.2.5 copies (integer(1:MAX))..................................86
4.2.6 finishings (1setOf type2 enum)...........................88 4.2.6 finishings (1setOf type2 enum)...........................86
4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX))..............90 4.2.7 page-ranges (1setOf rangeOfInteger (1:MAX))..............88
4.2.8 sides (type2 keyword)....................................90 4.2.8 sides (type2 keyword)....................................89
4.2.9 number-up (integer(1:MAX))...............................91 4.2.9 number-up (integer(1:MAX))...............................90
4.2.10 orientation-requested (type2 enum).......................92 4.2.10 orientation-requested (type2 enum).......................90
4.2.11 media (type3 keyword | name(MAX))........................93 4.2.11 media (type3 keyword | name(MAX))........................92
4.2.12 printer-resolution (resolution)..........................93 4.2.12 printer-resolution (resolution)..........................92
4.2.13 print-quality (type2 enum)...............................94 4.2.13 print-quality (type2 enum)...............................92
4.3 Job Description Attributes...................................94 4.3 Job Description Attributes...................................93
4.3.1 job-uri (uri)............................................95
4.3.2 job-id (integer(1:MAX))..................................95
deBry, Hastings, Herriot, Isaacson, Powell Expires September 1, 2000
Expires August 23, 2000 4.3.3 job-printer-uri (uri)....................................95
4.3.1 job-uri (uri)............................................96 4.3.4 job-more-info (uri)......................................96
4.3.2 job-id (integer(1:MAX))..................................96 4.3.5 job-name (name(MAX)).....................................96
4.3.3 job-printer-uri (uri)....................................96 4.3.6 job-originating-user-name (name(MAX))....................96
4.3.4 job-more-info (uri)......................................97 4.3.7 job-state (type1 enum)...................................96
4.3.5 job-name (name(MAX)).....................................97 4.3.7.1 Forwarding Servers....................................99
4.3.6 job-originating-user-name (name(MAX))....................97 4.3.7.2 Partitioning of Job States............................99
4.3.7 job-state (type1 enum)...................................98 4.3.8 job-state-reasons (1setOf type2 keyword)...............100
4.3.7.1 Forwarding Servers...................................100 4.3.9 job-state-message (text(MAX))...........................104
4.3.7.2 Partitioning of Job States...........................100 4.3.10 job-detailed-status-messages (1setOf text(MAX)).........104
4.3.8 job-state-reasons (1setOf type2 keyword)...............101 4.3.11 job-document-access-errors (1setOf text(MAX))...........104
4.3.9 job-state-message (text(MAX))...........................105 4.3.12 number-of-documents (integer(0:MAX))....................104
4.3.10 job-detailed-status-messages (1setOf text(MAX)).........105 4.3.13 output-device-assigned (name(127))......................105
4.3.11 job-document-access-errors (1setOf text(MAX))...........105 4.3.14 Event Time Job Description Attributes...................105
4.3.12 number-of-documents (integer(0:MAX))....................106 4.3.14.1 time-at-creation (integer(MIN:MAX))..................106
4.3.13 output-device-assigned (name(127))......................106 4.3.14.2 time-at-processing (integer(MIN:MAX))................106
4.3.14 Event Time Job Description Attributes...................106 4.3.14.3 time-at-completed (integer(MIN:MAX)).................106
4.3.14.1 time-at-creation (integer(MIN:MAX))..................107 4.3.14.4 job-printer-up-time (integer(1:MAX)).................106
4.3.14.2 time-at-processing (integer(MIN:MAX))................107 4.3.14.5 date-time-at-creation (dateTime).....................106
4.3.14.3 time-at-completed (integer(MIN:MAX)).................107 4.3.14.6 date-time-at-processing (dateTime)...................107
4.3.14.4 job-printer-up-time (integer(1:MAX)).................107 4.3.14.7 date-time-at-completed (dateTime)....................107
4.3.14.5 date-time-at-creation (dateTime).....................108 4.3.15 number-of-intervening-jobs (integer(0:MAX)).............107
4.3.14.6 date-time-at-processing (dateTime)...................108 4.3.16 job-message-from-operator (text(127))...................107
4.3.14.7 date-time-at-completed (dateTime)....................108 4.3.17 Job Size Attributes.....................................107
4.3.15 number-of-intervening-jobs (integer(0:MAX)).............108 4.3.17.1 job-k-octets (integer(0:MAX))........................107
4.3.16 job-message-from-operator (text(127))...................108 4.3.17.2 job-impressions (integer(0:MAX)).....................108
4.3.17 Job Size Attributes.....................................108 4.3.17.3 job-media-sheets (integer(0:MAX))....................108
4.3.17.1 job-k-octets (integer(0:MAX))........................109 4.3.18 Job Progress Attributes.................................108
4.3.17.2 job-impressions (integer(0:MAX)).....................109 4.3.18.1 job-k-octets-processed (integer(0:MAX))..............109
4.3.17.3 job-media-sheets (integer(0:MAX))....................109 4.3.18.2 job-impressions-completed (integer(0:MAX))...........109
4.3.18 Job Progress Attributes.................................110 4.3.18.3 job-media-sheets-completed (integer(0:MAX))..........109
4.3.18.1 job-k-octets-processed (integer(0:MAX))..............110 4.3.19 attributes-charset (charset)............................109
4.3.18.2 job-impressions-completed (integer(0:MAX))...........110 4.3.20 attributes-natural-language (naturalLanguage)...........110
4.3.18.3 job-media-sheets-completed (integer(0:MAX))..........110 4.4 Printer Description Attributes..............................110
4.3.19 attributes-charset (charset)............................110 4.4.1 printer-uri-supported (1setOf uri)......................112
4.3.20 attributes-natural-language (naturalLanguage)...........111 4.4.2 uri-authentication-supported (1setOf type2 keyword).....112
4.4 Printer Description Attributes..............................111 4.4.3 uri-security-supported (1setOf type2 keyword)...........113
4.4.1 printer-uri-supported (1setOf uri)......................113 4.4.4 printer-name (name(127))................................115
4.4.2 uri-authentication-supported (1setOf type2 keyword).....113 4.4.5 printer-location (text(127))............................115
4.4.3 uri-security-supported (1setOf type2 keyword)...........114 4.4.6 printer-info (text(127))................................115
4.4.4 printer-name (name(127))................................116 4.4.7 printer-more-info (uri).................................115
4.4.5 printer-location (text(127))............................116 4.4.8 printer-driver-installer (uri)..........................115
4.4.6 printer-info (text(127))................................116 4.4.9 printer-make-and-model (text(127))......................115
4.4.7 printer-more-info (uri).................................116 4.4.10 printer-more-info-manufacturer (uri)....................116
4.4.8 printer-driver-installer (uri)..........................116 4.4.11 printer-state (type1 enum)..............................116
4.4.9 printer-make-and-model (text(127))......................117 4.4.12 printer-state-reasons (1setOf type2 keyword)............116
4.4.10 printer-more-info-manufacturer (uri)....................117 4.4.13 printer-state-message (text(MAX)).......................119
4.4.11 printer-state (type1 enum)..............................117 4.4.14 ipp-versions-supported (1setOf type2 keyword)...........119
4.4.12 printer-state-reasons (1setOf type2 keyword)............117 4.4.15 operations-supported (1setOf type2 enum)................119
4.4.13 printer-state-message (text(MAX)).......................120 4.4.16 multiple-document-jobs-supported (boolean)..............120
4.4.14 ipp-versions-supported (1setOf type2 keyword)...........120 4.4.17 charset-configured (charset)............................120
4.4.15 operations-supported (1setOf type2 enum)................121 4.4.18 charset-supported (1setOf charset)......................121
4.4.16 multiple-document-jobs-supported (boolean)..............121 4.4.19 natural-language-configured (naturalLanguage)...........121
4.4.17 charset-configured (charset)............................122
deBry, Hastings, Herriot, Isaacson, Powell Expires September 1, 2000
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)
122 121
4.4.21 document-format-default (mimeMediaType).................123 4.4.21 document-format-default (mimeMediaType).................122
4.4.22 document-format-supported (1setOf mimeMediaType)........123 4.4.22 document-format-supported (1setOf mimeMediaType)........122
4.4.23 printer-is-accepting-jobs (boolean).....................123 4.4.23 printer-is-accepting-jobs (boolean).....................122
4.4.24 queued-job-count (integer(0:MAX)).......................123 4.4.24 queued-job-count (integer(0:MAX)).......................122
4.4.25 printer-message-from-operator (text(127))...............124 4.4.25 printer-message-from-operator (text(127))...............122
4.4.26 color-supported (boolean)...............................124 4.4.26 color-supported (boolean)...............................122
4.4.27 reference-uri-schemes-supported (1setOf uriScheme)......124 4.4.27 reference-uri-schemes-supported (1setOf uriScheme)......123
4.4.28 pdl-override-supported (type2 keyword)..................124 4.4.28 pdl-override-supported (type2 keyword)..................123
4.4.29 printer-up-time (integer(1:MAX))........................125 4.4.29 printer-up-time (integer(1:MAX))........................123
4.4.30 printer-current-time (dateTime).........................125 4.4.30 printer-current-time (dateTime).........................124
4.4.31 multiple-operation-time-out (integer(1:MAX))............126 4.4.31 multiple-operation-time-out (integer(1:MAX))............124
4.4.32 compression-supported (1setOf type3 keyword)............126 4.4.32 compression-supported (1setOf type3 keyword)............125
4.4.33 job-k-octets-supported (rangeOfInteger(0:MAX))..........126 4.4.33 job-k-octets-supported (rangeOfInteger(0:MAX))..........125
4.4.34 job-impressions-supported (rangeOfInteger(0:MAX)).......126 4.4.34 job-impressions-supported (rangeOfInteger(0:MAX)).......125
4.4.35 job-media-sheets-supported (rangeOfInteger(0:MAX))......127 4.4.35 job-media-sheets-supported (rangeOfInteger(0:MAX))......125
4.4.36 pages-per-minute (integer(0:MAX)).......................127 4.4.36 pages-per-minute (integer(0:MAX)).......................126
4.4.37 pages-per-minute-color (integer(0:MAX)).................127 4.4.37 pages-per-minute-color (integer(0:MAX)).................126
5. Conformance....................................................128 5. Conformance....................................................126
5.1 Client Conformance Requirements.............................128 5.1 Client Conformance Requirements.............................127
5.2 IPP Object Conformance Requirements.........................129 5.2 IPP Object Conformance Requirements.........................128
5.2.1 Objects.................................................129 5.2.1 Objects.................................................128
5.2.2 Operations..............................................129 5.2.2 Operations..............................................128
5.2.3 IPP Object Attributes...................................130 5.2.3 IPP Object Attributes...................................129
5.2.4 Versions................................................130 5.2.4 Versions................................................129
5.2.5 Extensions..............................................131 5.2.5 Extensions..............................................130
5.2.6 Attribute Syntaxes......................................131 5.2.6 Attribute Syntaxes......................................130
5.2.7 Security................................................132 5.2.7 Security................................................130
5.3 Charset and Natural Language Requirements...................132 5.3 Charset and Natural Language Requirements...................131
6. IANA Considerations............................................132 6. IANA Considerations............................................131
6.1 Typed 'keyword' and 'enum' Extensions.......................133 6.1 Typed 'keyword' and 'enum' Extensions.......................132
6.2 Attribute Extensibility.....................................135 6.2 Attribute Extensibility.....................................134
6.3 Attribute Syntax Extensibility..............................135 6.3 Attribute Syntax Extensibility..............................134
6.4 Operation Extensibility.....................................136 6.4 Operation Extensibility.....................................135
6.5 Attribute Group Extensibility...............................136 6.5 Attribute Group Extensibility...............................135
6.6 Status Code Extensibility...................................137 6.6 Status Code Extensibility...................................135
6.7 Out-of-band Attribute Value Extensibility...................137 6.7 Out-of-band Attribute Value Extensibility...................136
6.8 Registration of MIME types/sub-types for document-formats...138 6.8 Registration of MIME types/sub-types for document-formats...136
6.9 Registration of charsets for use in 'charset' attribute values138 6.9 Registration of charsets for use in 'charset' attribute values136
7. Internationalization Considerations............................138 7. Internationalization Considerations............................137
8. Security Considerations........................................142 8. Security Considerations........................................140
8.1 Security Scenarios..........................................143 8.1 Security Scenarios..........................................141
8.1.1 Client and Server in the Same Security Domain...........143 8.1.1 Client and Server in the Same Security Domain...........141
8.1.2 Client and Server in Different Security Domains.........143 8.1.2 Client and Server in Different Security Domains.........141
8.1.3 Print by Reference......................................143 8.1.3 Print by Reference......................................141
8.2 URIs in Operation, Job, and Printer attributes..............143 8.2 URIs in Operation, Job, and Printer attributes..............141
8.3 URIs for each authentication mechanisms.....................142
8.4 Restricted Queries..........................................143
8.5 Operations performed by operators and system administrators.143
deBry, Hastings, Herriot, Isaacson, Powell Expires September 1, 2000
Expires August 23, 2000 8.6 Queries on jobs submitted using non-IPP protocols...........143
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.....................................................146 9. References.....................................................144
10.Author's Address..............................................149 10.Author's Address..............................................147
11.Formats for IPP Registration Proposals........................153 11.Formats for IPP Registration Proposals........................151
11.1Type2 keyword attribute values registration.................153 11.1Type2 keyword attribute values registration.................151
11.2Type3 keyword attribute values registration.................153 11.2Type3 keyword attribute values registration.................151
11.3Type2 enum attribute values registration....................153 11.3Type2 enum attribute values registration....................151
11.4Type3 enum attribute values registration....................154 11.4Type3 enum attribute values registration....................152
11.5Attribute registration......................................154 11.5Attribute registration......................................152
11.6Attribute Syntax registration...............................155 11.6Attribute Syntax registration...............................153
11.7Operation registration......................................155 11.7Operation registration......................................153
11.8Attribute Group registration................................155 11.8Attribute Group registration................................153
11.9Status code registration....................................156 11.9Status code registration....................................154
11.10.......................Out-of-band Attribute Value registration 11.10 Out-of-band Attribute Value registration.............154
156
12.APPENDIX A: Terminology.......................................156 12.APPENDIX A: Terminology.......................................154
12.1Conformance Terminology.....................................156 12.1Conformance Terminology.....................................154
12.1.1 NEED NOT................................................157 12.1.1 NEED NOT................................................154
12.2Model Terminology...........................................157 12.2Model Terminology...........................................155
12.2.1 Keyword.................................................157 12.2.1 Keyword.................................................155
12.2.2 Attributes..............................................157 12.2.2 Attributes..............................................155
12.2.2.1 Attribute Name.......................................157 12.2.2.1 Attribute Name.......................................155
12.2.2.2 Attribute Group Name.................................157 12.2.2.2 Attribute Group Name.................................155
12.2.2.3 Attribute Value......................................157 12.2.2.3 Attribute Value......................................155
12.2.2.4 Attribute Syntax.....................................158 12.2.2.4 Attribute Syntax.....................................156
12.2.3 Supports................................................158 12.2.3 Supports................................................156
12.2.4 print-stream page.......................................160 12.2.4 print-stream page.......................................158
12.2.5 impression..............................................160 12.2.5 impression..............................................158
13.APPENDIX B: Status Codes and Suggested Status Code Messages..160 13.APPENDIX B: Status Codes and Suggested Status Code Messages..158
13.1Status Codes................................................161 13.1Status Codes................................................159
13.1.1 Informational...........................................161 13.1.1 Informational...........................................159
13.1.2 Successful Status Codes.................................161 13.1.2 Successful Status Codes.................................159
13.1.2.1 successful-ok (0x0000)...............................161 13.1.2.1 successful-ok (0x0000)...............................159
13.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001)162 13.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001)159
13.1.2.3 successful-ok-conflicting-attributes (0x0002)........162 13.1.2.3 successful-ok-conflicting-attributes (0x0002)........160
13.1.3 Redirection Status Codes................................162 13.1.3 Redirection Status Codes................................160
13.1.4 Client Error Status Codes...............................162 13.1.4 Client Error Status Codes...............................160
13.1.4.1 client-error-bad-request (0x0400)....................162 13.1.4.1 client-error-bad-request (0x0400)....................160
13.1.4.2 client-error-forbidden (0x0401)......................163 13.1.4.2 client-error-forbidden (0x0401)......................160
13.1.4.3 client-error-not-authenticated (0x0402)..............163 13.1.4.3 client-error-not-authenticated (0x0402)..............161
13.1.4.4 client-error-not-authorized (0x0403).................163 13.1.4.4 client-error-not-authorized (0x0403).................161
13.1.4.5 client-error-not-possible (0x0404)...................163 13.1.4.5 client-error-not-possible (0x0404)...................161
13.1.4.6 client-error-timeout (0x0405)........................163 13.1.4.6 client-error-timeout (0x0405)........................161
13.1.4.7 client-error-not-found (0x0406)......................164 13.1.4.7 client-error-not-found (0x0406)......................161
13.1.4.8 client-error-gone (0x0407)...........................164 13.1.4.8 client-error-gone (0x0407)...........................162
13.1.4.9 client-error-request-entity-too-large (0x0408).......162
13.1.4.10client-error-request-value-too-long (0x0409).........162
13.1.4.11client-error-document-format-not-supported (0x040A)..163
13.1.4.12client-error-attributes-or-values-not-supported (0x040B)163
13.1.4.13client-error-uri-scheme-not-supported (0x040C).......163
deBry, Hastings, Herriot, Isaacson, Powell Expires September 1, 2000
Expires August 23, 2000 13.1.4.14client-error-charset-not-supported (0x040D)..........163
13.1.4.9 client-error-request-entity-too-large (0x0408).......164 13.1.4.15client-error-conflicting-attributes (0x040E).........164
13.1.4.10client-error-request-value-too-long (0x0409).........164 13.1.4.16client-error-compression-not-supported (0x040F)......164
13.1.4.11client-error-document-format-not-supported (0x040A)..165 13.1.4.17client-error-compression-error (0x0410)..............164
13.1.4.12client-error-attributes-or-values-not-supported (0x040B)165 13.1.4.18client-error-document-format-error (0x0411)..........164
13.1.4.13client-error-uri-scheme-not-supported (0x040C).......166 13.1.4.19client-error-document-access-error (0x0412)..........164
13.1.4.14client-error-charset-not-supported (0x040D)..........166 13.1.5 Server Error Status Codes...............................165
13.1.4.15client-error-conflicting-attributes (0x040E).........166 13.1.5.1 server-error-internal-error (0x0500).................165
13.1.4.16client-error-compression-not-supported (0x040F)......166 13.1.5.2 server-error-operation-not-supported (0x0501)........165
13.1.4.17client-error-compression-error (0x0410)..............166 13.1.5.3 server-error-service-unavailable (0x0502)............165
13.1.4.18client-error-document-format-error (0x0411)..........166 13.1.5.4 server-error-version-not-supported (0x0503)..........165
13.1.4.19client-error-document-access-error (0x0412)..........167 13.1.5.5 server-error-device-error (0x0504)...................166
13.1.5 Server Error Status Codes...............................167 13.1.5.6 server-error-temporary-error (0x0505)................166
13.1.5.1 server-error-internal-error (0x0500).................167 13.1.5.7 server-error-not-accepting-jobs (0x0506).............166
13.1.5.2 server-error-operation-not-supported (0x0501)........167 13.1.5.8 server-error-busy (0x0507)...........................166
13.1.5.3 server-error-service-unavailable (0x0502)............167 13.1.5.9 server-error-job-canceled (0x0508)...................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)
169 167
13.2Status Codes for IPP Operations.............................170 13.2Status Codes for IPP Operations.............................168
14.APPENDIX C: "media" keyword values...........................172 14.APPENDIX C: "media" keyword values...........................170
15.APPENDIX D: Processing IPP Attributes.........................194 15.APPENDIX D: Processing IPP Attributes.........................191
15.1Fidelity....................................................194 15.1Fidelity....................................................191
15.2Page Description Language (PDL) Override....................195 15.2Page Description Language (PDL) Override....................192
15.3Using Job Template Attributes During Document Processing....197 15.3Using Job Template Attributes During Document Processing....194
16.APPENDIX E: Generic Directory Schema..........................198 16.APPENDIX E: Generic Directory Schema..........................195
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..............................................201 Semantics" Documents..............................................198
18.Full Copyright Statement......................................207 18.Full Copyright Statement......................................204
deBry, Hastings, Herriot, Isaacson, Powell Expires September 1, 2000
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 primarily on end user technologies. IPP version 1.1 (IPP/1.1) focuses primarily on end user
functionality with a few administrative operations included. This functionality with a few administrative operations included. This
document is just one of a suite of documents that fully define IPP. The document is just one of a suite of documents that fully define IPP. The
full set of IPP documents includes: full set of IPP documents includes:
skipping to change at page 9, line 59 skipping to change at page 9, line 60
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 September 1, 2000
- 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 10, line 50 skipping to change at page 11, line 5
Each object type has an associated set of operations (see section 3) and Each object type has an associated set of operations (see section 3) and
attributes (see section 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.
deBry, Hastings, Herriot, Isaacson, Powell Expires September 1, 2000
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 11, line 57 skipping to change at page 12, line 5
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
deBry, Hastings, Herriot, Isaacson, Powell Expires September 1, 2000
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 12, line 58 skipping to change at page 13, line 5
Each attribute included in the set of attributes defining an object type Each attribute included in the set of attributes defining an object type
is labeled as: is labeled as:
- "REQUIRED": each object MUST support the attribute. - "REQUIRED": each object MUST support the attribute.
- "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.
deBry, Hastings, Herriot, Isaacson, Powell Expires September 1, 2000
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 13, line 59 skipping to change at page 14, line 5
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
deBry, Hastings, Herriot, Isaacson, Powell Expires September 1, 2000
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).
deBry, Hastings, Herriot, Isaacson, Powell Expires September 1, 2000
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 15, line 53 skipping to change at page 16, line 5
2.2 Job Object 2.2 Job Object
A Job object is used to model a print job. A Job object contains A Job object is used to model a print job. A Job object contains
documents. The information required to create a Job object is sent in a documents. The information required to create a Job object is sent in a
create request from the end user via an IPP Client to the Printer create request from the end user via an IPP Client to the Printer
object. The Printer object validates the create request, and if the object. The Printer object validates the create request, and if the
Printer object accepts the request, the Printer object creates the new Printer object accepts the request, the Printer object creates the new
Job object. Section 3 describes each of the Job operations in detail. Job object. Section 3 describes each of the Job operations in detail.
deBry, Hastings, Herriot, Isaacson, Powell Expires September 1, 2000
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 16, line 59 skipping to change at page 17, line 5
(see section 2.4). (see section 2.4).
A Job object is either empty (before any documents have been added) or A Job object is either empty (before any documents have been added) or
contains one or more documents. If the contained document is a stream contains one or more documents. If the contained document is a stream
of document data, that stream can be contained in only one document. of document data, that stream can be contained in only one document.
However, there can be identical copies of the stream in other documents However, there can be identical copies of the stream in other documents
in the same or different Job objects. If the contained document is just in the same or different Job objects. If the contained document is just
a reference to a stream of document data, other documents (in the same a reference to a stream of document data, other documents (in the same
or different Job object(s)) may contain the same reference. or different Job object(s)) may contain the same reference.
deBry, Hastings, Herriot, Isaacson, Powell Expires September 1, 2000
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 57 skipping to change at page 17, line 58
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 September 1, 2000
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 59 skipping to change at page 18, line 58
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 September 1, 2000
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 58 skipping to change at page 19, line 56
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 September 1, 2000
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 56 skipping to change at page 20, line 55
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 September 1, 2000
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:
skipping to change at page 21, line 58 skipping to change at page 21, line 53
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 September 1, 2000
- 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 59 skipping to change at page 22, line 51
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 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 same name occurs more than once, the group is mal-formed. Clients MUST
Expires September 1, 2000
NOT submit such malformed requests and Printers MUST NOT return such NOT submit such malformed requests and Printers MUST NOT return such
malformed responses. If such a malformed request is submitted to a malformed responses. If such a malformed request is submitted to a
Printer, the Printer MUST either (1) reject the request with the 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) '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 process the request normally after selecting only one of the attribute
instances, depending on implementation. Which attribute is selected instances, depending on implementation. Which attribute is selected
when there are duplicate attributes depends on implementation. The IPP when there are duplicate attributes depends on implementation. The IPP
Printer MUST NOT use the values from more than one such duplicate Printer MUST NOT use the values from more than one such duplicate
attribute instance. attribute instance.
skipping to change at page 23, line 58 skipping to change at page 23, line 51
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
Expires September 1, 2000
operation attribute descriptions are not repeated with every operation operation attribute descriptions are not repeated with every operation
request and response, but have a reference back to this section instead. request and response, but have a reference back to this section instead.
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
skipping to change at page 24, line 59 skipping to change at page 24, line 51
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'
Expires September 1, 2000
attributes and status messages that the Printer object returns in attributes and status messages that the Printer object returns in
the response to this request. the response to this request.
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.
skipping to change at page 25, line 58 skipping to change at page 25, line 50
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.
Expires September 1, 2000
Each value whose attribute syntax type is 'text' or 'name' (see Each value whose attribute syntax type is 'text' or 'name' (see
sections 4.1.1 and 4.1.2) has an Associated Natural-Language. This sections 4.1.1 and 4.1.2) has an Associated Natural-Language. This
document does not specify how this association is stored in a document does not specify how this association is stored in a
Printer or Job object. When such a value is encoded in a request Printer or Job object. When such a value is encoded in a request
or response, the natural language is either implicit or explicit: or response, the natural language is either implicit or explicit:
@ In the implicit case, the value contains only the text/name @ In the implicit case, the value contains only the text/name
value, and the language is specified by the "attributes- value, and the language is specified by the "attributes-
natural-language" operation attribute in the request or natural-language" operation attribute in the request or
response (see sections 4.1.1.1 textWithoutLanguage and 4.1.2.1 response (see sections 4.1.1.1 textWithoutLanguage and 4.1.2.1
skipping to change at page 26, line 56 skipping to change at page 26, line 47
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:
- In a create request: If the client supplies a text or name - In a create request: If the client supplies a text or name
attribute (for example, the "job-name" operation attribute) that attribute (for example, the "job-name" operation attribute) that
uses an apparently incompatible combination, it is a client choice uses an apparently incompatible combination, it is a client choice
Expires September 1, 2000
that does not affect the Printer object or its correct operation. that does not affect the Printer object or its correct operation.
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.
skipping to change at page 27, line 59 skipping to change at page 27, line 46
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
information during code conversion. On each response, such an information during code conversion. On each response, such an
implementation converts from its internal charset to that implementation converts from its internal charset to that
requested. requested.
Expires September 1, 2000
"attributes-natural-language" (naturalLanguage): "attributes-natural-language" (naturalLanguage):
This operation attribute identifies the natural language used by This operation attribute identifies the natural language used by
any 'text' and 'name' attributes that the IPP object is returning any 'text' and 'name' attributes that the IPP object is returning
in this response. Unlike the "attributes-charset" operation in this response. Unlike the "attributes-charset" operation
attribute, the IPP object NEED NOT return the same value as that attribute, the IPP object NEED NOT return the same value as that
supplied by the client in the request. The IPP object MAY return supplied by the client in the request. The IPP object MAY return
the natural language of the Job object or the Printer's configured the natural language of the Job object or the Printer's configured
natural language as identified by the Printer object's "natural- natural language as identified by the Printer object's "natural-
language-configured" attribute, rather than the natural language language-configured" attribute, rather than the natural language
supplied by the client. For any 'text' or 'name' attribute or supplied by the client. For any 'text' or 'name' attribute or
skipping to change at page 28, line 58 skipping to change at page 28, line 45
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
attributes are specially ordered operation attributes. In all cases, attributes are specially ordered operation attributes. In all cases,
the operation target attributes immediately follow the "attributes- the operation target attributes immediately follow the "attributes-
charset" and "attributes-natural-language" attributes within the charset" and "attributes-natural-language" attributes within the
operation attribute group, however the specific ordering rules are: operation attribute group, however the specific ordering rules are:
Expires September 1, 2000
- In the case where there is only one operation target attribute - In the case where there is only one operation target attribute
(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
skipping to change at page 29, line 55 skipping to change at page 29, line 41
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)
The REQUIRED "status-code" parameter provides information on the The REQUIRED "status-code" parameter provides information on the
processing of a request. processing of a request.
The status code is intended for use by automata. A client The status code is intended for use by automata. A client
implementation of IPP SHOULD convert status code values into any implementation of IPP SHOULD convert status code values into any
localized message that has semantic meaning to the end user. localized message that has semantic meaning to the end user.
Expires September 1, 2000
The "status-code" value is a numeric value that has semantic meaning. The "status-code" value is a numeric value that has semantic meaning.
The "status-code" syntax is similar to a "type2 enum" (see section 4.1 The "status-code" syntax is similar to a "type2 enum" (see section 4.1
on "Attribute Syntaxes") except that values can range only from 0x0000 on "Attribute Syntaxes") except that values can range only from 0x0000
to 0x7FFF. Section 13 describes the status codes, assigns the numeric to 0x7FFF. Section 13 describes the status codes, assigns the numeric
values, and suggests a corresponding status message for each status 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.
skipping to change at page 30, line 58 skipping to change at page 30, line 42
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,
the Printer object MUST be able to generate this message in any of the the Printer object MUST be able to generate this message in any of the
natural languages identified by the Printer object's "generated-natural- natural languages identified by the Printer object's "generated-natural-
language-supported" attribute (see the "attributes-natural-language" language-supported" attribute (see the "attributes-natural-language"
operation attribute specified in section 3.1.4.1. Section 13 suggests operation attribute specified in section 3.1.4.1. Section 13 suggests
the text for the status message returned by the Printer for use with the the text for the status message returned by the Printer for use with the
English natural language. English natural language.
Expires September 1, 2000
As described in section 3.1.4.1 for any returned 'text' attribute, if As described in section 3.1.4.1 for any returned 'text' attribute, if
there is a choice for generating this message, the Printer object uses there is a choice for generating this message, the Printer object uses
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-
skipping to change at page 31, line 58 skipping to change at page 31, line 42
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.
3.1.7 Unsupported Attributes 3.1.7 Unsupported Attributes
The Unsupported Attributes group contains attributes that are not The Unsupported Attributes group contains attributes that are not
supported by the operation. This group is primarily for the job creation supported by the operation. This group is primarily for the job creation
operations, but all operations can return this group. operations, but all operations can return this group.
Expires September 1, 2000
A Printer object MUST include an Unsupported Attributes group in a A Printer object MUST include an Unsupported Attributes group in a
response if the status code is one of the following: 'successful-ok- response if the status code is one of the following: 'successful-ok-
ignored-or-substituted-attributes', 'successful-ok-conflicting- ignored-or-substituted-attributes', 'successful-ok-conflicting-
attributes', 'client-error-attributes-or-values-not-supported' or attributes', 'client-error-attributes-or-values-not-supported' or
'client-error-conflicting-attributes'. 'client-error-conflicting-attributes'.
If the status code is one of the four specified in the preceding If the status code is one of the four specified in the preceding
paragraph, the Unsupported Attributes group MUST contain all of those paragraph, the Unsupported Attributes group MUST contain all of those
attributes and only those attributes that are: attributes and only those attributes that are:
a. an Operation or Job Template attribute supplied in the request, and a. an Operation or Job Template attribute supplied in the request, and
b. unsupported by the printer. See below for details on the three 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 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 Unsupported Attributes group NEED NOT contain the unsupported parameter
or attribute indicated in that table. 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:
skipping to change at page 32, line 59 skipping to change at page 32, line 43
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).
In the case of a supported attribute with one or more unsupported In the case of a supported attribute with one or more unsupported
attribute syntaxes or values, the Printer object simply returns the attribute syntaxes or values, the Printer object simply returns the
client-supplied attribute with the unsupported attribute syntaxes or client-supplied attribute with the unsupported attribute syntaxes or
values as supplied by the client. This indicates support for the values as supplied by the client. This indicates support for the
attribute, but no support for that particular attribute syntax or value. attribute, but no support for that particular attribute syntax or value.
If the client supplies a multi-valued attribute with more than one value If the client supplies a multi-valued attribute with more than one value
and the Printer object supports the attribute but only supports a subset and the Printer object supports the attribute but only supports a subset
of the client-supplied attribute syntaxes or values, the Printer object of the client-supplied attribute syntaxes or values, the Printer object
Expires September 1, 2000
MUST return only those attribute syntaxes or values that are MUST return only those attribute syntaxes or values that are
unsupported. unsupported.
In the case of two (or more) supported attribute values that are in In the case of two (or more) supported attribute values that are in
conflict with one another (although each is supported independently, 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
skipping to change at page 33, line 56 skipping to change at page 33, line 40
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.
An IPP object implementation MUST support version '1.1', i.e., meet the An IPP object implementation MUST support version '1.1', i.e., meet the
conformance requirements for IPP/1.1 as specified in this document and conformance requirements for IPP/1.1 as specified in this document and
[IPP-PRO]. It is recommended that IPP object implementations accept any [IPP-PRO]. It is recommended that IPP object implementations accept any
request with the major version '1' (or reject the request if the request with the major version '1' (or reject the request if the
operation is not supported). operation is not supported).
There is only one notion of "version number" that covers both IPP Model There is only one notion of "version number" that covers both IPP Model
and IPP Protocol changes. Thus the version number MUST change when and IPP Protocol changes. Thus the version number MUST change when
introducing a new version of the Model and Semantics document (this introducing a new version of the Model and Semantics document (this
Expires September 1, 2000
document) or a new version of the "Encoding and Transport" document document) or a new version of the "Encoding and Transport" document
[IPP-PRO]. [IPP-PRO].
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
skipping to change at page 34, line 59 skipping to change at page 34, line 40
- 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 26 skipping to change at page 35, line 4
- adding OPTIONAL operations - adding OPTIONAL operations
- changing Job Description attributes or Printer Description - changing Job Description attributes or Printer Description
attributes from OPTIONAL to REQUIRED or vice versa. attributes from OPTIONAL to REQUIRED or vice versa.
- adding OPTIONAL attribute syntaxes to an existing attribute. - adding OPTIONAL attribute syntaxes to an existing attribute.
The encoding of the "version-number" MUST NOT change over any version The encoding of the "version-number" MUST NOT change over any version
number (either major or minor). This rule guarantees that all future number (either major or minor). This rule guarantees that all future
versions will be backwards compatible with all previous versions (at versions will be backwards compatible with all previous versions (at
least for checking the "version-number"). In addition, any protocol least for checking the "version-number"). In addition, any protocol
elements (attributes, error codes, tags, etc.) that are not carried elements (attributes, error codes, tags, etc.) that are not carried
Expires September 1, 2000
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.
3.1.9 Job Creation Operations 3.1.9 Job Creation Operations
skipping to change at page 35, line 58 skipping to change at page 35, line 39
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 26 skipping to change at page 36, line 4
A Create-Job operation followed by only one Send-Document operation is A Create-Job operation followed by only one Send-Document operation is
semantically equivalent to a Print-Job operation, however, for semantically equivalent to a Print-Job operation, however, for
performance reasons, the client SHOULD use the Print-Job operation for performance reasons, the client SHOULD use the Print-Job operation for
all single document jobs. Also, Print-Job is a REQUIRED operation (all all single document jobs. Also, Print-Job is a REQUIRED operation (all
implementations MUST support it) whereas Create-Job is an OPTIONAL implementations MUST support it) whereas Create-Job is an OPTIONAL
operation, hence some implementations might not support it. operation, hence some implementations might not support it.
Job submission time is the point in time when a client issues a create Job submission time is the point in time when a client issues a create
request. The initial state of every Job object is the 'pending', request. The initial state of every Job object is the 'pending',
Expires September 1, 2000
'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:
1. Process the client supplied attributes and either accept or reject 1. Process the client supplied attributes and either accept or reject
skipping to change at page 36, line 57 skipping to change at page 36, line 38
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 29 skipping to change at page 37, line 4
Printer, MAY accept jobs that it does not have enough space for. In Printer, MAY accept jobs that it does not have enough space for. In
such a situation, a Printer object MAY stop reading data from a client such a situation, a Printer object MAY stop reading data from a client
for an indefinite period of time. A client MUST be prepared for a write for an indefinite period of time. A client MUST be prepared for a write
operation to block for an indefinite period of time (see section 5.1 on operation to block for an indefinite period of time (see section 5.1 on
client conformance). client conformance).
When a Printer object has too little space for starting a new job, it When a Printer object has too little space for starting a new job, it
MAY reject a new create request. In this case, a Printer object MUST MAY reject a new create request. In this case, a Printer object MUST
return a response (in reply to the rejected request) with a status-code return a response (in reply to the rejected request) with a status-code
of 'server-error-busy' (see section 14.1.5.8) and it MAY close the of 'server-error-busy' (see section 14.1.5.8) and it MAY close the
Expires September 1, 2000
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
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
skipping to change at page 37, line 53 skipping to change at page 37, line 31
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 32 skipping to change at page 38, line 5
Request: Request:
Group 1: Operation Attributes Group 1: Operation Attributes
Natural Language and Character Set: Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" The "attributes-charset" and "attributes-natural-language"
attributes as described in section 3.1.4.1. The Printer object attributes as described in section 3.1.4.1. The Printer object
MUST copy these values to the corresponding Job Description MUST copy these values to the corresponding Job Description
attributes described in sections 4.3.19 and 4.3.20. attributes described in sections 4.3.19 and 4.3.20.
Expires September 1, 2000
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.
"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
skipping to change at page 38, line 58 skipping to change at page 38, line 32
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)):
skipping to change at page 39, line 32 skipping to change at page 39, line 4
Examples include: printed along with the Job (job start sheet, page Examples include: printed along with the Job (job start sheet, page
adornments, etc.), used by accounting or resource tracking adornments, etc.), used by accounting or resource tracking
management tools, or even stored along with the document as a management tools, or even stored along with the document as a
document level attribute. IPP/1.1 does not support the concept of document level attribute. IPP/1.1 does not support the concept of
document level attributes. document level attributes.
"compression" (type3 keyword) "compression" (type3 keyword)
The client OPTIONALLY supplies this attribute. The Printer object The client OPTIONALLY supplies this attribute. The Printer object
MUST support this attribute and the "compression-supported" MUST support this attribute and the "compression-supported"
attribute (see section 4.4.32). The client supplied "compression" attribute (see section 4.4.32). The client supplied "compression"
Expires September 1, 2000
operation attribute identifies the compression algorithm used on operation attribute identifies the compression algorithm used on
the document data. The following cases exist: the document data. The following cases exist:
a)If the client omits this attribute, the Printer object MUST a)If the client omits this attribute, the Printer object MUST
assume that the data is not compressed (i.e. the Printer assume that the data is not compressed (i.e. the Printer
follows the rules below as if the client supplied the follows the rules below as if the client supplied the
"compression" attribute with a value of 'none'). "compression" attribute with a value of 'none').
b)If the client supplies this attribute, but the value is not b)If the client supplies this attribute, but the value is not
supported by the Printer object, i.e., the value is not one supported by the Printer object, i.e., the value is not one
of the values of the Printer object's "compression- of the values of the Printer object's "compression-
supported" attribute, the Printer object MUST reject the supported" attribute, the Printer object MUST reject the
skipping to change at page 39, line 58 skipping to change at page 39, line 32
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 33 skipping to change at page 40, line 4
request and return the 'client-error-document-format-not- request and return the 'client-error-document-format-not-
supported' status code. supported' status code.
c)If the client supplies this attribute and its value is c)If the client supplies this attribute and its value is
'application/octet-stream' (i.e. to be auto-sensed, see 'application/octet-stream' (i.e. to be auto-sensed, see
Section 4.1.9.1), and the format is not one of the Section 4.1.9.1), and the format is not one of the
document-formats that the Printer can auto-sense, and this document-formats that the Printer can auto-sense, and this
check occurs before the Printer returns an operation check occurs before the Printer returns an operation
response, then the Printer MUST reject the request and response, then the Printer MUST reject the request and
return the 'client-error-document-format-not-supported' return the 'client-error-document-format-not-supported'
status code. status code.
Expires September 1, 2000
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
MUST abort the job and add the 'document-format-error' MUST abort the job and add the 'document-format-error'
skipping to change at page 40, line 58 skipping to change at page 40, line 31
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 34 skipping to change at page 41, line 4
attributes-or-values-not-supported' status code. If the client attributes-or-values-not-supported' status code. If the client
does not supply the attribute, the Printer object MAY choose to does not supply the attribute, the Printer object MAY choose to
populate the corresponding Job object attribute depending on populate the corresponding Job object attribute depending on
whether the Printer object supports the attribute and is able to whether the Printer object supports the attribute and is able to
calculate or discern the correct value. calculate or discern the correct value.
"job-impressions" (integer(0:MAX)) "job-impressions" (integer(0:MAX))
The client OPTIONALLY supplies this attribute. The Printer object The client OPTIONALLY supplies this attribute. The Printer object
OPTIONALLY supports this attribute and the "job-impressions- OPTIONALLY supports this attribute and the "job-impressions-
supported" attribute (see section 4.4.34). The client supplied supported" attribute (see section 4.4.34). The client supplied
Expires September 1, 2000
"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".
"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
skipping to change at page 41, line 58 skipping to change at page 41, line 30
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 34 skipping to change at page 42, line 5
supplied by the client as IPP attribute or embedded instructions in supplied by the client as IPP attribute or embedded instructions in
the document data. the document data.
3.2.1.2 Print-Job Response 3.2.1.2 Print-Job Response
The Printer object MUST return to the client the following sets of The Printer object MUST return to the client the following sets of
attributes as part of the Print-Job Response: attributes as part of the Print-Job Response:
Group 1: Operation Attributes Group 1: Operation Attributes
Expires September 1, 2000
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
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
skipping to change at page 42, line 58 skipping to change at page 42, line 30
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 33 skipping to change at page 43, line 5
over a secure channel, the Printer object MUST generate a Job URI over a secure channel, the Printer object MUST generate a Job URI
that uses the secure channel as well. that uses the secure channel as well.
"job-id" (integer(1:MAX)): "job-id" (integer(1:MAX)):
The Printer object MUST return the Job object's Job ID by returning The Printer object MUST return the Job object's Job ID by returning
the REQUIRED "job-id" Job object attribute. The client uses this the REQUIRED "job-id" Job object attribute. The client uses this
"job-id" attribute in conjunction with the "printer-uri" attribute "job-id" attribute in conjunction with the "printer-uri" attribute
used in the Print-Job Request when directing Job operations at the used in the Print-Job Request when directing Job operations at the
Printer object. Printer object.
Expires September 1, 2000
"job-state": "job-state":
The Printer object MUST return the Job object's REQUIRED "job- The Printer object MUST return the Job object's REQUIRED "job-
state" attribute. The value of this attribute (along with the value state" attribute. The value of this attribute (along with the value
of the next attribute: "job-state-reasons") is taken from a of the next attribute: "job-state-reasons") is taken from a
"snapshot" of the new Job object at some meaningful point in time "snapshot" of the new Job object at some meaningful point in time
(implementation defined) between when the Printer object receives (implementation defined) between when the Printer object receives
the Print-Job Request and when the Printer object returns the the Print-Job Request and when the Printer object returns the
response. response.
"job-state-reasons": "job-state-reasons":
skipping to change at page 43, line 58 skipping to change at page 43, line 31
"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 33 skipping to change at page 44, line 4
3.2.2 Print-URI Operation 3.2.2 Print-URI Operation
This OPTIONAL operation is identical to the Print-Job operation (section This OPTIONAL operation is identical to the Print-Job operation (section
3.2.1) except that a client supplies a URI reference to the document 3.2.1) except that a client supplies a URI reference to the document
data using the "document-uri" (uri) operation attribute (in Group 1) data using the "document-uri" (uri) operation attribute (in Group 1)
rather than including the document data itself. Before returning the rather than including the document data itself. Before returning the
response, the Printer MUST validate that the Printer supports the response, the Printer MUST validate that the Printer supports the
retrieval method (e.g., http, ftp, etc.) implied by the URI, and MUST retrieval method (e.g., http, ftp, etc.) implied by the URI, and MUST
check for valid URI syntax. If the client-supplied URI scheme is not check for valid URI syntax. If the client-supplied URI scheme is not
supported, i.e. the value is not in the Printer object's "referenced- supported, i.e. the value is not in the Printer object's "referenced-
Expires September 1, 2000
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
using the "document-access-error" operation attribute (see section using the "document-access-error" operation attribute (see section
skipping to change at page 44, line 57 skipping to change at page 44, line 31
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 33 skipping to change at page 45, line 5
The Validate-Job operation does not accept a "document-uri" attribute in The Validate-Job operation does not accept a "document-uri" attribute in
order to allow a client to check that the same Print-URI operation will order to allow a client to check that the same Print-URI operation will
be accepted, since the client doesn't send the data with the Print-URI be accepted, since the client doesn't send the data with the Print-URI
operation. The client SHOULD just issue the Print-URI request. operation. The client SHOULD just issue the Print-URI request.
The Printer object returns the same status codes, Operation Attributes The Printer object returns the same status codes, Operation Attributes
(Group 1) and Unsupported Attributes (Group 2) as the Print-Job (Group 1) and Unsupported Attributes (Group 2) as the Print-Job
operation. However, no Job Object Attributes (Group 3) are returned, operation. However, no Job Object Attributes (Group 3) are returned,
since no Job object is created. since no Job object is created.
Expires September 1, 2000
3.2.4 Create-Job Operation 3.2.4 Create-Job Operation
This OPTIONAL operation is similar to the Print-Job operation (section This OPTIONAL operation is similar to the Print-Job operation (section
3.2.1) except that in the Create-Job request, a client does not supply 3.2.1) except that in the Create-Job request, a client does not supply
document data or any reference to document data. Also, the client does document data or any reference to document data. Also, the client does
not supply any of the "document-name", "document-format", "compression", not supply any of the "document-name", "document-format", "compression",
or "document-natural-language" operation attributes. This operation is or "document-natural-language" operation attributes. This operation is
followed by one or more Send-Document or Send-URI operations. In each followed by one or more Send-Document or Send-URI operations. In each
of those operation requests, the client OPTIONALLY supplies the of those operation requests, the client OPTIONALLY supplies the
"document-name", "document-format", and "document-natural-language" "document-name", "document-format", and "document-natural-language"
skipping to change at page 45, line 57 skipping to change at page 45, line 31
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 34 skipping to change at page 46, line 5
This REQUIRED operation allows a client to request the values of the This REQUIRED operation allows a client to request the values of the
attributes of a Printer object. In the request, the client supplies attributes of a Printer object. In the request, the client supplies
the set of Printer attribute names and/or attribute group names in which the set of Printer attribute names and/or attribute group names in which
the requester is interested. In the response, the Printer object the requester is interested. In the response, the Printer object
returns a corresponding attribute set with the appropriate attribute returns a corresponding attribute set with the appropriate attribute
values filled in. values filled in.
For Printer objects, the possible names of attribute groups are: For Printer objects, the possible names of attribute groups are:
Expires September 1, 2000
- 'job-template': the subset of the Job Template attributes that - 'job-template': the subset of the Job Template attributes that
apply to a Printer object (the last two columns of the table in apply to a Printer object (the last two columns of the table in
Section 4.2) that the implementation supports for Printer objects. Section 4.2) that the implementation supports for Printer objects.
- 'printer-description': the subset of the attributes specified in - 'printer-description': the subset of the attributes specified in
Section 4.4 that the implementation supports for Printer objects. Section 4.4 that the implementation supports for Printer objects.
- 'all': the special group 'all' that includes all attributes that - 'all': the special group 'all' that includes all attributes that
the implementation supports for Printer objects. 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
skipping to change at page 46, line 55 skipping to change at page 46, line 27
the "printer-name" attribute twice: once by naming it explicitly, and the "printer-name" attribute twice: once by naming it explicitly, and
once by inclusion in the 'all' group. In such cases, the Printer object once by inclusion in the 'all' group. In such cases, the Printer object
NEED NOT return each attribute only once in the response even if it is NEED NOT return each attribute only once in the response even if it is
requested multiple times. The client SHOULD NOT request the same requested multiple times. The client SHOULD NOT request the same
attribute in multiple ways. attribute in multiple ways.
It is NOT REQUIRED that a Printer object support all attributes It is NOT REQUIRED that a Printer object support all attributes
belonging to a group (since some attributes are OPTIONAL). However, it belonging to a group (since some attributes are OPTIONAL). However, it
is REQUIRED that each Printer object support all group names. is REQUIRED that each Printer object support all group names.
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 38 skipping to change at page 47, line 4
The Printer object MUST support this attribute. If the client The Printer object MUST support this attribute. If the client
omits this attribute, the Printer MUST respond as if this attribute omits this attribute, the Printer MUST respond as if this attribute
had been supplied with a value of 'all'. had been supplied with a value of 'all'.
"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. This attribute is useful for a MUST support this attribute. This attribute is useful for a
Printer object to determine the set of supported attribute values Printer object to determine the set of supported attribute values
that relate to the requested document format. The Printer object that relate to the requested document format. The Printer object
MUST return the attributes and values that it uses to validate a MUST return the attributes and values that it uses to validate a
Expires September 1, 2000
job on a create or Validate-Job operation in which this document job on a create or Validate-Job operation in which this document
format is supplied. The Printer object SHOULD return only (1) those format is supplied. The Printer object SHOULD return only (1) those
attributes that are supported for the specified format and (2) the attributes that are supported for the specified format and (2) the
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
skipping to change at page 47, line 59 skipping to change at page 47, line 27
'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
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 38 skipping to change at page 48, line 5
Printer object MUST respond as if the attribute had been supplied Printer object MUST respond as if the attribute had been supplied
with the value of the Printer object's "document-format-default" with the value of the Printer object's "document-format-default"
attribute. It is recommended that the client always supply a value attribute. It is recommended that the client always supply a value
for "document-format", since the Printer object's "document-format- for "document-format", since the Printer object's "document-format-
default" may be 'application/octet-stream', in which case the default" may be 'application/octet-stream', in which case the
returned attributes and values are for the union of the document returned attributes and values are for the union of the document
formats that the Printer can automatically sense. For more formats that the Printer can automatically sense. For more
details, see the description of the 'mimeMediaType' attribute details, see the description of the 'mimeMediaType' attribute
syntax in section 4.1.9. syntax in section 4.1.9.
Expires September 1, 2000
If the client supplies a value for the "document-format" Operation If the client supplies a value for the "document-format" Operation
attribute that is not supported by the Printer, i.e., is not among attribute that is not supported by the Printer, i.e., is not among
the values of the Printer object's "document-format-supported" the values of the Printer object's "document-format-supported"
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
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 37 skipping to change at page 49, line 5
with a subset of the supported attributes and values, depending on with a subset of the supported attributes and values, depending on
the security policy in force. However, the Printer object MUST the security policy in force. However, the Printer object MUST
respond with the 'unknown' value for any supported attribute respond with the 'unknown' value for any supported attribute
(including all REQUIRED attributes) for which the Printer object (including all REQUIRED attributes) for which the Printer object
does not know the value. Also the Printer object MUST respond with does not know the value. Also the Printer object MUST respond with
the 'no-value' for any supported attribute (including all REQUIRED the 'no-value' for any supported attribute (including all REQUIRED
attributes) for which the system administrator has not configured a attributes) for which the system administrator has not configured a
value. See the description of the "out-of-band" values in the value. See the description of the "out-of-band" values in the
beginning of Section 4.1. beginning of Section 4.1.
Expires September 1, 2000
3.2.6 Get-Jobs Operation 3.2.6 Get-Jobs Operation
This REQUIRED operation allows a client to retrieve the list of Job This REQUIRED operation allows a client to retrieve the list of Job
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).
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 50, line 40 skipping to change at page 50, line 4
applicable jobs. applicable jobs.
"requested-attributes" (1setOf keyword): "requested-attributes" (1setOf keyword):
The client OPTIONALLY supplies this attribute. The Printer object The client OPTIONALLY supplies this attribute. The Printer object
MUST support this attribute. It is a set of Job attribute names MUST support this attribute. It is a set of Job attribute names
and/or attribute groups names in whose values the requester is and/or attribute groups names in whose values the requester is
interested. This set of attributes is returned for each Job object interested. This set of attributes is returned for each Job object
that is returned. The allowed attribute group names are the same that is returned. The allowed attribute group names are the same
as those defined in the Get-Job-Attributes operation in section as those defined in the Get-Job-Attributes operation in section
3.3.4. If the client does not supply this attribute, the Printer 3.3.4. If the client does not supply this attribute, the Printer
Expires September 1, 2000
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" (type2 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'.
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 38 skipping to change at page 51, line 4
the attribute values supplied by the client in the request. It is the attribute values supplied by the client in the request. It is
possible that no Job objects are returned since there may literally be possible that no Job objects are returned since there may literally be
no Job objects at the Printer, or there may be no Job objects that match no Job objects at the Printer, or there may be no Job objects that match
the criteria supplied by the client. If the client requests any Job the criteria supplied by the client. If the client requests any Job
attributes at all, there is a set of Job Object Attributes returned for attributes at all, there is a set of Job Object Attributes returned for
each Job object. each Job object.
It is not an error for the Printer to return 0 jobs. If the response It is not an error for the Printer to return 0 jobs. If the response
returns 0 jobs because there are no jobs matching the criteria, and the returns 0 jobs because there are no jobs matching the criteria, and the
request would have returned 1 or more jobs with a status code of request would have returned 1 or more jobs with a status code of
Expires September 1, 2000
'successful-ok' if there had been jobs matching the criteria, then the 'successful-ok' if there had been jobs matching the criteria, then the
status code for 0 jobs MUST be 'successful-ok'. status code for 0 jobs MUST be 'successful-ok'.
Group 1: Operation Attributes Group 1: Operation Attributes
Status Message: Status Message:
In addition to the REQUIRED status code returned in every response, In addition to the REQUIRED status code returned in every response,
the response OPTIONALLY includes a "status-message" (text(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.
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 41 skipping to change at page 52, line 5
'completed', 'aborted', or 'canceled' states), then the Jobs 'completed', 'aborted', or 'canceled' states), then the Jobs
are returned newest to oldest (with respect to actual are returned newest to oldest (with respect to actual
completion time) completion time)
- If the client requests all 'not-completed' Jobs (Jobs in the - If the client requests all 'not-completed' Jobs (Jobs in the
'pending', 'processing', 'pending-held', and 'processing- 'pending', 'processing', 'pending-held', and 'processing-
stopped' states), then Jobs are returned in relative stopped' states), then Jobs are returned in relative
chronological order of expected time to complete (based on chronological order of expected time to complete (based on
whatever scheduling algorithm is configured for the Printer whatever scheduling algorithm is configured for the Printer
object). object).
Expires September 1, 2000
3.2.7 Pause-Printer Operation 3.2.7 Pause-Printer Operation
This OPTIONAL operation allows a client to stop the Printer object from This OPTIONAL operation allows a client to stop the Printer object from
scheduling jobs on all its devices. Depending on implementation, the scheduling jobs on all its devices. Depending on implementation, the
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.
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 37 skipping to change at page 53, line 5
the device from other sources than the IPP Printer object in the same the device from other sources than the IPP Printer object in the same
way that the Pause-Printer operation affects jobs that were submitted to way that the Pause-Printer operation affects jobs that were submitted to
the IPP Printer object using IPP, depends on implementation, i.e., on the IPP Printer object using IPP, depends on implementation, i.e., on
whether the IPP protocol is being used as a universal management whether the IPP protocol is being used as a universal management
protocol or just to manage IPP jobs, respectively. protocol or just to manage IPP jobs, respectively.
The IPP Printer MUST accept the request in any state and transition the The IPP Printer MUST accept the request in any state and transition the
Printer to the indicated new "printer-state" before returning as Printer to the indicated new "printer-state" before returning as
follows: follows:
Expires September 1, 2000
Current New "printer IPP Printer's response status Current New "printer IPP Printer's response status
"printer- "printer- -state- code and action: "printer- "printer- -state- code and action:
state" state" reasons" state" state" reasons"
'idle' 'stopped' 'paused' 'successful-ok' 'idle' 'stopped' 'paused' 'successful-ok'
'processing' 'processing' 'moving- OPTION 1: 'successful-ok'; 'processing' 'processing' 'moving- OPTION 1: 'successful-ok';
to- Later, when all output has to- Later, when all output has
paused' stopped, the "printer-state" paused' stopped, the "printer-state"
becomes 'stopped', and the becomes 'stopped', and the
'paused' value replaces the 'paused' value replaces the
skipping to change at page 53, line 61 skipping to change at page 53, line 30
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
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 38 skipping to change at page 54, line 5
Response: Response:
Group 1: Operation Attributes Group 1: Operation Attributes
Status Message: Status Message:
In addition to the REQUIRED status code returned in every response, In addition to the REQUIRED status code returned in every response,
the response OPTIONALLY includes a "status-message" (text(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.
Expires September 1, 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.
3.2.8 Resume-Printer Operation 3.2.8 Resume-Printer Operation
This operation allows a client to resume the Printer object scheduling This operation allows a client to resume the Printer object scheduling
jobs on all its devices. The Printer object 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 is free to transition
the 'processing' or 'idle' states, depending on whether there are jobs itself to the 'processing' or 'idle' states, depending on whether there
to be processed or not, respectively, and the device(s) resume are jobs to be processed or not, respectively, and the device(s) resume
processing jobs. processing jobs.
If the Pause-Printer operation is supported, then the Resume-Printer If the Pause-Printer operation is supported, then the Resume-Printer
operation MUST be supported, and vice-versa. operation MUST be supported, and vice-versa.
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 55, line 34 skipping to change at page 55, line 5
Access Rights: The authenticated user (see section 8.3) performing this Access Rights: The authenticated user (see section 8.3) performing this
operation must be an operator or administrator of the Printer object operation must be an operator or administrator of the Printer object
(see Sections 1 and 8.5). Otherwise, the IPP Printer MUST reject the (see Sections 1 and 8.5). Otherwise, the IPP Printer MUST reject the
operation and return: 'client-error-forbidden', 'client-error-not- operation and return: 'client-error-forbidden', 'client-error-not-
authenticated', or 'client-error-not-authorized' as appropriate. authenticated', or 'client-error-not-authorized' as appropriate.
The Resume-Printer Request and Resume-Printer Response have the same The Resume-Printer Request and Resume-Printer Response have the same
attribute groups and attributes as the Pause-Printer operation (see attribute groups and attributes as the Pause-Printer operation (see
sections 3.2.7.1 and 3.2.7.2). sections 3.2.7.1 and 3.2.7.2).
Expires September 1, 2000
3.2.9 Purge-Jobs Operation 3.2.9 Purge-Jobs Operation
This OPTIONAL operation allows a client to remove all jobs from an IPP This OPTIONAL operation allows a client to remove all jobs from an IPP
Printer object, regardless of their job states, including jobs in the Printer object, regardless of their job states, including jobs in the
Printer object's Job History (see Section 4.3.7.2). After a Purge-Jobs Printer object's Job History (see Section 4.3.7.2). After a Purge-Jobs
operation has been performed, a Printer object MUST return no jobs in operation has been performed, a Printer object MUST return no jobs in
subsequent Get-Job-Attributes and Get-Jobs responses (until new jobs are subsequent Get-Job-Attributes and Get-Jobs responses (until new jobs are
submitted). submitted).
Whether the Purge-Jobs (and Get-Jobs) operation affects jobs that were Whether the Purge-Jobs (and Get-Jobs) operation affects jobs that were
skipping to change at page 55, line 59 skipping to change at page 55, line 32
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-Jobs 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.
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 33 skipping to change at page 56, line 5
3.3.1 Send-Document Operation 3.3.1 Send-Document Operation
This OPTIONAL operation allows a client to create a multi-document Job This OPTIONAL operation allows a client to create a multi-document Job
object that is initially "empty" (contains no documents). In the object that is initially "empty" (contains no documents). In the
Create-Job response, the Printer object returns the Job object's URI Create-Job response, the Printer object returns the Job object's URI
(the "job-uri" attribute) and the Job object's 32-bit identifier (the (the "job-uri" attribute) and the Job object's 32-bit identifier (the
"job-id" attribute). For each new document that the client desires to "job-id" attribute). For each new document that the client desires to
add, the client uses a Send-Document operation. Each Send-Document add, the client uses a Send-Document operation. Each Send-Document
Request contains the entire stream of document data for one document. Request contains the entire stream of document data for one document.
Expires September 1, 2000
If the Printer supports this operation but does not support multiple If the Printer supports this operation but does not support multiple
documents per job, the Printer MUST reject subsequent Send-Document documents per job, the Printer MUST reject subsequent Send-Document
operations supplied with data and return the 'server-error-multiple- operations supplied with data and return the 'server-error-multiple-
document-jobs-not-supported'. However, the Printer MUST accept the document-jobs-not-supported'. However, the Printer MUST accept the
first document with a 'true' or 'false' value for the "last-document" first document with a 'true' or 'false' value for the "last-document"
operation attribute (see below), so that clients MAY always submit one operation attribute (see below), so that clients MAY always submit one
document jobs with a 'false' value for "last-document" in the first document jobs with a 'false' value for "last-document" in the first
Send-Document and a 'true' for "last-document" in the second Send- Send-Document and a 'true' for "last-document" in the second Send-
Document (with no data). Document (with no data).
skipping to change at page 56, line 58 skipping to change at page 56, line 32
document jobs, the Printer object MUST support the "multiple-operation- document jobs, the Printer object MUST support the "multiple-operation-
time-out" attribute (see section 4.4.31). This attribute indicates the time-out" attribute (see section 4.4.31). This attribute indicates the
minimum number of seconds the Printer object will wait for the next send minimum number of seconds the Printer object will wait for the next send
operation before taking some recovery action. operation before taking some recovery action.
An IPP object MUST recover from an errant client that does not supply a An IPP object MUST recover from an errant client that does not supply a
send operation, sometime after the minimum time interval specified by send operation, sometime after the minimum time interval specified by
the Printer object's "multiple-operation-time-out" attribute. Such the Printer object's "multiple-operation-time-out" attribute. Such
recovery MAY include any of the following or other recovery actions: recovery MAY include any of the following or other recovery actions:
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 33 skipping to change at page 57, line 5
operation (see section 3.3.6) or to cancel the job using the operation (see section 3.3.6) or to cancel the job using the
Cancel-Job operation (see section 3.3.3). Cancel-Job operation (see section 3.3.3).
Each implementation is free to decide the "best" action to take Each implementation is free to decide the "best" action to take
depending on local policy, whether any documents have been added, depending on local policy, whether any documents have been added,
whether the implementation spools jobs or not, and/or any other piece whether the implementation spools jobs or not, and/or any other piece
of information available to it. If the choice is to abort the Job of information available to it. If the choice is to abort the Job
object, it is possible that the Job object may already have been object, it is possible that the Job object may already have been
processed to the point that some media sheet pages have been printed. processed to the point that some media sheet pages have been printed.
Expires September 1, 2000
Access Rights: The authenticated user (see section 8.3) performing this Access Rights: The authenticated user (see section 8.3) performing this
operation must either be the job owner (as determined in the Create-Job operation must either be the job owner (as determined in the Create-Job
operation) or an operator or administrator of the Printer object (see operation) or an operator or administrator of the Printer object (see
Sections 1 and 8.5). Otherwise, the IPP object MUST reject the Sections 1 and 8.5). Otherwise, the IPP object MUST reject the
operation and return: 'client-error-forbidden', 'client-error-not- operation and return: 'client-error-forbidden', 'client-error-not-
authenticated', or 'client-error-not-authorized' as appropriate. authenticated', or 'client-error-not-authorized' as appropriate.
3.3.1.1 Send-Document Request 3.3.1.1 Send-Document Request
The following attribute sets are part of the Send-Document Request: The following attribute sets are part of the Send-Document Request:
skipping to change at page 57, line 55 skipping to change at page 57, line 29
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.
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 58, line 37 skipping to change at page 58, line 5
operation in Section 3.2.1.1. operation in Section 3.2.1.1.
"document-natural-language" (naturalLanguage): "document-natural-language" (naturalLanguage):
The client OPTIONALLY supplies this attribute. The Printer object The client OPTIONALLY supplies this attribute. The Printer object
OPTIONALLY supports this attribute. This attribute specifies the OPTIONALLY supports this attribute. This attribute specifies the
natural language of the document for those document-formats that natural language of the document for those document-formats that
require a specification of the natural language in order to image require a specification of the natural language in order to image
the document unambiguously. There are no particular values the document unambiguously. There are no particular values
required for the Printer object to support. required for the Printer object to support.
Expires September 1, 2000
"last-document" (boolean): "last-document" (boolean):
The client MUST supply this attribute. The Printer object MUST The client MUST supply this attribute. The Printer object MUST
support this attribute. It is a boolean flag that is set to 'true' support this attribute. It is a boolean flag that is set to 'true'
if this is the last document for the Job, 'false' otherwise. if this is the last document for the Job, 'false' otherwise.
Group 2: Document Content Group 2: Document Content
The client MUST supply the document data if the "last-document" The client MUST supply the document data if the "last-document"
flag is set to 'false'. However, since a client might not know flag is set to 'false'. However, since a client might not know
that the previous document sent with a Send-Document (or Send-URI) that the previous document sent with a Send-Document (or Send-URI)
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. It is not an error for a client to submit a 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 job with no actual document data, i.e., only a single Create-Job
and Send-Document request with a "last-document" operation and Send-Document request with a "last-document" operation
attribute set to 'true' with no document data. 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:
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
skipping to change at page 59, line 40 skipping to change at page 59, line 4
3.3.2 Send-URI Operation 3.3.2 Send-URI Operation
This OPTIONAL operation is identical to the Send-Document operation (see This OPTIONAL operation is identical to the Send-Document operation (see
section 3.3.1) except that a client MUST supply a URI reference section 3.3.1) except that a client MUST supply a URI reference
("document-uri" operation attribute) rather than the document data ("document-uri" operation attribute) rather than the document data
itself. If a Printer object supports this operation, clients can use itself. If a Printer object supports this operation, clients can use
both Send-URI or Send-Document operations to add new documents to an both Send-URI or Send-Document operations to add new documents to an
existing multi-document Job object. However, if a client needs to existing multi-document Job object. However, if a client needs to
indicate that the previous Send-URI or Send-Document was the last indicate that the previous Send-URI or Send-Document was the last
Expires September 1, 2000
document, the client MUST use the Send-Document operation with no document, the client MUST use the Send-Document operation with no
document data and the "last-document" flag set to 'true' (rather than document data and the "last-document" flag set to 'true' (rather than
using a Send-URI operation with no "document-uri" operation attribute). using a Send-URI operation with no "document-uri" operation attribute).
If a Printer object supports this operation, it MUST also support the If a Printer object supports this operation, it MUST also support the
Print-URI operation (see section 3.2.2). Print-URI operation (see section 3.2.2).
The Printer object MUST validate the syntax and URI scheme of the The Printer object MUST validate the syntax and URI scheme of the
supplied URI before returning a response, just as in the Print-URI supplied URI before returning a response, just as in the Print-URI
operation. The IPP Printer MAY validate the accessibility of the operation. The IPP Printer MAY validate the accessibility of the
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:
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'
skipping to change at page 60, line 39 skipping to change at page 60, line 5
Rule 1: If the implementation requires some measurable time to cancel Rule 1: If the implementation requires some measurable time to cancel
the job in the 'processing' or 'processing-stopped' job states, the IPP the job in the 'processing' or 'processing-stopped' job states, the IPP
object MUST add the 'processing-to-stop-point' value to the job's "job- object MUST add the 'processing-to-stop-point' value to the job's "job-
state-reasons" attribute and then transition the job to the 'canceled' state-reasons" attribute and then transition the job to the 'canceled'
state when the processing ceases (see section 4.3.8). state when the processing ceases (see section 4.3.8).
Rule 2: If the Job object already has the 'processing-to-stop-point' Rule 2: If the Job object already has the 'processing-to-stop-point'
value in its "job-state-reasons" attribute, then the Printer object MUST value in its "job-state-reasons" attribute, then the Printer object MUST
reject a Cancel-Job operation. reject a Cancel-Job operation.
Expires September 1, 2000
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.3.1 Cancel-Job Request 3.3.3.1 Cancel-Job Request
The following groups of attributes are part of the Cancel-Job Request: The following groups of attributes are part of the Cancel-Job Request:
Group 1: Operation Attributes Group 1: Operation Attributes
Natural Language and Character Set: Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" The "attributes-charset" and "attributes-natural-language"
attributes as described in section 3.1.4.1. attributes as described in section 3.1.4.1.
Target: Target:
Either (1) the "printer-uri" (uri) plus "job-id" Either (1) the "printer-uri" (uri) plus "job-id"
(integer(1:MAX))or (2) the "job-uri" (uri) operation attribute(s) (integer(1:MAX))or (2) the "job-uri" (uri) operation attribute(s)
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.
Requesting User Name: Requesting User Name:
The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied
by the client as described in section 8.3. by the client as described in section 8.3.
"message" (text(127)): "message" (text(127)):
The client OPTIONALLY supplies this attribute. The Printer object The client OPTIONALLY supplies this attribute. The Printer object
OPTIONALLY supports this attribute. It is a message to the OPTIONALLY supports this attribute. It is a message to the
skipping to change at page 61, line 39 skipping to change at page 61, line 5
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 September 1, 2000
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.
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
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.
skipping to change at page 62, line 40 skipping to change at page 62, line 5
requesting the "job-name" attribute once by naming it explicitly, and requesting the "job-name" attribute once by naming it explicitly, and
once by inclusion in the 'job-description' group. In such cases, the once by inclusion in the 'job-description' group. In such cases, the
Printer object NEED NOT return the attribute only once in the response Printer object NEED NOT return the attribute only once in the response
even if it is requested multiple times. The client SHOULD NOT request even if it is requested multiple times. The client SHOULD NOT request
the same attribute in multiple ways. the same attribute in multiple ways.
It is NOT REQUIRED that a Job object support all attributes belonging to It is NOT REQUIRED that a Job object support all attributes belonging to
a group (since some attributes are OPTIONAL). However it is REQUIRED a group (since some attributes are OPTIONAL). However it is REQUIRED
that each Job object support all group names. that each Job object support all group names.
Expires September 1, 2000
3.3.4.1 Get-Job-Attributes Request 3.3.4.1 Get-Job-Attributes Request
The following groups of attributes are part of the Get-Job-Attributes The following groups of attributes are part of the Get-Job-Attributes
Request when the request is directed at a Job object: Request when the request is directed at a Job object:
Group 1: Operation Attributes Group 1: Operation Attributes
Natural Language and Character Set: Natural Language and Character Set:
The "attributes-charset" and "attributes-natural-language" The "attributes-charset" and "attributes-natural-language"
attributes as described in section 3.1.4.1. attributes as described in section 3.1.4.1.
Target: Target:
Either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX)) Either (1) the "printer-uri" (uri) plus "job-id" (integer(1:MAX))
or (2) the "job-uri" (uri) operation attribute(s) which define the or (2) the "job-uri" (uri) operation attribute(s) which define the
target for this operation as described in section 3.1.5. target for this operation as described in section 3.1.5.
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'.
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
skipping to change at page 63, line 38 skipping to change at page 63, line 4
natural-language" MAY be the natural language of the Job object, natural-language" MAY be the natural language of the Job object,
rather than the one requested. rather than the one requested.
Group 2: Unsupported Attributes Group 2: Unsupported Attributes
See section 3.1.7 for details on returning Unsupported Attributes. See section 3.1.7 for details on returning Unsupported Attributes.
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
Expires September 1, 2000
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.
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
skipping to change at page 64, line 45 skipping to change at page 64, line 5
Rule 1: If the implementation supports multiple reasons for a job to be Rule 1: If the implementation supports multiple reasons for a job to be
in the 'pending-held' state, the IPP object MUST add the 'job-hold- in the 'pending-held' state, the IPP object MUST add the 'job-hold-
until-specified' value to the job's "job-state-reasons" attribute. until-specified' value to the job's "job-state-reasons" attribute.
Rule 2: If the IPP object supports the "job-hold-until" operation Rule 2: If the IPP object supports the "job-hold-until" operation
attribute, but the specified time period has already started (or is the attribute, but the specified time period has already started (or is the
'no-hold' value) and there are no other reasons to hold the job, the IPP 'no-hold' value) and there are no other reasons to hold the job, the IPP
object MUST make the job be a candidate for processing immediately (see object MUST make the job be a candidate for processing immediately (see
Section 4.2.2) by putting the job in the 'pending' state. Section 4.2.2) by putting the job in the 'pending' state.
Expires September 1, 2000
Note: In order to keep the Hold-Job operation simple, such a request is Note: In order to keep the Hold-Job operation simple, such a request is
rejected when the job is in the 'processing' or 'processing-stopped' rejected when the job is in the 'processing' or 'processing-stopped'
states. If an operation is needed to hold jobs while in these states, states. If an operation is needed to hold jobs while in these states,
it will be added as an additional operation, rather than overloading the it will be added as an additional operation, rather than overloading the
Hold-Job operation. Then it is clear to clients by querying the Printer Hold-Job operation. Then it is clear to clients by querying the Printer
object's "operations-supported" (see Section 4.4.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)):
skipping to change at page 65, line 47 skipping to change at page 65, line 5
holds the job indefinitely until a client performs a subsequent holds the job indefinitely until a client performs a subsequent
Release-Job operation. Release-Job operation.
If the client (1) supplies a value that specifies a time period If the client (1) supplies a value that specifies a time period
that has already started or the 'no-hold' value (meaning don't hold that has already started or the 'no-hold' value (meaning don't hold
the job) and (2) the IPP object supports the "job-hold-until" the job) and (2) the IPP object supports the "job-hold-until"
operation attribute and there are no other reasons to hold the job, operation attribute and there are no other reasons to hold the job,
the IPP object MUST accept the operation and make the job be a the IPP object MUST accept the operation and make the job be a
candidate for processing immediately (see Section 4.2.2). candidate for processing immediately (see Section 4.2.2).
Expires September 1, 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 MUST populate the job attribute in the request, the IPP object MUST populate the job
object with a "job-hold-until" attribute with the 'indefinite' object with a "job-hold-until" attribute with the 'indefinite'
value (if IPP object supports the "job-hold-until" attribute) and value (if IPP object supports the "job-hold-until" attribute) and
hold the job indefinitely, until a client performs a Release-Job hold the job indefinitely, until a client performs a Release-Job
operation. operation.
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.
skipping to change at page 66, line 48 skipping to change at page 66, line 4
Rule 1: If there are other reasons to keep the job in the 'pending- Rule 1: If there are other reasons to keep the job in the 'pending-
held' state, such as 'resources-are-not-ready', the job remains in the held' state, such as 'resources-are-not-ready', the job remains in the
'pending-held' state. Thus the 'pending-held' state is not just for 'pending-held' state. Thus the 'pending-held' state is not just for
jobs that have the 'job-hold-until' applied to them, but are for any jobs that have the 'job-hold-until' applied to them, but are for any
reason to keep the job from being a candidate for scheduling and reason to keep the job from being a candidate for scheduling and
processing, such as 'resources-are-not-ready'. See the "job-hold-until" processing, such as 'resources-are-not-ready'. See the "job-hold-until"
attribute (section 4.2.2). attribute (section 4.2.2).
Access Rights: The authenticated user (see section 8.3) performing this Access Rights: The authenticated user (see section 8.3) performing this
operation must either be the job owner or an operator or administrator operation must either be the job owner or an operator or administrator
Expires September 1, 2000
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' or 'pending-held' job state and The job is moved to the 'pending' or 'pending-held' job state and
restarts at the beginning on the same IPP Printer object with the same 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 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, reference (Print-URI or Send-URI), the Printer MUST re-fetch the data,
skipping to change at page 67, line 31 skipping to change at page 67, line 5
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
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:
Expires September 1, 2000
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' or 'successful-ok' - job is started 'completed' 'pending' or 'successful-ok' - job is started
'pending-held' over. 'pending-held' over.
skipping to change at page 67, line 59 skipping to change at page 67, line 34
'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.
skipping to change at page 68, line 31 skipping to change at page 68, line 5
attribute: attribute:
"job-hold-until" (type3 keyword | name(MAX)): "job-hold-until" (type3 keyword | name(MAX)):
The client OPTIONALLY supplies this attribute. The IPP object MUST The client OPTIONALLY supplies this attribute. The IPP object MUST
support this Operation attribute in a Restart-Job request, if it support this Operation attribute in a Restart-Job request, if it
supports the "job-hold-until" Job Template attribute in create supports the "job-hold-until" Job Template attribute in create
operations. See section 4.2.2. Otherwise, the IPP object NEED NOT operations. See section 4.2.2. Otherwise, the IPP object NEED NOT
support the "job-hold-until" Operation attribute in a Restart-Job support the "job-hold-until" Operation attribute in a Restart-Job
request. request.
Expires September 1, 2000
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.
See section 4.2.2. See section 4.2.2.
If supplied, but the value is not supported, the IPP object accepts If supplied, but the value is not supported, the IPP object accepts
the request, returns the unsupported attribute or value in the the request, returns the unsupported attribute or value in the
Unsupported Attributes Group according to section 3.1.7, returns Unsupported Attributes Group according to section 3.1.7, returns
skipping to change at page 68, line 60 skipping to change at page 68, line 35
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).
skipping to change at page 69, line 28 skipping to change at page 69, line 5
attributes before releasing the restarted job. attributes before releasing the restarted job.
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:
Expires September 1, 2000
- Document Printing Application (DPA) [ISO10175] - Document Printing Application (DPA) [ISO10175]
- RFC 1759 Printer MIB [RFC1759] - RFC 1759 Printer MIB [RFC1759]
Each attribute is uniquely identified in this document using a "keyword" Each attribute is uniquely identified in this document using a "keyword"
(see section 12.2.1) which is the name of the attribute. The keyword is (see section 12.2.1) which is the name of the attribute. The keyword is
included in the section header describing that attribute. included in the section header describing that attribute.
Note: Not only are keywords used to identify attributes, but one of the Note: Not only are keywords used to identify attributes, but one of the
attribute syntaxes described below is "keyword" so that some attributes attribute syntaxes described below is "keyword" so that some attributes
have keyword values. Therefore, these attributes are defined as having have keyword values. Therefore, these attributes are defined as having
skipping to change at page 69, line 55 skipping to change at page 69, line 33
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.
skipping to change at page 70, line 31 skipping to change at page 70, line 4
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
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
Expires September 1, 2000
attribute instance may have any one of its attribute syntaxes and a attribute instance may have any one of its attribute syntaxes and a
multi-valued attribute instance may have a mixture of its defined multi-valued attribute instance may have a mixture of its defined
attribute syntaxes. attribute syntaxes.
4.1.1 'text' 4.1.1 'text'
A text attribute is an attribute whose value is a sequence of zero or A text attribute is an attribute whose value is a sequence of zero or
more characters encoded in a maximum of 1023 ('MAX') octets. MAX is the more characters encoded in a maximum of 1023 ('MAX') octets. MAX is the
maximum length for each value of any text attribute. However, if an maximum length for each value of any text attribute. However, if an
attribute will always contain values whose maximum length is much less attribute will always contain values whose maximum length is much less
skipping to change at page 70, line 56 skipping to change at page 70, line 32
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,
skipping to change at page 71, line 34 skipping to change at page 71, line 4
section 3.1.4). section 3.1.4).
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 encoded in a maximum of 1023 (MAX) octets. zero or more characters encoded in a maximum of 1023 (MAX) octets.
Text strings are encoded using the rules of some charset. The Printer Text strings are encoded using the rules of some charset. The Printer
Expires September 1, 2000
object MUST support the UTF-8 charset [RFC2279] and MAY support object MUST support the UTF-8 charset [RFC2279] and MAY support
additional charsets to represent 'text' values, provided that the additional charsets to represent 'text' values, provided that the
charsets are registered with IANA [IANA-CS]. See Section 4.1.7 for the charsets are registered with IANA [IANA-CS]. See Section 4.1.7 for the
definition of the 'charset' attribute syntax, including restricted definition of the 'charset' attribute syntax, including restricted
semantics and examples of charsets. 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 encoded in a consisting of two parts: a 'textWithoutLanguage' part encoded in a
skipping to change at page 71, line 58 skipping to change at page 71, line 31
give text attribute, the 'textWithoutLanguage' part is limited to the give text attribute, the 'textWithoutLanguage' part is limited to the
maximum length defined for that 'text' attribute, and the maximum length defined for that 'text' attribute, and the
'naturalLanguage' part is always limited to 63 (additional) octets. 'naturalLanguage' part is always limited to 63 (additional) octets.
Using the 'textWithLanguage' attribute syntax rather than the normal 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 72, line 35 skipping to change at page 72, line 4
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.
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
Expires September 1, 2000
REQUIRED support of UTF-8 except that the sequence of characters is REQUIRED support of UTF-8 except that the sequence of characters is
limited so that its encoded form MUST NOT exceed 255 (MAX) octets. limited so that its encoded form MUST NOT exceed 255 (MAX) octets.
Also like 'text', 'name' is really an abbreviated notation for either Also like 'text', 'name' is really an abbreviated notation for either
'nameWithoutLanguage' or 'nameWithLanguage'. That is, all IPP objects 'nameWithoutLanguage' or 'nameWithLanguage'. That is, all IPP objects
and clients MUST support both the 'nameWithoutLanguage' and and clients MUST support both the 'nameWithoutLanguage' and
'nameWithLanguage' attribute syntaxes. However, in actual usage and 'nameWithLanguage' attribute syntaxes. However, in actual usage and
protocol execution, objects and clients accept and return only one of protocol execution, objects and clients accept and return only one of
the two syntax per attribute. The syntax 'name' never appears "on-the- the two syntax per attribute. The syntax 'name' never appears "on-the-
wire". wire".
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 encoded in a maximum of 255 (MAX) octets. zero or more characters encoded in a maximum of 255 (MAX) octets.
4.1.2.2 'nameWithLanguage' 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 encoded in a consisting of two parts: a 'nameWithoutLanguage' part encoded in a
maximum of 1023 (MAX) octets plus an additional 'naturalLanguage' (see maximum of 1023 (MAX) octets plus an additional 'naturalLanguage' (see
skipping to change at page 73, line 40 skipping to change at page 73, line 5
IPP objects and clients. If a name is in a language that is different 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 If the attribute is multi-valued (1setOf text), then the
'nameWithLanguage' attribute syntax MUST be used to explicitly specify 'nameWithLanguage' attribute syntax MUST be used to explicitly specify
each attribute value whose natural language needs to be overridden. each attribute value whose natural language needs to be overridden.
Other values in a multi-valued 'name' attribute in a request or a Other values in a multi-valued 'name' 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.
Expires September 1, 2000
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 'nameWithLanguage' attribute value, whether the Printer object any 'nameWithLanguage' 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
attribute that the client MAY supply. 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
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 74, line 42 skipping to change at page 74, line 4
4.1.3 'keyword' 4.1.3 'keyword'
The 'keyword' attribute syntax is a sequence of characters, length: 1 to The 'keyword' attribute syntax is a sequence of characters, length: 1 to
255, containing only the US-ASCII [ASCII] encoded values for lowercase 255, containing only the US-ASCII [ASCII] encoded values for lowercase
letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"), dot ("."), and letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"), dot ("."), and
underscore ("_"). The first character MUST be a lowercase letter. underscore ("_"). The first character MUST be a lowercase letter.
Furthermore, keywords MUST be in U.S. English. Furthermore, keywords MUST be in U.S. English.
This syntax type is used for enumerating semantic identifiers of This syntax type is used for enumerating semantic identifiers of
entities in the abstract protocol, i.e., entities identified in this entities in the abstract protocol, i.e., entities identified in this
Expires September 1, 2000
document. Keywords are used as attribute names or values of attributes. document. Keywords are used as attribute names or values of attributes.
Unlike 'text' and 'name' attribute values, 'keyword' values MUST NOT use Unlike 'text' and 'name' attribute values, 'keyword' values MUST NOT use
the Natural Language Override mechanism, since they MUST always be US- the Natural Language Override mechanism, since they MUST always be US-
ASCII and U.S. English. ASCII and U.S. English.
Keywords are for use in the protocol. A user interface will likely Keywords are for use in the protocol. A user interface will likely
provide a mapping between protocol keywords and displayable user- provide a mapping between protocol keywords and displayable user-
friendly words and phrases which are localized to the natural 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.
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 75, line 44 skipping to change at page 75, line 5
describes how the protocol can be extended with new enum values. describes how the protocol can be extended with new enum values.
Enum values are for use in the protocol. A user interface will provide Enum values are for use in the protocol. A user interface will provide
a mapping between protocol enum values and displayable user-friendly a mapping between protocol enum values and displayable user-friendly
words and phrases which are localized to the natural language of the words and phrases which are localized to the natural language of the
user. While the enum symbols specified in this document MAY be user. While the enum symbols specified in this document MAY be
displayed to users whose natural language is U.S. English, they MAY be displayed to users whose natural language is U.S. English, they MAY be
mapped to other U.S. English words for U.S. English users, since the mapped to other U.S. English words for U.S. English users, since the
user interface is outside the scope of this document. user interface is outside the scope of this document.
Expires September 1, 2000
Note: SNMP MIBs use '2' for 'unknown' which corresponds to the IPP "out- Note: SNMP MIBs use '2' for 'unknown' which corresponds to the IPP "out-
of-band" value 'unknown'. See the description of the "out-of-band" of-band" value 'unknown'. See the description of the "out-of-band"
values at the beginning of Section 4.1. Therefore, attributes of type values at the beginning of Section 4.1. Therefore, attributes of type
'enum' start at '3'. 'enum' start at '3'.
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
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
1023 octets. Although most other IPP attribute syntax types allow for 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
skipping to change at page 76, line 44 skipping to change at page 76, line 4
The 'charset' attribute syntax is a standard identifier for a charset. The 'charset' attribute syntax is a standard identifier for a charset.
A charset is a coded character set and encoding scheme. Charsets are A charset is a coded character set and encoding scheme. Charsets are
used for labeling certain document contents and 'text' and 'name' used for labeling certain document contents and 'text' and 'name'
attribute values. The syntax and semantics of this attribute syntax are attribute values. The syntax and semantics of this attribute syntax are
specified in RFC 2046 [RFC2046] and contained in the IANA character-set specified in RFC 2046 [RFC2046] and contained in the IANA character-set
Registry [IANA-CS] according to the IANA procedures [RFC2278]. Though Registry [IANA-CS] according to the IANA procedures [RFC2278]. Though
RFC 2046 requires that the values be case-insensitive US-ASCII, IPP RFC 2046 requires that the values be case-insensitive US-ASCII, IPP
requires all lower case values in IPP attributes to simplify comparing requires all lower case values in IPP attributes to simplify comparing
by IPP clients and Printer objects. When a character-set in the IANA by IPP clients and Printer objects. When a character-set in the IANA
Expires September 1, 2000
registry has more than one name (alias), the name labeled as "(preferred registry has more than one name (alias), the name labeled as "(preferred
MIME name)", if present, MUST be used. MIME name)", if present, MUST be used.
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.
'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.
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-
skipping to change at page 77, line 45 skipping to change at page 77, line 5
The 'mimeMediaType' attribute syntax is the Internet Media Type The 'mimeMediaType' attribute syntax is the Internet Media Type
(sometimes called MIME type) as defined by RFC 2046 [RFC2046] and (sometimes called MIME type) as defined by RFC 2046 [RFC2046] and
registered according to the procedures of RFC 2048 [RFC2048] for registered according to the procedures of RFC 2048 [RFC2048] for
identifying a document format. The value MAY include a charset identifying a document format. The value MAY include a charset
parameter, depending on the specification of the Media Type in the IANA parameter, depending on the specification of the Media Type in the IANA
Registry [IANA-MT]. Although most other IPP syntax types allow for only Registry [IANA-MT]. Although most other IPP syntax types allow for only
lower-cased values, this syntax type allows for mixed-case values which lower-cased values, this syntax type allows for mixed-case values which
are case-insensitive. are case-insensitive.
Expires September 1, 2000
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].
'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 78, line 47 skipping to change at page 78, line 4
'application/octet-stream' indicating an auto-sensing mechanism). 'application/octet-stream' indicating an auto-sensing mechanism).
2. If the client supplies a value other than 'application/octet- 2. If the client supplies a value other than 'application/octet-
stream', the client is supplying valid information about the format stream', the client is supplying valid information about the format
of the document data and the Printer object MUST trust the client of the document data and the Printer object MUST trust the client
supplied value more than the outcome of applying an automatic supplied value more than the outcome of applying an automatic
format detection mechanism. For example, the client may be format detection mechanism. For example, the client may be
requesting the printing of a PostScript file as a 'text/plain' requesting the printing of a PostScript file as a 'text/plain'
document. The Printer object MUST print a text representation of document. The Printer object MUST print a text representation of
the PostScript commands rather than interpret the stream of the PostScript commands rather than interpret the stream of
PostScript commands and print the result. PostScript commands and print the result.
Expires September 1, 2000
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 intended (the auto-sensing algorithm might mistake one document format
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
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 79, line 47 skipping to change at page 79, line 4
specifies the lower bound and the second specifies the upper bound. If specifies the lower bound and the second specifies the upper bound. If
a range constraint is specified in the header description for an a range constraint is specified in the header description for an
attribute in this document whose attribute syntax is 'rangeOfInteger' attribute in this document whose attribute syntax is 'rangeOfInteger'
(i.e., 'X:Y' indicating X as a minimum value and Y as a maximum value), (i.e., 'X:Y' indicating X as a minimum value and Y as a maximum value),
then the constraint applies to both integers. then the constraint applies to both integers.
4.1.14 'dateTime' 4.1.14 'dateTime'
The 'dateTime' attribute syntax is a standard, fixed length, 11 octet The 'dateTime' attribute syntax is a standard, fixed length, 11 octet
representation of the "DateAndTime" syntax as defined in RFC 2579 representation of the "DateAndTime" syntax as defined in RFC 2579
Expires September 1, 2000
[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.
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
the Printer MIB, the feed direction component resolution component is the Printer MIB, the feed direction component resolution component is
skipping to change at page 80, line 51 skipping to change at page 80, line 4
Job Template attributes conform to the following rules. For each Job Job Template attributes conform to the following rules. For each Job
Template attribute called "xxx": Template attribute called "xxx":
1. If the Printer object supports "xxx" then it MUST support both a 1. If the Printer object supports "xxx" then it MUST support both a
"xxx-default" attribute (unless there is a "No" in the table below) "xxx-default" attribute (unless there is a "No" in the table below)
and a "xxx-supported" attribute. If the Printer object doesn't and a "xxx-supported" attribute. If the Printer object doesn't
support "xxx", then it MUST support neither an "xxx-default" support "xxx", then it MUST support neither an "xxx-default"
attribute nor an "xxx-supported" attribute, and it MUST treat an attribute nor an "xxx-supported" attribute, and it MUST treat an
attribute "xxx" supplied by a client as unsupported. An attribute attribute "xxx" supplied by a client as unsupported. An attribute
"xxx" may be supported for some document formats and not supported "xxx" may be supported for some document formats and not supported
Expires September 1, 2000
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
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
processing behavior for this Job. When "xxx" is not supplied, the 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
skipping to change at page 81, line 51 skipping to change at page 81, line 4
application can guarantee that the values supplied by the client in the application can guarantee that the values supplied by the client in the
create request all fall within the set of supported values at the create request all fall within the set of supported values at the
Printer. When querying the Printer, the client MAY enumerate each Printer. When querying the Printer, the client MAY enumerate each
attribute by name in the Get-Printer-Attributes Request, or the client attribute by name in the Get-Printer-Attributes Request, or the client
MAY just name the "job-template" group in order to get the complete set MAY just name the "job-template" group in order to get the complete set
of supported attributes (both supported and default attributes). of supported attributes (both supported and default attributes).
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-
Expires September 1, 2000
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"
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
attribute in the create request, the IPP object validates the value or attribute in the create request, the IPP object validates the value or
values to make sure that they are a subset of the supported values values to make sure that they are a subset of the supported values
identified in the Printer object's "finishings-supported" attribute. identified in the Printer object's "finishings-supported" attribute.
See section 3.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.
deBry, Hastings, Herriot, Isaacson, Powell Expires September 1, 2000
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 83, line 58 skipping to change at page 82, line 59
| (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))|
+-------------------+----------------------+----------------------+ +-------------------+----------------------+----------------------+
deBry, Hastings, Herriot, Isaacson, Powell
Expires August 23, 2000
| printer-resolution| printer-resolution- | printer-resolution- | | printer-resolution| printer-resolution- | printer-resolution- |
Expires September 1, 2000
| (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 84, line 51 skipping to change at page 83, line 51
the formula: the formula:
roundToNearestInt((100x+50)/n) roundToNearestInt((100x+50)/n)
where n is the value of "job-priority-supported" and x ranges from 0 where n is the value of "job-priority-supported" and x ranges from 0
through n-1. through n-1.
For example, if n=1 the sequence of values is 50; if n=2, the 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 September 1, 2000
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 85, line 56 skipping to change at page 84, line 54
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 September 1, 2000
'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 86, line 59 skipping to change at page 85, line 52
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 September 1, 2000
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 87, line 58 skipping to change at page 86, line 52
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 September 1, 2000
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 88, line 60 skipping to change at page 87, line 54
'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 September 1, 2000
'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 89, line 55 skipping to change at page 88, line 48
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 September 1, 2000
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 90, line 58 skipping to change at page 89, line 48
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 September 1, 2000
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 91, line 57 skipping to change at page 90, line 44
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 September 1, 2000
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 92, line 59 skipping to change at page 91, line 46
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 September 1, 2000
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 93, line 57 skipping to change at page 92, line 47
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 September 1, 2000
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.
deBry, Hastings, Herriot, Isaacson, Powell Expires September 1, 2000
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 95, line 59 skipping to change at page 94, line 60
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| 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 September 1, 2000
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) | |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| attributes-charset | charset | REQUIRED | | attributes-charset | charset | REQUIRED |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
| attributes-natural-language| naturalLanguage | REQUIRED | | attributes-natural-language| naturalLanguage | REQUIRED |
+----------------------------+----------------------+----------------+ +----------------------------+----------------------+----------------+
skipping to change at page 96, line 56 skipping to change at page 95, 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
Expires September 1, 2000
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.
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)
skipping to change at page 97, line 54 skipping to change at page 96, line 53
in the "requesting-user-name" operation attribute of the create in the "requesting-user-name" operation attribute of the create
operation (see Sections 4.4.2, 4.4.3, and 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 operations. (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
Expires September 1, 2000
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.
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.
skipping to change at page 98, line 58 skipping to change at page 97, line 53
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
Expires September 1, 2000
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.
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.
skipping to change at page 99, line 57 skipping to change at page 98, line 51
'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 September 1, 2000
+----> 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 100, line 56 skipping to change at page 99, line 49
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 September 1, 2000
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 101, line 58 skipping to change at page 100, line 50
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 September 1, 2000
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': Either (1) the Printer has accepted the Create-Job
Printer, but the Printer is expecting additional Send-Document operation and is expecting additional Send-Document and/or Send-URI
and/or Send-URI operations and/or is accessing/accepting document operations, or (2) the Printer is retrieving/accepting document
data. data as a result of a Print-Job, Print-URI, Send-Document or Send-
URI operation.
'job-data-insufficient': The Create-Job operation has been accepted '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
Printer removes the 'job-data-insufficient' reason, but the 'job- Printer removes the 'job-data-insufficient' reason, but the 'job-
incoming' remains. If a Printer starts processing after it has incoming' remains. If a Printer starts processing after it has
received all data, the Printer removes the 'job-data-insufficient' received all data, the Printer removes the 'job-data-insufficient'
reason and the 'job-incoming' at the same time. reason and the 'job-incoming' at the same time.
'document-access-error': After accepting a Print-URI or Send-URI 'document-access-error': After accepting a Print-URI or Send-URI
request, the Printer could not access one or more documents passed request, the Printer could not access one or more documents passed
skipping to change at page 102, line 59 skipping to change at page 101, line 49
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'.
Expires September 1, 2000
'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'.
'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',
skipping to change at page 103, line 57 skipping to change at page 102, line 48
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
Expires September 1, 2000
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.
'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-
skipping to change at page 104, line 57 skipping to change at page 103, line 46
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-
Expires September 1, 2000
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
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
skipping to change at page 105, line 57 skipping to change at page 104, line 43
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 attr