rfc8011.txt   rfc8011-sweet.txt 
skipping to change at page 2, line 29 skipping to change at page 2, line 29
Table of Contents Table of Contents
1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 8 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 8
1.1. Simplified Printing Model . . . . . . . . . . . . . . . . 11 1.1. Simplified Printing Model . . . . . . . . . . . . . . . . 11
2. Conventions Used in This Document . . . . . . . . . . . . . . 13 2. Conventions Used in This Document . . . . . . . . . . . . . . 13
2.1. Requirements Language . . . . . . . . . . . . . . . . . . 13 2.1. Requirements Language . . . . . . . . . . . . . . . . . . 13
2.2. Printing Terminology . . . . . . . . . . . . . . . . . . 14 2.2. Printing Terminology . . . . . . . . . . . . . . . . . . 14
2.3. Model Terminology . . . . . . . . . . . . . . . . . . . . 14 2.3. Model Terminology . . . . . . . . . . . . . . . . . . . . 14
2.3.1. Administrator . . . . . . . . . . . . . . . . . . . . 14 2.3.1. Administrator . . . . . . . . . . . . . . . . . . . . 14
2.3.2. Attributes . . . . . . . . . . . . . . . . . . . . . 14 2.3.2. Attributes . . . . . . . . . . . . . . . . . . . . . 15
2.3.2.1. Attribute Group Name . . . . . . . . . . . . . . 15 2.3.2.1. Attribute Group Name . . . . . . . . . . . . . . 15
2.3.2.2. Attribute Name . . . . . . . . . . . . . . . . . 15 2.3.2.2. Attribute Name . . . . . . . . . . . . . . . . . 15
2.3.2.3. Attribute Syntax . . . . . . . . . . . . . . . . 15 2.3.2.3. Attribute Syntax . . . . . . . . . . . . . . . . 15
2.3.2.4. Attribute Value . . . . . . . . . . . . . . . . . 15 2.3.2.4. Attribute Value . . . . . . . . . . . . . . . . . 15
2.3.3. End User . . . . . . . . . . . . . . . . . . . . . . 15 2.3.3. End User . . . . . . . . . . . . . . . . . . . . . . 16
2.3.4. Impression . . . . . . . . . . . . . . . . . . . . . 16 2.3.4. Impression . . . . . . . . . . . . . . . . . . . . . 16
2.3.5. Input Page . . . . . . . . . . . . . . . . . . . . . 16 2.3.5. Input Page . . . . . . . . . . . . . . . . . . . . . 16
2.3.6. Job Creation Operation . . . . . . . . . . . . . . . 16 2.3.6. Job Creation Operation . . . . . . . . . . . . . . . 16
2.3.7. Keyword . . . . . . . . . . . . . . . . . . . . . . . 16 2.3.7. Keyword . . . . . . . . . . . . . . . . . . . . . . . 16
2.3.8. Media Sheet . . . . . . . . . . . . . . . . . . . . . 16 2.3.8. Media Sheet . . . . . . . . . . . . . . . . . . . . . 16
2.3.9. Operator . . . . . . . . . . . . . . . . . . . . . . 16 2.3.9. Operator . . . . . . . . . . . . . . . . . . . . . . 16
2.3.10. Set . . . . . . . . . . . . . . . . . . . . . . . . . 16 2.3.10. Set . . . . . . . . . . . . . . . . . . . . . . . . . 17
2.3.11. Support of Attributes . . . . . . . . . . . . . . . . 17 2.3.11. Support of Attributes . . . . . . . . . . . . . . . . 17
2.3.12. Terminating State . . . . . . . . . . . . . . . . . . 19 2.3.12. Terminating State . . . . . . . . . . . . . . . . . . 19
2.4. Abbreviations . . . . . . . . . . . . . . . . . . . . . . 19 2.4. Abbreviations . . . . . . . . . . . . . . . . . . . . . . 19
3. IPP Objects . . . . . . . . . . . . . . . . . . . . . . . . . 20 3. IPP Objects . . . . . . . . . . . . . . . . . . . . . . . . . 20
3.1. Printer Object . . . . . . . . . . . . . . . . . . . . . 21 3.1. Printer Object . . . . . . . . . . . . . . . . . . . . . 21
3.2. Job Object . . . . . . . . . . . . . . . . . . . . . . . 23 3.2. Job Object . . . . . . . . . . . . . . . . . . . . . . . 23
3.3. Object Relationships . . . . . . . . . . . . . . . . . . 24 3.3. Object Relationships . . . . . . . . . . . . . . . . . . 24
3.4. Object Identity . . . . . . . . . . . . . . . . . . . . . 25 3.4. Object Identity . . . . . . . . . . . . . . . . . . . . . 25
4. IPP Operations . . . . . . . . . . . . . . . . . . . . . . . 27 4. IPP Operations . . . . . . . . . . . . . . . . . . . . . . . 27
4.1. Common Semantics . . . . . . . . . . . . . . . . . . . . 29 4.1. Common Semantics . . . . . . . . . . . . . . . . . . . . 29
4.1.1. Required Parameters . . . . . . . . . . . . . . . . . 29 4.1.1. Required Parameters . . . . . . . . . . . . . . . . . 29
4.1.2. Operation IDs and Request IDs . . . . . . . . . . . . 29 4.1.2. Operation IDs and Request IDs . . . . . . . . . . . . 29
4.1.3. Attributes . . . . . . . . . . . . . . . . . . . . . 30 4.1.3. Attributes . . . . . . . . . . . . . . . . . . . . . 30
4.1.4. Character Set and Natural Language Operation 4.1.4. Character Set and Natural Language Operation
Attributes . . . . . . . . . . . . . . . . . . . . . 32 Attributes . . . . . . . . . . . . . . . . . . . . . 32
4.1.4.1. Request Operation Attributes . . . . . . . . . . 33 4.1.4.1. Request Operation Attributes . . . . . . . . . . 33
4.1.4.2. Response Operation Attributes . . . . . . . . . . 37 4.1.4.2. Response Operation Attributes . . . . . . . . . . 37
4.1.5. Operation Targets . . . . . . . . . . . . . . . . . . 38 4.1.5. Operation Targets . . . . . . . . . . . . . . . . . . 38
4.1.6. Operation Response Status-Codes and Status Messages . 39 4.1.6. Operation Response Status-Code Values and Status
Messages . . . . . . . . . . . . . . . . . . . . . . 39
4.1.6.1. "status-code" (type2 enum) . . . . . . . . . . . 40 4.1.6.1. "status-code" (type2 enum) . . . . . . . . . . . 40
4.1.6.2. "status-message" (text(255)) . . . . . . . . . . 41 4.1.6.2. "status-message" (text(255)) . . . . . . . . . . 41
4.1.6.3. "detailed-status-message" (text(MAX)) . . . . . . 42 4.1.6.3. "detailed-status-message" (text(MAX)) . . . . . . 42
4.1.6.4. "document-access-error" (text(MAX)) . . . . . . . 42 4.1.6.4. "document-access-error" (text(MAX)) . . . . . . . 42
4.1.7. Unsupported Attributes . . . . . . . . . . . . . . . 42 4.1.7. Unsupported Attributes . . . . . . . . . . . . . . . 42
4.1.8. Versions . . . . . . . . . . . . . . . . . . . . . . 44 4.1.8. Versions . . . . . . . . . . . . . . . . . . . . . . 44
4.1.9. Job Creation Operations . . . . . . . . . . . . . . . 46 4.1.9. Job Creation Operations . . . . . . . . . . . . . . . 46
4.2. Printer Operations . . . . . . . . . . . . . . . . . . . 49 4.2. Printer Operations . . . . . . . . . . . . . . . . . . . 49
4.2.1. Print-Job Operation . . . . . . . . . . . . . . . . . 49 4.2.1. Print-Job Operation . . . . . . . . . . . . . . . . . 49
4.2.1.1. Print-Job Request . . . . . . . . . . . . . . . . 49 4.2.1.1. Print-Job Request . . . . . . . . . . . . . . . . 49
skipping to change at page 4, line 26 skipping to change at page 4, line 28
5.1.3.2. 'nameWithLanguage' . . . . . . . . . . . . . . . 93 5.1.3.2. 'nameWithLanguage' . . . . . . . . . . . . . . . 93
5.1.3.3. Matching 'name' Attribute Values . . . . . . . . 94 5.1.3.3. Matching 'name' Attribute Values . . . . . . . . 94
5.1.4. 'keyword' . . . . . . . . . . . . . . . . . . . . . . 95 5.1.4. 'keyword' . . . . . . . . . . . . . . . . . . . . . . 95
5.1.5. 'enum' . . . . . . . . . . . . . . . . . . . . . . . 96 5.1.5. 'enum' . . . . . . . . . . . . . . . . . . . . . . . 96
5.1.6. 'uri' . . . . . . . . . . . . . . . . . . . . . . . . 96 5.1.6. 'uri' . . . . . . . . . . . . . . . . . . . . . . . . 96
5.1.7. 'uriScheme' . . . . . . . . . . . . . . . . . . . . . 96 5.1.7. 'uriScheme' . . . . . . . . . . . . . . . . . . . . . 96
5.1.8. 'charset' . . . . . . . . . . . . . . . . . . . . . . 97 5.1.8. 'charset' . . . . . . . . . . . . . . . . . . . . . . 97
5.1.9. 'naturalLanguage' . . . . . . . . . . . . . . . . . . 98 5.1.9. 'naturalLanguage' . . . . . . . . . . . . . . . . . . 98
5.1.10. 'mimeMediaType' . . . . . . . . . . . . . . . . . . . 99 5.1.10. 'mimeMediaType' . . . . . . . . . . . . . . . . . . . 99
5.1.10.1. 'application/octet-stream' - Auto-Sensing the 5.1.10.1. 'application/octet-stream' - Auto-Sensing the
Document Format . . . . . . . . . . . . . . . . 100 Document Format . . . . . . . . . . . . . . . . 99
5.1.11. 'octetString' . . . . . . . . . . . . . . . . . . . . 101 5.1.11. 'octetString' . . . . . . . . . . . . . . . . . . . . 101
5.1.12. 'boolean' . . . . . . . . . . . . . . . . . . . . . . 101 5.1.12. 'boolean' . . . . . . . . . . . . . . . . . . . . . . 101
5.1.13. 'integer' . . . . . . . . . . . . . . . . . . . . . . 101 5.1.13. 'integer' . . . . . . . . . . . . . . . . . . . . . . 101
5.1.14. 'rangeOfInteger' . . . . . . . . . . . . . . . . . . 101 5.1.14. 'rangeOfInteger' . . . . . . . . . . . . . . . . . . 101
5.1.15. 'dateTime' . . . . . . . . . . . . . . . . . . . . . 101 5.1.15. 'dateTime' . . . . . . . . . . . . . . . . . . . . . 101
5.1.16. 'resolution' . . . . . . . . . . . . . . . . . . . . 102 5.1.16. 'resolution' . . . . . . . . . . . . . . . . . . . . 101
5.1.17. 'collection' . . . . . . . . . . . . . . . . . . . . 102 5.1.17. 'collection' . . . . . . . . . . . . . . . . . . . . 102
5.1.18. '1setOf X' . . . . . . . . . . . . . . . . . . . . . 102 5.1.18. '1setOf X' . . . . . . . . . . . . . . . . . . . . . 102
5.2. Job Template Attributes . . . . . . . . . . . . . . . . . 103 5.2. Job Template Attributes . . . . . . . . . . . . . . . . . 103
5.2.1. job-priority (integer(1:100)) . . . . . . . . . . . . 106 5.2.1. job-priority (integer(1:100)) . . . . . . . . . . . . 106
5.2.2. job-hold-until (type2 keyword | name(MAX)) . . . . . 107 5.2.2. job-hold-until (type2 keyword | name(MAX)) . . . . . 107
5.2.3. job-sheets (type2 keyword | name(MAX)) . . . . . . . 109 5.2.3. job-sheets (type2 keyword | name(MAX)) . . . . . . . 108
5.2.4. multiple-document-handling (type2 keyword) . . . . . 109 5.2.4. multiple-document-handling (type2 keyword) . . . . . 109
5.2.5. copies (integer(1:MAX)) . . . . . . . . . . . . . . . 111 5.2.5. copies (integer(1:MAX)) . . . . . . . . . . . . . . . 110
5.2.6. finishings (1setOf type2 enum) . . . . . . . . . . . 111 5.2.6. finishings (1setOf type2 enum) . . . . . . . . . . . 111
5.2.7. page-ranges (1setOf rangeOfInteger(1:MAX)) . . . . . 114 5.2.7. page-ranges (1setOf rangeOfInteger(1:MAX)) . . . . . 114
5.2.8. sides (type2 keyword) . . . . . . . . . . . . . . . . 115 5.2.8. sides (type2 keyword) . . . . . . . . . . . . . . . . 115
5.2.9. number-up (integer(1:MAX)) . . . . . . . . . . . . . 116 5.2.9. number-up (integer(1:MAX)) . . . . . . . . . . . . . 115
5.2.10. orientation-requested (type2 enum) . . . . . . . . . 116 5.2.10. orientation-requested (type2 enum) . . . . . . . . . 116
5.2.11. media (type2 keyword | name(MAX)) . . . . . . . . . . 118 5.2.11. media (type2 keyword | name(MAX)) . . . . . . . . . . 117
5.2.12. printer-resolution (resolution) . . . . . . . . . . . 119 5.2.12. printer-resolution (resolution) . . . . . . . . . . . 118
5.2.13. print-quality (type2 enum) . . . . . . . . . . . . . 119 5.2.13. print-quality (type2 enum) . . . . . . . . . . . . . 119
5.3. Job Description and Status Attributes . . . . . . . . . . 119 5.3. Job Description and Status Attributes . . . . . . . . . . 119
5.3.1. job-id (integer(1:MAX)) . . . . . . . . . . . . . . . 121 5.3.1. job-id (integer(1:MAX)) . . . . . . . . . . . . . . . 121
5.3.2. job-uri (uri) . . . . . . . . . . . . . . . . . . . . 121 5.3.2. job-uri (uri) . . . . . . . . . . . . . . . . . . . . 121
5.3.3. job-printer-uri (uri) . . . . . . . . . . . . . . . . 122 5.3.3. job-printer-uri (uri) . . . . . . . . . . . . . . . . 122
5.3.4. job-more-info (uri) . . . . . . . . . . . . . . . . . 122 5.3.4. job-more-info (uri) . . . . . . . . . . . . . . . . . 122
5.3.5. job-name (name(MAX)) . . . . . . . . . . . . . . . . 122 5.3.5. job-name (name(MAX)) . . . . . . . . . . . . . . . . 122
5.3.6. job-originating-user-name (name(MAX)) . . . . . . . . 122 5.3.6. job-originating-user-name (name(MAX)) . . . . . . . . 122
5.3.7. job-state (type1 enum) . . . . . . . . . . . . . . . 123 5.3.7. job-state (type1 enum) . . . . . . . . . . . . . . . 123
5.3.7.1. Forwarding Servers . . . . . . . . . . . . . . . 126 5.3.7.1. Forwarding Servers . . . . . . . . . . . . . . . 125
5.3.7.2. Partitioning of Job States . . . . . . . . . . . 126 5.3.7.2. Partitioning of Job States . . . . . . . . . . . 126
5.3.8. job-state-reasons (1setOf type2 keyword) . . . . . . 127 5.3.8. job-state-reasons (1setOf type2 keyword) . . . . . . 127
5.3.9. job-state-message (text(MAX)) . . . . . . . . . . . . 132 5.3.9. job-state-message (text(MAX)) . . . . . . . . . . . . 131
5.3.10. job-detailed-status-messages (1setOf text(MAX)) . . . 132 5.3.10. job-detailed-status-messages (1setOf text(MAX)) . . . 132
5.3.11. job-document-access-errors (1setOf text(MAX)) . . . . 132 5.3.11. job-document-access-errors (1setOf text(MAX)) . . . . 132
5.3.12. number-of-documents (integer(0:MAX)) . . . . . . . . 133 5.3.12. number-of-documents (integer(0:MAX)) . . . . . . . . 132
5.3.13. output-device-assigned (name(127)) . . . . . . . . . 133 5.3.13. output-device-assigned (name(127)) . . . . . . . . . 133
5.3.14. Event Time Job Status Attributes . . . . . . . . . . 133 5.3.14. Event Time Job Status Attributes . . . . . . . . . . 133
5.3.14.1. time-at-creation (integer(MIN:MAX)) . . . . . . 134 5.3.14.1. time-at-creation (integer(MIN:MAX)) . . . . . . 134
5.3.14.2. time-at-processing (integer(MIN:MAX)) . . . . . 134 5.3.14.2. time-at-processing (integer(MIN:MAX)) . . . . . 134
5.3.14.3. time-at-completed (integer(MIN:MAX)) . . . . . . 134 5.3.14.3. time-at-completed (integer(MIN:MAX)) . . . . . . 134
5.3.14.4. job-printer-up-time (integer(1:MAX)) . . . . . . 134 5.3.14.4. job-printer-up-time (integer(1:MAX)) . . . . . . 134
5.3.14.5. date-time-at-creation (dateTime) . . . . . . . . 135 5.3.14.5. date-time-at-creation (dateTime|unknown) . . . . 134
5.3.14.6. date-time-at-processing (dateTime) . . . . . . . 135 5.3.14.6. date-time-at-processing (dateTime|unknown|no-
5.3.14.7. date-time-at-completed (dateTime) . . . . . . . 135 value) . . . . . . . . . . . . . . . . . . . . . 135
5.3.14.7. date-time-at-completed (dateTime|unknown|no-
value) . . . . . . . . . . . . . . . . . . . . . 135
5.3.15. number-of-intervening-jobs (integer(0:MAX)) . . . . . 135 5.3.15. number-of-intervening-jobs (integer(0:MAX)) . . . . . 135
5.3.16. job-message-from-operator (text(127)) . . . . . . . . 135 5.3.16. job-message-from-operator (text(127)) . . . . . . . . 135
5.3.17. Job Size Attributes . . . . . . . . . . . . . . . . . 135 5.3.17. Job Size Attributes . . . . . . . . . . . . . . . . . 135
5.3.17.1. job-k-octets (integer(0:MAX)) . . . . . . . . . 136 5.3.17.1. job-k-octets (integer(0:MAX)) . . . . . . . . . 135
5.3.17.2. job-impressions (integer(0:MAX)) . . . . . . . . 136 5.3.17.2. job-impressions (integer(0:MAX)) . . . . . . . . 136
5.3.17.3. job-media-sheets (integer(0:MAX)) . . . . . . . 137 5.3.17.3. job-media-sheets (integer(1:MAX)) . . . . . . . 136
5.3.18. Job Progress Attributes . . . . . . . . . . . . . . . 137 5.3.18. Job Progress Attributes . . . . . . . . . . . . . . . 137
5.3.18.1. job-k-octets-processed (integer(0:MAX)) . . . . 137 5.3.18.1. job-k-octets-processed (integer(0:MAX)) . . . . 137
5.3.18.2. job-impressions-completed (integer(0:MAX)) . . . 137 5.3.18.2. job-impressions-completed (integer(0:MAX)) . . . 137
5.3.18.3. job-media-sheets-completed (integer(0:MAX)) . . 138 5.3.18.3. job-media-sheets-completed (integer(0:MAX)) . . 137
5.3.19. attributes-charset (charset) . . . . . . . . . . . . 138 5.3.19. attributes-charset (charset) . . . . . . . . . . . . 137
5.3.20. attributes-natural-language (naturalLanguage) . . . . 138 5.3.20. attributes-natural-language (naturalLanguage) . . . . 138
5.4. Printer Description and Status Attributes . . . . . . . . 138 5.4. Printer Description and Status Attributes . . . . . . . . 138
5.4.1. printer-uri-supported (1setOf uri) . . . . . . . . . 141 5.4.1. printer-uri-supported (1setOf uri) . . . . . . . . . 140
5.4.2. uri-authentication-supported (1setOf type2 keyword) . 141 5.4.2. uri-authentication-supported (1setOf type2 keyword) . 141
5.4.3. uri-security-supported (1setOf type2 keyword) . . . . 142 5.4.3. uri-security-supported (1setOf type2 keyword) . . . . 142
5.4.4. printer-name (name(127)) . . . . . . . . . . . . . . 144 5.4.4. printer-name (name(127)) . . . . . . . . . . . . . . 143
5.4.5. printer-location (text(127)) . . . . . . . . . . . . 144 5.4.5. printer-location (text(127)) . . . . . . . . . . . . 143
5.4.6. printer-info (text(127)) . . . . . . . . . . . . . . 144 5.4.6. printer-info (text(127)) . . . . . . . . . . . . . . 144
5.4.7. printer-more-info (uri) . . . . . . . . . . . . . . . 144 5.4.7. printer-more-info (uri) . . . . . . . . . . . . . . . 144
5.4.8. printer-driver-installer (uri) . . . . . . . . . . . 144 5.4.8. printer-driver-installer (uri) . . . . . . . . . . . 144
5.4.9. printer-make-and-model (text(127)) . . . . . . . . . 145 5.4.9. printer-make-and-model (text(127)) . . . . . . . . . 144
5.4.10. printer-more-info-manufacturer (uri) . . . . . . . . 145 5.4.10. printer-more-info-manufacturer (uri) . . . . . . . . 144
5.4.11. printer-state (type1 enum) . . . . . . . . . . . . . 145 5.4.11. printer-state (type1 enum) . . . . . . . . . . . . . 145
5.4.12. printer-state-reasons (1setOf type2 keyword) . . . . 146 5.4.12. printer-state-reasons (1setOf type2 keyword) . . . . 145
5.4.13. printer-state-message (text(MAX)) . . . . . . . . . . 150 5.4.13. printer-state-message (text(MAX)) . . . . . . . . . . 149
5.4.14. ipp-versions-supported (1setOf type2 keyword) . . . . 150 5.4.14. ipp-versions-supported (1setOf type2 keyword) . . . . 150
5.4.15. operations-supported (1setOf type2 enum) . . . . . . 151 5.4.15. operations-supported (1setOf type2 enum) . . . . . . 150
5.4.16. multiple-document-jobs-supported (boolean) . . . . . 153 5.4.16. multiple-document-jobs-supported (boolean) . . . . . 152
5.4.17. charset-configured (charset) . . . . . . . . . . . . 153 5.4.17. charset-configured (charset) . . . . . . . . . . . . 152
5.4.18. charset-supported (1setOf charset) . . . . . . . . . 153 5.4.18. charset-supported (1setOf charset) . . . . . . . . . 152
5.4.19. natural-language-configured (naturalLanguage) . . . . 153 5.4.19. natural-language-configured (naturalLanguage) . . . . 152
5.4.20. generated-natural-language-supported (1setOf 5.4.20. generated-natural-language-supported (1setOf
naturalLanguage) . . . . . . . . . . . . . . . . . . 154 naturalLanguage) . . . . . . . . . . . . . . . . . . 153
5.4.21. document-format-default (mimeMediaType) . . . . . . . 154 5.4.21. document-format-default (mimeMediaType) . . . . . . . 153
5.4.22. document-format-supported (1setOf mimeMediaType) . . 154 5.4.22. document-format-supported (1setOf mimeMediaType) . . 153
5.4.23. printer-is-accepting-jobs (boolean) . . . . . . . . . 154 5.4.23. printer-is-accepting-jobs (boolean) . . . . . . . . . 153
5.4.24. queued-job-count (integer(0:MAX)) . . . . . . . . . . 155 5.4.24. queued-job-count (integer(0:MAX)) . . . . . . . . . . 154
5.4.25. printer-message-from-operator (text(127)) . . . . . . 155 5.4.25. printer-message-from-operator (text(127)) . . . . . . 154
5.4.26. color-supported (boolean) . . . . . . . . . . . . . . 155 5.4.26. color-supported (boolean) . . . . . . . . . . . . . . 154
5.4.27. reference-uri-schemes-supported (1setOf uriScheme) . 155 5.4.27. reference-uri-schemes-supported (1setOf uriScheme) . 154
5.4.28. pdl-override-supported (type2 keyword) . . . . . . . 156 5.4.28. pdl-override-supported (type2 keyword) . . . . . . . 155
5.4.29. printer-up-time (integer(1:MAX)) . . . . . . . . . . 156 5.4.29. printer-up-time (integer(1:MAX)) . . . . . . . . . . 155
5.4.30. printer-current-time (dateTime) . . . . . . . . . . . 157 5.4.30. printer-current-time (dateTime|unknown) . . . . . . . 156
5.4.31. multiple-operation-time-out (integer(1:MAX)) . . . . 157 5.4.31. multiple-operation-time-out (integer(1:MAX)) . . . . 156
5.4.32. compression-supported (1setOf type2 keyword) . . . . 158 5.4.32. compression-supported (1setOf type2 keyword) . . . . 157
5.4.33. job-k-octets-supported (rangeOfInteger(0:MAX)) . . . 158 5.4.33. job-k-octets-supported (rangeOfInteger(0:MAX)) . . . 157
5.4.34. job-impressions-supported (rangeOfInteger(0:MAX)) . . 158 5.4.34. job-impressions-supported (rangeOfInteger(0:MAX)) . . 157
5.4.35. job-media-sheets-supported (rangeOfInteger(0:MAX)) . 158 5.4.35. job-media-sheets-supported (rangeOfInteger(1:MAX)) . 157
5.4.36. pages-per-minute (integer(0:MAX)) . . . . . . . . . . 159 5.4.36. pages-per-minute (integer(0:MAX)) . . . . . . . . . . 158
5.4.37. pages-per-minute-color (integer(0:MAX)) . . . . . . . 159 5.4.37. pages-per-minute-color (integer(0:MAX)) . . . . . . . 158
6. Conformance . . . . . . . . . . . . . . . . . . . . . . . . . 159 6. Conformance . . . . . . . . . . . . . . . . . . . . . . . . . 159
6.1. Client Conformance Requirements . . . . . . . . . . . . . 160 6.1. Client Conformance Requirements . . . . . . . . . . . . . 159
6.2. IPP Object Conformance Requirements . . . . . . . . . . . 161 6.2. IPP Object Conformance Requirements . . . . . . . . . . . 160
6.2.1. Objects . . . . . . . . . . . . . . . . . . . . . . . 161 6.2.1. Objects . . . . . . . . . . . . . . . . . . . . . . . 160
6.2.2. Operations . . . . . . . . . . . . . . . . . . . . . 161 6.2.2. Operations . . . . . . . . . . . . . . . . . . . . . 161
6.2.3. IPP Object Attributes . . . . . . . . . . . . . . . . 163 6.2.3. IPP Object Attributes . . . . . . . . . . . . . . . . 162
6.2.4. Versions . . . . . . . . . . . . . . . . . . . . . . 163 6.2.4. Versions . . . . . . . . . . . . . . . . . . . . . . 163
6.2.5. Extensions . . . . . . . . . . . . . . . . . . . . . 164 6.2.5. Extensions . . . . . . . . . . . . . . . . . . . . . 163
6.2.6. Attribute Syntaxes . . . . . . . . . . . . . . . . . 164 6.2.6. Attribute Syntaxes . . . . . . . . . . . . . . . . . 163
6.2.7. Security . . . . . . . . . . . . . . . . . . . . . . 164 6.2.7. Security . . . . . . . . . . . . . . . . . . . . . . 164
6.3. Charset and Natural Language Requirements . . . . . . . . 165 6.3. Charset and Natural Language Requirements . . . . . . . . 164
7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 165 7. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 165
7.1. Object Extensions . . . . . . . . . . . . . . . . . . . . 166 7.1. Object Extensions . . . . . . . . . . . . . . . . . . . . 166
7.2. Attribute Extensibility . . . . . . . . . . . . . . . . . 166 7.2. Attribute Extensibility . . . . . . . . . . . . . . . . . 166
7.3. Keyword Extensibility . . . . . . . . . . . . . . . . . . 167 7.3. Keyword Extensibility . . . . . . . . . . . . . . . . . . 167
7.4. Enum Extensibility . . . . . . . . . . . . . . . . . . . 168 7.4. Enum Extensibility . . . . . . . . . . . . . . . . . . . 167
7.5. Attribute Group Extensibility . . . . . . . . . . . . . . 168 7.5. Attribute Group Extensibility . . . . . . . . . . . . . . 168
7.6. Out-of-Band Attribute Value Extensibility . . . . . . . . 169 7.6. Out-of-Band Attribute Value Extensibility . . . . . . . . 168
7.7. Attribute Syntax Extensibility . . . . . . . . . . . . . 169 7.7. Attribute Syntax Extensibility . . . . . . . . . . . . . 168
7.8. Operation Extensibility . . . . . . . . . . . . . . . . . 169 7.8. Operation Extensibility . . . . . . . . . . . . . . . . . 169
7.9. Status-Code Extensibility . . . . . . . . . . . . . . . . 170 7.9. Status-Code Extensibility . . . . . . . . . . . . . . . . 169
8. Internationalization Considerations . . . . . . . . . . . . . 170 8. Internationalization Considerations . . . . . . . . . . . . . 170
9. Security Considerations . . . . . . . . . . . . . . . . . . . 174 9. Security Considerations . . . . . . . . . . . . . . . . . . . 174
9.1. Security Scenarios . . . . . . . . . . . . . . . . . . . 175 9.1. Security Scenarios . . . . . . . . . . . . . . . . . . . 175
9.1.1. Client and Server in the Same Security Domain . . . . 175 9.1.1. Client and Server in the Same Security Domain . . . . 175
9.1.2. Client and Server in Different Security Domains . . . 175 9.1.2. Client and Server in Different Security Domains . . . 175
9.1.3. Print by Reference . . . . . . . . . . . . . . . . . 176 9.1.3. Print by Reference . . . . . . . . . . . . . . . . . 175
9.2. URIs in Operation, Job, and Printer Attributes . . . . . 176 9.2. URIs in Operation, Job, and Printer Attributes . . . . . 176
9.3. URIs for Each Authentication Mechanism . . . . . . . . . 176 9.3. URIs for Each Authentication Mechanism . . . . . . . . . 176
9.4. Restricted Queries . . . . . . . . . . . . . . . . . . . 177 9.4. Restricted Queries . . . . . . . . . . . . . . . . . . . 177
9.5. Operations Performed by Operators and Administrators . . 178 9.5. Operations Performed by Operators and Administrators . . 177
9.6. Queries on Jobs Submitted Using Non-IPP Protocols . . . . 178 9.6. Queries on Jobs Submitted Using Non-IPP Protocols . . . . 178
10. Changes since RFC 2911 . . . . . . . . . . . . . . . . . . . 178 10. Changes since RFC 2911 . . . . . . . . . . . . . . . . . . . 178
11. References . . . . . . . . . . . . . . . . . . . . . . . . . 180 11. References . . . . . . . . . . . . . . . . . . . . . . . . . 179
11.1. Normative References . . . . . . . . . . . . . . . . . . 180 11.1. Normative References . . . . . . . . . . . . . . . . . . 179
11.2. Informative References . . . . . . . . . . . . . . . . . 185 11.2. Informative References . . . . . . . . . . . . . . . . . 185
Appendix A. Formats for IPP Registration Proposals . . . . . . . 188 Appendix A. Formats for IPP Registration Proposals . . . . . . . 187
A.1. Attribute Registration . . . . . . . . . . . . . . . . . 188 A.1. Attribute Registration . . . . . . . . . . . . . . . . . 188
A.2. type2 'keyword' Attribute Value Registration . . . . . . 189 A.2. type2 'keyword' Attribute Value Registration . . . . . . 188
A.3. type2 'enum' Attribute Value Registration . . . . . . . . 190 A.3. type2 'enum' Attribute Value Registration . . . . . . . . 189
A.4. Operation Registration . . . . . . . . . . . . . . . . . 190 A.4. Operation Registration . . . . . . . . . . . . . . . . . 189
A.5. Status-Code Registration . . . . . . . . . . . . . . . . 191 A.5. Status-Code Registration . . . . . . . . . . . . . . . . 190
Appendix B. Status-Codes and Suggested Status-Code Messages . . 191 Appendix B. Status-Code Values and Suggested Status-Code
B.1. Status-Codes . . . . . . . . . . . . . . . . . . . . . . 192 Messages . . . . . . . . . . . . . . . . . . . . . . 190
B.1. Status-Code Values . . . . . . . . . . . . . . . . . . . 191
B.1.1. Informational . . . . . . . . . . . . . . . . . . . . 192 B.1.1. Informational . . . . . . . . . . . . . . . . . . . . 192
B.1.2. Successful Status-Codes . . . . . . . . . . . . . . . 193 B.1.2. Successful Status-Code Values . . . . . . . . . . . . 192
B.1.2.1. successful-ok (0x0000) . . . . . . . . . . . . . 193 B.1.2.1. successful-ok (0x0000) . . . . . . . . . . . . . 192
B.1.2.2. successful-ok-ignored-or-substituted-attributes B.1.2.2. successful-ok-ignored-or-substituted-attributes
(0x0001) . . . . . . . . . . . . . . . . . . . . 193 (0x0001) . . . . . . . . . . . . . . . . . . . . 192
B.1.2.3. successful-ok-conflicting-attributes (0x0002) . . 193 B.1.2.3. successful-ok-conflicting-attributes (0x0002) . . 192
B.1.3. Redirection Status-Codes . . . . . . . . . . . . . . 193 B.1.3. Redirection Status-Code Values . . . . . . . . . . . 193
B.1.4. Client Error Status-Codes . . . . . . . . . . . . . . 194 B.1.4. Client Error Status-Code Values . . . . . . . . . . . 193
B.1.4.1. client-error-bad-request (0x0400) . . . . . . . . 194 B.1.4.1. client-error-bad-request (0x0400) . . . . . . . . 193
B.1.4.2. client-error-forbidden (0x0401) . . . . . . . . . 194 B.1.4.2. client-error-forbidden (0x0401) . . . . . . . . . 193
B.1.4.3. client-error-not-authenticated (0x0402) . . . . . 194 B.1.4.3. client-error-not-authenticated (0x0402) . . . . . 193
B.1.4.4. client-error-not-authorized (0x0403) . . . . . . 194 B.1.4.4. client-error-not-authorized (0x0403) . . . . . . 194
B.1.4.5. client-error-not-possible (0x0404) . . . . . . . 195 B.1.4.5. client-error-not-possible (0x0404) . . . . . . . 194
B.1.4.6. client-error-timeout (0x0405) . . . . . . . . . . 195 B.1.4.6. client-error-timeout (0x0405) . . . . . . . . . . 194
B.1.4.7. client-error-not-found (0x0406) . . . . . . . . . 195 B.1.4.7. client-error-not-found (0x0406) . . . . . . . . . 194
B.1.4.8. client-error-gone (0x0407) . . . . . . . . . . . 195 B.1.4.8. client-error-gone (0x0407) . . . . . . . . . . . 195
B.1.4.9. client-error-request-entity-too-large (0x0408) . 196 B.1.4.9. client-error-request-entity-too-large (0x0408) . 195
B.1.4.10. client-error-request-value-too-long (0x0409) . . 196 B.1.4.10. client-error-request-value-too-long (0x0409) . . 195
B.1.4.11. client-error-document-format-not-supported B.1.4.11. client-error-document-format-not-supported
(0x040a) . . . . . . . . . . . . . . . . . . . . 196 (0x040a) . . . . . . . . . . . . . . . . . . . . 196
B.1.4.12. client-error-attributes-or-values-not-supported B.1.4.12. client-error-attributes-or-values-not-supported
(0x040b) . . . . . . . . . . . . . . . . . . . . 197 (0x040b) . . . . . . . . . . . . . . . . . . . . 196
B.1.4.13. client-error-uri-scheme-not-supported (0x040c) . 197 B.1.4.13. client-error-uri-scheme-not-supported (0x040c) . 196
B.1.4.14. client-error-charset-not-supported (0x040d) . . . 197 B.1.4.14. client-error-charset-not-supported (0x040d) . . . 197
B.1.4.15. client-error-conflicting-attributes (0x040e) . . 198 B.1.4.15. client-error-conflicting-attributes (0x040e) . . 197
B.1.4.16. client-error-compression-not-supported (0x040f) . 198 B.1.4.16. client-error-compression-not-supported (0x040f) . 197
B.1.4.17. client-error-compression-error (0x0410) . . . . . 198 B.1.4.17. client-error-compression-error (0x0410) . . . . . 197
B.1.4.18. client-error-document-format-error (0x0411) . . . 198 B.1.4.18. client-error-document-format-error (0x0411) . . . 197
B.1.4.19. client-error-document-access-error (0x0412) . . . 198 B.1.4.19. client-error-document-access-error (0x0412) . . . 198
B.1.5. Server Error Status-Codes . . . . . . . . . . . . . . 199 B.1.5. Server Error Status-Code Values . . . . . . . . . . . 198
B.1.5.1. server-error-internal-error (0x0500) . . . . . . 199 B.1.5.1. server-error-internal-error (0x0500) . . . . . . 198
B.1.5.2. server-error-operation-not-supported (0x0501) . . 199 B.1.5.2. server-error-operation-not-supported (0x0501) . . 198
B.1.5.3. server-error-service-unavailable (0x0502) . . . . 199 B.1.5.3. server-error-service-unavailable (0x0502) . . . . 198
B.1.5.4. server-error-version-not-supported (0x0503) . . . 200 B.1.5.4. server-error-version-not-supported (0x0503) . . . 199
B.1.5.5. server-error-device-error (0x0504) . . . . . . . 200 B.1.5.5. server-error-device-error (0x0504) . . . . . . . 199
B.1.5.6. server-error-temporary-error (0x0505) . . . . . . 200 B.1.5.6. server-error-temporary-error (0x0505) . . . . . . 200
B.1.5.7. server-error-not-accepting-jobs (0x0506) . . . . 201 B.1.5.7. server-error-not-accepting-jobs (0x0506) . . . . 200
B.1.5.8. server-error-busy (0x0507) . . . . . . . . . . . 201 B.1.5.8. server-error-busy (0x0507) . . . . . . . . . . . 200
B.1.5.9. server-error-job-canceled (0x0508) . . . . . . . 201 B.1.5.9. server-error-job-canceled (0x0508) . . . . . . . 200
B.1.5.10. server-error-multiple-document-jobs-not-supported B.1.5.10. server-error-multiple-document-jobs-not-supported
(0x0509) . . . . . . . . . . . . . . . . . . . . 201 (0x0509) . . . . . . . . . . . . . . . . . . . . 200
B.2. Status-Codes for IPP Operations . . . . . . . . . . . . . 201 B.2. Status-Code Values for IPP Operations . . . . . . . . . . 200
Appendix C. Processing IPP Attributes . . . . . . . . . . . . . 203 Appendix C. Processing IPP Attributes . . . . . . . . . . . . . 202
C.1. Fidelity . . . . . . . . . . . . . . . . . . . . . . . . 204 C.1. Fidelity . . . . . . . . . . . . . . . . . . . . . . . . 203
C.2. Page Description Language (PDL) Override . . . . . . . . 205 C.2. Page Description Language (PDL) Override . . . . . . . . 204
C.3. Using Job Template Attributes during Document Processing 207 C.3. Using Job Template Attributes during Document Processing 206
Appendix D. Generic Directory Schema . . . . . . . . . . . . . . 209 Appendix D. Generic Directory Schema . . . . . . . . . . . . . . 208
Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 211 Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . . 210
Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 211 Authors' Addresses . . . . . . . . . . . . . . . . . . . . . . . 210
1. Introduction 1. Introduction
The Internet Printing Protocol (IPP) is an application-level protocol The Internet Printing Protocol (IPP) is an application-level protocol
for distributed printing using Internet tools and technologies. IPP for distributed printing using Internet tools and technologies. IPP
version 1.1 (IPP/1.1) focuses primarily on End User functionality version 1.1 (IPP/1.1) focuses primarily on End User functionality
with a few administrative operations included. IPP versions 2.0, with a few administrative operations included. IPP versions 2.0,
2.1, and 2.2 provide many new operations and are defined separately. 2.1, and 2.2 provide many new operations and are defined separately.
This document is just one of a suite of documents that fully define This document is just one of a suite of documents that fully define
skipping to change at page 11, line 8 skipping to change at page 11, line 12
o Section 5 defines the core attributes (and their syntaxes) that o Section 5 defines the core attributes (and their syntaxes) that
are used in the model; are used in the model;
o Sections 6 and 7 summarize the implementation conformance o Sections 6 and 7 summarize the implementation conformance
requirements for objects that support the protocol and IANA requirements for objects that support the protocol and IANA
considerations, respectively; considerations, respectively;
o Sections 8 and 9 cover the internationalization and security o Sections 8 and 9 cover the internationalization and security
considerations for IPP; and considerations for IPP; and
o The appendices provide a reference for status-codes, "media" o The appendices provide a reference for status-code values,
'keyword' values, processing of IPP attributes, and the generic processing of IPP attributes, and the generic directory schema.
directory schema.
1.1. Simplified Printing Model 1.1. Simplified Printing Model
In order to achieve its goal of realizing a workable printing In order to achieve its goal of realizing a workable printing
protocol for the Internet, the Internet Printing Protocol (IPP) is protocol for the Internet, the Internet Printing Protocol (IPP) is
based on a simplified printing model that abstracts the many based on a simplified printing model that abstracts the many
components of real-world printing solutions. The Internet is a components of real-world printing solutions. The Internet is a
distributed computing environment where requesters of print services distributed computing environment where requesters of print services
(Clients, applications, Printer drivers, etc.) cooperate and interact (Clients, applications, Printer drivers, etc.) cooperate and interact
with print service providers. This document (sometimes referred to with print service providers. This document (sometimes referred to
here as the "Model and Semantics" document) describes a simple, here as the "Model and Semantics" document) describes a simple,
abstract model for IPP even though the underlying configurations can abstract model for IPP even though the underlying configurations can
be complex "n-tier" client/server systems. An important simplifying be complex "n-tier" client/server systems. An important simplifying
step in the IPP model is to expose only the key objects and step in the IPP Model is to expose only the key objects and
interfaces required for printing. The model described in this interfaces required for printing. The model described in this
document does not include features, interfaces, and relationships document does not include features, interfaces, and relationships
that are beyond the scope of IPP/1.1. IPP/1.1 incorporates many of that are beyond the scope of IPP/1.1. IPP/1.1 incorporates many of
the relevant ideas and lessons learned from other specification and the relevant ideas and lessons learned from other specification and
development efforts [HTPP] [ISO10175] [LDPA] [P1387.4] [PSIS] development efforts [HTPP] [ISO10175] [LDPA] [P1387.4] [PSIS]
[RFC1179] [SWP]. IPP is heavily influenced by the printing model [RFC1179] [SWP]. IPP is heavily influenced by the printing model
introduced in the Document Printing Application (DPA) [ISO10175] introduced in the Document Printing Application (DPA) [ISO10175]
standard. Although DPA specifies both End User and administrative standard. Although DPA specifies both End User and administrative
features, IPP/1.1 focuses primarily on End User functionality with a features, IPP/1.1 focuses primarily on End User functionality with a
few additional OPTIONAL operations for Administrators and Operators. few additional OPTIONAL operations for Administrators and Operators.
The IPP model encapsulates the important components of distributed The IPP Model encapsulates the important components of distributed
printing into the following IPP object types: printing into the following IPP object types:
o Printer (Section 3.1) o Printer (Section 3.1)
o Job (Section 3.2) o Job (Section 3.2)
o Document (see [PWG5100.5]) o Document (see [PWG5100.5])
o Subscription (see [RFC3995]) o Subscription (see [RFC3995])
Each object type has an associated set of operations (see Section 4) Each object type has an associated set of operations (see Section 4)
and attributes (see Section 5). and attributes (see Section 5).
It is important, however, to understand that in real system It is important, however, to understand that in real system
implementations (which lie underneath the abstracted IPP model), implementations (which lie underneath the abstracted IPP Model),
there are other components of a print service that are not explicitly there are other components of a print service that are not explicitly
defined in the IPP model. The following figure illustrates where IPP defined in the IPP Model. The following figure illustrates where IPP
fits with respect to these other components. fits with respect to these other components.
+----------------+ +----------------+
| Application | | Application |
o + . . . . . . . | o + . . . . . . . |
\|/ | Spooler | \|/ | Spooler |
/ \ + . . . . . . . | +---------+ / \ + . . . . . . . | +---------+
End User | Printer Driver |---| File | End User | Printer Driver |---| File |
+-----------+ +-----+ +-------+--------+ +----+----+ +-----------+ +-----+ +-------+--------+ +----+----+
| Browser | | GUI | | | | Browser | | GUI | | |
skipping to change at page 18, line 43 skipping to change at page 18, line 47
mechanism that is outside the scope of this document. For mechanism that is outside the scope of this document. For
administrative policy and control reasons, an Administrator can administrative policy and control reasons, an Administrator can
choose to make only a subset of possible values visible to the End choose to make only a subset of possible values visible to the End
User. In this case, the real Output Device behind the IPP Printer User. In this case, the real Output Device behind the IPP Printer
abstraction can be capable of a certain feature; however, an abstraction can be capable of a certain feature; however, an
Administrator is specifying that access to that feature not be Administrator is specifying that access to that feature not be
exposed to the End User through IPP. Also, since a Printer can exposed to the End User through IPP. Also, since a Printer can
represent a logical print device (not just a Physical Device), the represent a logical print device (not just a Physical Device), the
actual process for supporting a value is undefined and left up to the actual process for supporting a value is undefined and left up to the
implementation. However, if a Printer supports a value, some manual implementation. However, if a Printer supports a value, some manual
human action may be needed to realize the semantic action associated human action might be needed to realize the semantic action
with the value, but no End User action is required. associated with the value, but no End User action is required.
For example, if one of the values in the "finishings-supported" For example, if one of the values in the "finishings-supported"
attribute is 'staple', the actual process might be an automatic attribute is 'staple', the actual process might be an automatic
staple action by a Physical Device controlled by some command sent to staple action by a Physical Device controlled by some command sent to
the device. Or, the actual process of stapling might be a manual the device. Or, the actual process of stapling might be a manual
action by an Operator at an Operator-attended Printer. action by an Operator at an Operator-attended Printer.
For another example of how supported attributes function, consider an For another example of how supported attributes function, consider an
Administrator who desires to control all Print Jobs so that no Job Administrator who desires to control all Print Jobs so that no Job
sheets are printed in order to conserve paper. To force no Job sheets are printed in order to conserve paper. To force no Job
skipping to change at page 21, line 9 skipping to change at page 21, line 12
o "OPTIONAL": each object MAY support the attribute. o "OPTIONAL": each object MAY support the attribute.
Some definitions of attribute values indicate that an object MUST or Some definitions of attribute values indicate that an object MUST or
SHOULD support the value; otherwise, support of the value is SHOULD support the value; otherwise, support of the value is
OPTIONAL. However, if an implementation supports an attribute, it OPTIONAL. However, if an implementation supports an attribute, it
MUST support at least one of the possible values for that attribute. MUST support at least one of the possible values for that attribute.
3.1. Printer Object 3.1. Printer Object
The major component of the IPP model is the Printer object. A The major component of the IPP Model is the Printer object. A
Printer object implements the server side of the IPP/1.1 protocol. Printer object implements the server side of the IPP/1.1 protocol.
Using the protocol, End Users can query the attributes of the Printer Using the protocol, End Users can query the attributes of the Printer
object and submit Print Jobs to the Printer object. The actual object and submit Print Jobs to the Printer object. The actual
implementation components behind the Printer abstraction can take on implementation components behind the Printer abstraction can take on
different forms and different configurations. However, the model different forms and different configurations. However, the model
abstraction allows the details of the configuration of real abstraction allows the details of the configuration of real
components to remain opaque to the End User. Section 4 describes components to remain opaque to the End User. Section 4 describes
each of the Printer operations in detail. each of the Printer operations in detail.
The capabilities and state of a Printer object are described by its The capabilities and state of a Printer object are described by its
skipping to change at page 24, line 19 skipping to change at page 24, line 19
Client or End User and include Job processing instructions that Client or End User and include Job processing instructions that
are intended to override any Printer defaults and/or instructions are intended to override any Printer defaults and/or instructions
embedded within the Document data (see Section 5.2) embedded within the Document data (see Section 5.2)
o "job-description" attributes: These attributes describe the Job's o "job-description" attributes: These attributes describe the Job's
identification, state, size, etc. The Client supplies some of identification, state, size, etc. The Client supplies some of
these attributes, and the Printer generates others (see these attributes, and the Printer generates others (see
Section 5.3) Section 5.3)
An implementation MUST support at least one Document per Job object. An implementation MUST support at least one Document per Job object.
An implementation MAY support multiple Documents per Job objects. A An implementation MAY support multiple Documents per Job object. A
Document is either: Document is either:
o a stream of Document data in a format supported by the Printer o a stream of Document data in a format supported by the Printer
(typically a Page Description Language -- PDL), or (typically a Page Description Language -- PDL), or
o a reference to such a stream of Document data. o a reference to such a stream of Document data.
All Job processing instructions are modeled as Job object attributes. All Job processing instructions are modeled as Job object attributes.
These attributes are called "Job Template attributes", and they apply These attributes are called "Job Template attributes", and they apply
equally to all Documents within a Job object. equally to all Documents within a Job object.
skipping to change at page 31, line 21 skipping to change at page 31, line 21
-- see Section 4.2.1.1 and Appendix C for a full description of -- see Section 4.2.1.1 and Appendix C for a full description of
"ipp-attribute-fidelity" and its relationship to other attributes. "ipp-attribute-fidelity" and its relationship to other attributes.
o Job Object Attributes: These attributes are returned in response o Job Object Attributes: These attributes are returned in response
to a query operation directed at a Job object. to a query operation directed at a Job object.
o Printer Object Attributes: These attributes are returned in o Printer Object Attributes: These attributes are returned in
response to a query operation directed at a Printer object. response to a query operation directed at a Printer object.
o Unsupported Attributes: In a Job Creation request, the Client o Unsupported Attributes: In a Job Creation request, the Client
supplies a set of Operation and Job Template attributes. If any supplies a set of operation and Job Template attributes. If any
of these attributes or their values are unsupported by the Printer of these attributes or their values are unsupported by the Printer
object, the Printer object SHOULD return the set of unsupported object, the Printer object SHOULD return the set of unsupported
attributes in the response. Section 4.1.7, Section 4.2.1.2, and attributes in the response. Section 4.1.7, Section 4.2.1.2, and
Appendix C give a full description of how Job Template attributes Appendix C give a full description of how Job Template attributes
supplied by the Client in a Job Creation request are processed by supplied by the Client in a Job Creation request are processed by
the Printer object and how unsupported attributes are returned to the Printer object and how unsupported attributes are returned to
the Client. Because of extensibility, any IPP object might the Client. Because of extensibility, any IPP object might
receive a request that contains new or unknown attributes or receive a request that contains new or unknown attributes or
values for which it has no support. In such cases, the IPP object values for which it has no support. In such cases, the IPP object
processes what it can and returns the unsupported attributes in processes what it can and returns the unsupported attributes in
skipping to change at page 33, line 42 skipping to change at page 33, line 42
Printer object MUST reject the request, set the Printer object MUST reject the request, set the
"attributes-charset" to 'utf-8' in the response, and return the "attributes-charset" to 'utf-8' in the response, and return the
'client-error-charset-not-supported' status-code and any 'text' or 'client-error-charset-not-supported' status-code and any 'text' or
'name' attributes using the 'utf-8' charset. The Printer MAY 'name' attributes using the 'utf-8' charset. The Printer MAY
return any attributes in the Unsupported Attributes group (see return any attributes in the Unsupported Attributes group (see
Sections 4.1.7 and 4.2.1.2). The Printer object MUST indicate the Sections 4.1.7 and 4.2.1.2). The Printer object MUST indicate the
charset(s) supported as the values of the "charset-supported" charset(s) supported as the values of the "charset-supported"
Printer attribute (see Section 5.4.18), so that the Client can Printer attribute (see Section 5.4.18), so that the Client can
query to determine which charset(s) is supported. query to determine which charset(s) is supported.
Note to Client implementers: Since IPP objects are only required Note to Client implementors: Since IPP objects are only required
to support the 'utf-8' charset, in order to maximize to support the 'utf-8' charset, in order to maximize
interoperability with multiple IPP object implementations, a interoperability with multiple IPP object implementations, a
Client SHOULD supply 'utf-8' in the "attributes-charset" operation Client SHOULD supply 'utf-8' in the "attributes-charset" operation
attribute, even though the Client is only passing and able to attribute, even though the Client is only passing and able to
present a simpler charset, such as US-ASCII [RFC20] or ISO-8859-1 present a simpler charset, such as US-ASCII [RFC20] or ISO-8859-1
[ISO8859-1]. Then the Client will have to filter out, perform [ISO8859-1]. Then the Client will have to filter out, perform
charset conversion on, or replace those characters that are charset conversion on, or replace those characters that are
returned in the response that it cannot present to its user. On returned in the response that it cannot present to its user. On
the other hand, if both the Client and the IPP objects also the other hand, if both the Client and the IPP objects also
support a charset in common besides 'utf-8', the Client can use support a charset in common besides 'utf-8', the Client can use
skipping to change at page 39, line 44 skipping to change at page 39, line 44
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: "Internet Printing Protocol/1.1: IPP URL Scheme" [RFC3510] and Note: "Internet Printing Protocol/1.1: IPP URL Scheme" [RFC3510] and
"Internet Printing Protocol (IPP) over HTTPS Transport Binding and "Internet Printing Protocol (IPP) over HTTPS Transport Binding and
the 'ipps' URI Scheme" [RFC7472] define the mapping of IPP onto HTTP the 'ipps' URI Scheme" [RFC7472] define the mapping of IPP onto HTTP
and HTTPS, respectively, and define and register a default port and HTTPS, respectively, and define and register a default port
number. number.
4.1.6. Operation Response Status-Codes and Status Messages 4.1.6. Operation Response Status-Code Values and Status Messages
Every operation response includes a REQUIRED "status-code" parameter, Every operation response includes a REQUIRED "status-code" parameter,
SHOULD include the "status-message" operation attribute, and MAY SHOULD include the "status-message" operation attribute, and MAY
include the "detailed-status-message" operation attribute. The include the "detailed-status-message" operation attribute. The
Print-URI and Send-URI response MAY also include the Print-URI and Send-URI response MAY also include the
"document-access-error" operation attribute. "document-access-error" operation attribute.
4.1.6.1. "status-code" (type2 enum) 4.1.6.1. "status-code" (type2 enum)
The REQUIRED "status-code" parameter provides information on the The REQUIRED "status-code" parameter provides information on the
processing of a request. processing of a request.
The status-code is intended for use by automata. A Client The status-code is intended for use by automata. A Client
implementation of IPP SHOULD convert status-code values into any implementation of IPP SHOULD convert status-code values into any
localized message that has semantic meaning to the End User. localized message that has semantic meaning to the End User.
The "status-code" value is a numeric value that has semantic meaning. The "status-code" value is a numeric value that has semantic meaning.
The "status-code" syntax is similar to a "type2 enum" (see The "status-code" syntax is similar to a "type2 enum" (see
Section 5.1 ("Attribute Syntaxes")), except that values can range Section 5.1 ("Attribute Syntaxes")), except that values can range
only from 0x0000 to 0x7fff. Appendix B describes the status-codes, only from 0x0000 to 0x7fff. Appendix B describes and assigns the
assigns the numeric values, and suggests a corresponding status status-code values, and suggests a corresponding status message for
message for each status-code for use by the Client when the user's each status-code for use by the Client when the user's natural
natural language is English. language is English.
If the Printer performs an operation with no errors and it encounters If the Printer performs an operation with no errors and it encounters
no problems, it MUST return the status-code 'successful-ok' in the no problems, it MUST return the status-code 'successful-ok' in the
response. See Appendix B. response. See Appendix B.
If the Client supplies unsupported values for the following If the Client supplies unsupported values for the following
parameters or operation attributes, the Printer object MUST reject parameters or operation attributes, the Printer object MUST reject
the operation, MAY return the unsupported attribute value in the the operation, MAY return the unsupported attribute value in the
Unsupported Attributes group, and MUST return the indicated Unsupported Attributes group, and MUST return the indicated
status-code: status-code:
skipping to change at page 40, line 49 skipping to change at page 40, line 49
| attributes-charset | client-error-charset-not-supported | | attributes-charset | client-error-charset-not-supported |
+---------------------+---------------------------------------------+ +---------------------+---------------------------------------------+
| compression | client-error-compression-not-supported | | compression | client-error-compression-not-supported |
+---------------------+---------------------------------------------+ +---------------------+---------------------------------------------+
| document-format | client-error-document-format-not-supported | | document-format | client-error-document-format-not-supported |
+---------------------+---------------------------------------------+ +---------------------+---------------------------------------------+
| document-uri | client-error-uri-scheme-not-supported, | | document-uri | client-error-uri-scheme-not-supported, |
| | client-error-document-access-error | | | client-error-document-access-error |
+---------------------+---------------------------------------------+ +---------------------+---------------------------------------------+
Table 1: Status-Codes for All Requests Table 1: Status-Code Values for All Requests
If the Client supplies unsupported values for other attributes, or If the Client supplies unsupported values for other attributes, or
unsupported attributes, the Printer returns the status-code defined unsupported attributes, the Printer returns the status-code defined
in Section 4.1.7 ("Unsupported Attributes"). in Section 4.1.7 ("Unsupported Attributes").
4.1.6.2. "status-message" (text(255)) 4.1.6.2. "status-message" (text(255))
The RECOMMENDED "status-message" operation attribute provides a short The RECOMMENDED "status-message" operation attribute provides a short
textual description of the status of the operation. The textual description of the status of the operation. The
"status-message" attribute's syntax is "text(255)", so the maximum "status-message" attribute's syntax is "text(255)", so the maximum
skipping to change at page 41, line 41 skipping to change at page 41, line 41
As described in Section 4.1.4.1, for any returned 'text' attribute, As described in Section 4.1.4.1, for any returned 'text' attribute,
if there is a choice for generating this message, the Printer uses if there is a choice for generating this message, the Printer uses
the natural language indicated by the value of the natural language indicated by the value of
"attributes-natural-language" in the Client request, if supported; "attributes-natural-language" in the Client request, if supported;
otherwise, the Printer uses the value in the Printer's own otherwise, the Printer uses the value in the Printer's own
"natural-language-configured" attribute. "natural-language-configured" attribute.
If the Printer supports the "status-message" operation attribute, it If the Printer supports the "status-message" operation attribute, it
SHOULD use the REQUIRED 'utf-8' charset to return a status message SHOULD use the REQUIRED 'utf-8' charset to return a status message
for the following error status-codes (see Appendix B): for the following error status-code values (see Appendix B):
'client-error-bad-request', 'client-error-charset-not-supported', 'client-error-bad-request', 'client-error-charset-not-supported',
'server-error-internal-error', 'server-error-internal-error',
'server-error-operation-not-supported', and 'server-error-operation-not-supported', and
'server-error-version-not-supported'. In this case, it MUST set the 'server-error-version-not-supported'. In this case, it MUST set the
value of the "attributes-charset" operation attribute to 'utf-8' in value of the "attributes-charset" operation attribute to 'utf-8' in
the error response. the error response.
4.1.6.3. "detailed-status-message" (text(MAX)) 4.1.6.3. "detailed-status-message" (text(MAX))
The OPTIONAL "detailed-status-message" operation attribute provides The OPTIONAL "detailed-status-message" operation attribute provides
skipping to change at page 53, line 45 skipping to change at page 53, line 45
"job-impressions" (integer(0:MAX)): "job-impressions" (integer(0:MAX)):
The Client MAY supply and the Printer SHOULD support this The Client MAY supply and the Printer SHOULD support this
attribute. The Client-supplied "job-impressions" operation attribute. The Client-supplied "job-impressions" operation
attribute identifies the total size in number of Impressions of attribute identifies the total size in number of Impressions of
the Document(s) being submitted (see Section 5.3.17.2 for the the Document(s) being submitted (see Section 5.3.17.2 for the
complete semantics). complete semantics).
See the last paragraph under "job-k-octets". See the last paragraph under "job-k-octets".
"job-media-sheets" (integer(0:MAX)): "job-media-sheets" (integer(1:MAX)):
The Client MAY supply and the Printer SHOULD support this The Client MAY supply and the Printer SHOULD support this
attribute. The Client-supplied "job-media-sheets" operation attribute. The Client-supplied "job-media-sheets" operation
attribute identifies the total number of Media Sheets to be attribute identifies the total number of Media Sheets to be
produced for this Job (see Section 5.3.17.3 for the complete produced for this Job (see Section 5.3.17.3 for the complete
semantics). semantics).
See the last paragraph under "job-k-octets". See the last paragraph under "job-k-octets".
Group 2: Job Template Attributes Group 2: Job Template Attributes
skipping to change at page 55, line 23 skipping to change at page 55, line 23
Group 2: Unsupported Attributes Group 2: Unsupported Attributes
See Section 4.1.7 for details on returning unsupported attributes. See Section 4.1.7 for details on returning unsupported attributes.
The value of "ipp-attribute-fidelity" supplied by the Client does The value of "ipp-attribute-fidelity" supplied by the Client does
not affect what attributes the Printer returns in this group. The not affect what attributes the Printer returns in this group. The
value of "ipp-attribute-fidelity" only affects whether the value of "ipp-attribute-fidelity" only affects whether the
Print-Job operation is accepted or rejected. If the Job is Print-Job operation is accepted or rejected. If the Job is
accepted, the Client can query the Job using the accepted, the Client can query the Job using the
Get-Job-Attributes operation, requesting the unsupported Get-Job-Attributes operation, requesting the unsupported
attributes that were returned in the Create-Job response to see attributes that were returned in the Print-Job response to see
which attributes were ignored (not stored in the Job) and which which attributes were ignored (not stored in the Job) and which
attributes were stored with other (substituted) values. attributes were stored with other (substituted) values.
Group 3: Job Attributes Group 3: Job Attributes
"job-id" (integer(1:MAX)): "job-id" (integer(1:MAX)):
The Printer MUST return the Job's ID in the REQUIRED "job-id" The Printer MUST return the Job's ID in the REQUIRED "job-id"
Job attribute. The Client uses this "job-id" attribute in Job attribute. The Client uses this "job-id" attribute in
conjunction with the "printer-uri" attribute used in the conjunction with the "printer-uri" attribute used in the
skipping to change at page 57, line 10 skipping to change at page 57, line 10
The Printer MAY validate the accessibility of the Document as part of The Printer MAY validate the accessibility of the Document as part of
the operation, or subsequently. If the Printer discovers an the operation, or subsequently. If the Printer discovers an
accessibility problem before returning an operation response, it MUST accessibility problem before returning an operation response, it MUST
reject the request and return the reject the request and return the
'client-error-document-access-error' status-code. The Printer MAY 'client-error-document-access-error' status-code. The Printer MAY
also return a specific Document access error code using the also return a specific Document access error code using the
"document-access-error" operation attribute (see Section 4.1.6.4). "document-access-error" operation attribute (see Section 4.1.6.4).
If the Printer discovers this Document accessibility problem after If the Printer discovers this Document accessibility problem after
accepting the request and returning an operation response with one of accepting the request and returning an operation response with one of
the successful status-codes, the Printer MUST add the the successful status-code values, the Printer MUST add the
"document-access-error" value to the Job's "job-state-reasons" "document-access-error" value to the Job's "job-state-reasons"
attribute and MAY populate the Job's "job-document-access-errors" Job attribute and MAY populate the Job's "job-document-access-errors" Job
Status attribute (see Section 5.3.11). See the Implementor's Guides Status attribute (see Section 5.3.11). See the Implementor's Guides
[RFC3196] [PWG5100.19] for guidance on processing Job Creation [RFC3196] [PWG5100.19] for guidance on processing Job Creation
requests. requests.
If the Printer supports this operation, it MUST support the If the Printer supports this operation, it MUST support the
"reference-uri-schemes-supported" Printer attribute (see "reference-uri-schemes-supported" Printer attribute (see
Section 5.4.27). Section 5.4.27).
skipping to change at page 57, line 45 skipping to change at page 57, line 45
and Create-Job operations (see Section 9) so that a Client can check and Create-Job operations (see Section 9) so that a Client can check
that the Client and Printer security requirements can be met before that the Client and Printer security requirements can be met before
performing a Job Creation request. performing a Job Creation request.
The Validate-Job operation does not accept a "document-uri" attribute The Validate-Job operation does not accept a "document-uri" attribute
in order to allow a Client to check that the same Print-URI operation in order to allow a Client to check that the same Print-URI operation
will be accepted, since the Client doesn't send the data with the will be accepted, since the Client doesn't send the data with the
Print-URI operation. The Client SHOULD just issue the Print-URI Print-URI operation. The Client SHOULD just issue the Print-URI
request. request.
The Printer returns the same status-codes, Operation Attributes The Printer returns the same status-code values, 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 Attributes (Group 3) are returned, since operation. However, no Job Attributes (Group 3) are returned, since
no Job is created. no Job is created.
4.2.4. Create-Job Operation 4.2.4. Create-Job Operation
This RECOMMENDED operation is similar to the Print-Job operation This RECOMMENDED operation is similar to the Print-Job operation
(Section 4.2.1), except that in the Create-Job request, a Client does (Section 4.2.1), except that in the Create-Job request, a Client does
not supply Document data or any reference to Document data. Also, not supply Document data or any reference to Document data. Also,
the Client does not supply any of the "document-name", the Client does not supply any of the "document-name",
skipping to change at page 60, line 27 skipping to change at page 60, line 27
Printer MUST support this attribute. If the Client omits this Printer MUST support this attribute. If the Client omits this
attribute, the Printer MUST respond as if this attribute had attribute, the Printer MUST respond as if this attribute had
been supplied with a value of 'all'. been supplied with a value of 'all'.
"document-format" (mimeMediaType): "document-format" (mimeMediaType):
The Client MAY supply and the Printer MUST support this The Client MAY supply and the Printer MUST support this
attribute. It is useful for a Client to determine the set of attribute. It is useful for a Client to determine the set of
supported attribute values that relate to the requested supported attribute values that relate to the requested
Document format. The Printer MUST return the attributes and Document format. The Printer MUST return the attributes and
values that it uses to validate a Job on a Create-Job or values that it uses to validate a Job in a Job Creation or
Validate-Job operation in which this Document format is Validate-Job operation in which this Document format is
supplied. The Printer SHOULD return only (1) those attributes supplied. The Printer SHOULD return only (1) those attributes
that are supported for the specified format and (2) the 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 format. By specifying the Document format, the Client can get
the Printer to eliminate the attributes and values that are not the Printer to eliminate the attributes and values that are not
supported for a specific Document format. For example, a supported for a specific Document format. For example, a
Printer might have multiple interpreters to support both Printer 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, only one of those interpreters might text) Documents. However, only one of those interpreters might
support the "number-up" Job Template attribute with values of support the "number-up" Job Template attribute with values of
'1', '2', and '4'. The other interpreter might only be able to '1', '2', and '4'. The other interpreter might only be able to
support the "number-up" Job Template attribute with a value of support the "number-up" Job Template attribute with a value of
'1'. Thus, a Client can use the Get-Printer-Attributes '1'. Thus, a Client can use the Get-Printer-Attributes
operation to obtain the attributes and values that will be used operation to obtain the attributes and values that will be used
to accept/reject a Job Creation request. to accept/reject a Job Creation request.
If the Printer does not distinguish between different sets of If the Printer does not distinguish between different sets of
supported values for each different Document format when supported values for each different Document format when
validating Jobs in the Create-Job and Validate-Job operations, validating Jobs in the Create-Job, Print-Job, Print-URI, and
it MUST NOT distinguish between different Document formats in Validate-Job operations, it MUST NOT distinguish between
the Get-Printer-Attributes operation. If the Printer does different Document formats in the Get-Printer-Attributes
distinguish between different sets of supported values for each operation. If the Printer does distinguish between different
different Document format specified by the Client, this sets of supported values for each different Document format
specialization applies only to the following Printer specified by the Client, this specialization applies only to
attributes: the following Printer attributes:
+ Printer attributes that are Job Template attributes + Printer attributes that are Job Template attributes
("xxx-default", "xxx-supported", and "xxx-ready") ("xxx-default", "xxx-supported", and "xxx-ready")
(see Table 8 in Section 5.2), (see Table 8 in Section 5.2),
+ "pdl-override-supported", + "pdl-override-supported",
+ "compression-supported", + "compression-supported",
+ "job-k-octets-supported", + "job-k-octets-supported",
skipping to change at page 89, line 8 skipping to change at page 89, line 8
candidate for processing immediately (see Section 5.2.2). candidate for processing immediately (see Section 5.2.2).
4.3.7.2. Restart-Job Response 4.3.7.2. Restart-Job Response
The groups and attributes are the same as those defined for a The groups and attributes are the same as those defined for a
Cancel-Job response (see Section 4.3.3.2). Cancel-Job response (see Section 4.3.3.2).
5. Object Attributes 5. Object Attributes
This section describes the attributes with their corresponding This section describes the attributes with their corresponding
attribute syntaxes and values that are part of the IPP model. The attribute syntaxes and values that are part of the IPP Model. The
sections below show the objects and their associated attributes that sections below show the objects and their associated attributes that
are included within the scope of this protocol. Many of these are included within the scope of this protocol. Many of these
attributes are derived from other relevant documents: attributes are derived from other relevant documents:
o Document Printing Application (DPA) [ISO10175] o Document Printing Application (DPA) [ISO10175]
o Printer MIB v2 [RFC3805] o Printer MIB v2 [RFC3805]
Each attribute is uniquely identified in this document using a Each attribute is uniquely identified in this document using a
"keyword" (see Section 2.3.7) that is the name of the attribute. The "keyword" (see Section 2.3.7) that is the name of the attribute. The
skipping to change at page 98, line 15 skipping to change at page 98, line 15
The maximum length of 'charset' values used to represent IPP The maximum length of 'charset' values used to represent IPP
attribute values is 63 octets. attribute values is 63 octets.
Some examples are: Some examples are:
o 'utf-8': ISO 10646 Universal Multiple-Octet Coded Character Set o 'utf-8': ISO 10646 Universal Multiple-Octet Coded Character Set
(UCS) [ISO10646] represented as the UTF-8 [RFC3629] transfer (UCS) [ISO10646] represented as the UTF-8 [RFC3629] transfer
encoding scheme in which US-ASCII [RFC20] is a subset charset. encoding scheme in which US-ASCII [RFC20] is a subset charset.
o 'us-ascii': 7-bit American Standard Code for Information o 'us-ascii': 7-bit American Standard Code for Information
Interchange (ASCII) [RFC20]. [RFC20] defines US-ASCII, but Interchange (ASCII) [RFC20].
[RFC2045] eliminates most of the control characters from
conformant usage in MIME and IPP.
o 'iso-8859-1': 8-bit One-Byte Coded Character Set, Latin Alphabet o 'iso-8859-1': 8-bit One-Byte Coded Character Set, Latin Alphabet
No. 1 [ISO8859-1]. That standard defines a coded character set No. 1 [ISO8859-1]. That standard defines a coded character set
that is used by Latin languages in the Western Hemisphere and that is used by Latin languages in the Western Hemisphere and
Western Europe. US-ASCII is a subset charset. Western Europe. US-ASCII is a subset charset.
Some attribute descriptions MAY place additional requirements on Some attribute descriptions MAY place additional requirements on
charset values that can be used, such as REQUIRED values that MUST be charset values that can be used, such as REQUIRED values that MUST be
supported or additional restrictions, such as requiring that the supported or additional restrictions, such as requiring that the
charset have US-ASCII as a subset charset. charset have US-ASCII as a subset charset.
skipping to change at page 120, line 12 skipping to change at page 119, line 46
indicated as REQUIRED, then it is OPTIONAL. The maximum size in indicated as REQUIRED, then it is OPTIONAL. The maximum size in
octets for 'text' and 'name' attributes is indicated in parentheses. octets for 'text' and 'name' attributes is indicated in parentheses.
+------------------+----------------+-----------+ +------------------+----------------+-----------+
| Attribute | Syntax | REQUIRED? | | Attribute | Syntax | REQUIRED? |
+------------------+----------------+-----------+ +------------------+----------------+-----------+
| job-impressions | integer(0:MAX) | | | job-impressions | integer(0:MAX) | |
+------------------+----------------+-----------+ +------------------+----------------+-----------+
| job-k-octets | integer(0:MAX) | | | job-k-octets | integer(0:MAX) | |
+------------------+----------------+-----------+ +------------------+----------------+-----------+
| job-media-sheets | integer(0:MAX) | | | job-media-sheets | integer(1:MAX) | |
+------------------+----------------+-----------+ +------------------+----------------+-----------+
| job-name | name(MAX) | REQUIRED | | job-name | name(MAX) | REQUIRED |
+------------------+----------------+-----------+ +------------------+----------------+-----------+
Table 13: Job Description Attributes (READ-WRITE) Table 13: Job Description Attributes (READ-WRITE)
+------------------------------+----------------------+-----------+ +----------------------------+--------------------------+-----------+
| Attribute | Syntax | REQUIRED? | | Attribute | Syntax | REQUIRED? |
+------------------------------+----------------------+-----------+ +----------------------------+--------------------------+-----------+
| attributes-charset | charset | REQUIRED | | attributes-charset | charset | REQUIRED |
+------------------------------+----------------------+-----------+ +----------------------------+--------------------------+-----------+
| attributes-natural-language | naturalLanguage | REQUIRED | | attributes-natural- | naturalLanguage | REQUIRED |
+------------------------------+----------------------+-----------+ | language | | |
| date-time-at-completed | dateTime | | +----------------------------+--------------------------+-----------+
+------------------------------+----------------------+-----------+ | date-time-at-completed | dateTime|unknown|no- | |
| date-time-at-creation | dateTime | | | | value | |
+------------------------------+----------------------+-----------+ +----------------------------+--------------------------+-----------+
| date-time-at-processing | dateTime | | | date-time-at-creation | dateTime|unknown | |
+------------------------------+----------------------+-----------+ +----------------------------+--------------------------+-----------+
| job-detailed-status-messages | 1setOf text(MAX) | | | date-time-at-processing | dateTime|unknown|no- | |
+------------------------------+----------------------+-----------+ | | value | |
| job-document-access-errors | 1setOf text(MAX) | | +----------------------------+--------------------------+-----------+
+------------------------------+----------------------+-----------+ | job-detailed-status- | 1setOf text(MAX) | |
| job-id | integer(1:MAX) | REQUIRED | | messages | | |
+------------------------------+----------------------+-----------+ +----------------------------+--------------------------+-----------+
| job-impressions-completed | integer(0:MAX) | | | job-document-access-errors | 1setOf text(MAX) | |
+------------------------------+----------------------+-----------+ +----------------------------+--------------------------+-----------+
| job-k-octets-processed | integer(0:MAX) | | | job-id | integer(1:MAX) | REQUIRED |
+------------------------------+----------------------+-----------+ +----------------------------+--------------------------+-----------+
| job-media-sheets-completed | integer(0:MAX) | | | job-impressions-completed | integer(0:MAX) | |
+------------------------------+----------------------+-----------+ +----------------------------+--------------------------+-----------+
| job-message-from-operator | text(127) | | | job-k-octets-processed | integer(0:MAX) | |
+------------------------------+----------------------+-----------+ +----------------------------+--------------------------+-----------+
| job-more-info | uri | | | job-media-sheets-completed | integer(0:MAX) | |
+------------------------------+----------------------+-----------+ +----------------------------+--------------------------+-----------+
| job-originating-user-name | name(MAX) | REQUIRED | | job-message-from-operator | text(127) | |
+------------------------------+----------------------+-----------+ +----------------------------+--------------------------+-----------+
| job-printer-up-time | integer(1:MAX) | REQUIRED | | job-more-info | uri | |
+------------------------------+----------------------+-----------+ +----------------------------+--------------------------+-----------+
| job-printer-uri | uri | REQUIRED | | job-originating-user-name | name(MAX) | REQUIRED |
+------------------------------+----------------------+-----------+ +----------------------------+--------------------------+-----------+
| job-state | type1 enum | REQUIRED | | job-printer-up-time | integer(1:MAX) | REQUIRED |
+------------------------------+----------------------+-----------+ +----------------------------+--------------------------+-----------+
| job-state-message | text(MAX) | | | job-printer-uri | uri | REQUIRED |
+------------------------------+----------------------+-----------+ +----------------------------+--------------------------+-----------+
| job-state-reasons | 1setOf type2 keyword | REQUIRED | | job-state | type1 enum | REQUIRED |
+------------------------------+----------------------+-----------+ +----------------------------+--------------------------+-----------+
| job-uri | uri | REQUIRED | | job-state-message | text(MAX) | |
+------------------------------+----------------------+-----------+ +----------------------------+--------------------------+-----------+
| number-of-documents | integer(0:MAX) | | | job-state-reasons | 1setOf type2 keyword | REQUIRED |
+------------------------------+----------------------+-----------+ +----------------------------+--------------------------+-----------+
| number-of-intervening-jobs | integer(0:MAX) | | | job-uri | uri | REQUIRED |
+------------------------------+----------------------+-----------+ +----------------------------+--------------------------+-----------+
| output-device-assigned | name(127) | | | number-of-documents | integer(0:MAX) | |
+------------------------------+----------------------+-----------+ +----------------------------+--------------------------+-----------+
| time-at-completed | integer(MIN:MAX) | REQUIRED | | number-of-intervening-jobs | integer(0:MAX) | |
+------------------------------+----------------------+-----------+ +----------------------------+--------------------------+-----------+
| time-at-creation | integer(MIN:MAX) | REQUIRED | | output-device-assigned | name(127) | |
+------------------------------+----------------------+-----------+ +----------------------------+--------------------------+-----------+
| time-at-processing | integer(MIN:MAX) | REQUIRED | | time-at-completed | integer(MIN:MAX) | REQUIRED |
+------------------------------+----------------------+-----------+ +----------------------------+--------------------------+-----------+
| time-at-creation | integer(MIN:MAX) | REQUIRED |
+----------------------------+--------------------------+-----------+
| time-at-processing | integer(MIN:MAX) | REQUIRED |
+----------------------------+--------------------------+-----------+
Table 14: Job Status Attributes (READ-ONLY) Table 14: Job Status Attributes (READ-ONLY)
5.3.1. job-id (integer(1:MAX)) 5.3.1. job-id (integer(1:MAX))
This REQUIRED attribute contains the ID of the Job. The Printer, on This REQUIRED attribute contains the ID of the Job. The Printer, on
receipt of a new Job, generates an ID that identifies the new Job on receipt of a new Job, generates an ID that identifies the new Job on
that Printer. The Printer returns the value of the "job-id" that Printer. The Printer returns the value of the "job-id"
attribute as part of the response to a Job Creation request. attribute as part of the response to a Job Creation request.
skipping to change at page 135, line 8 skipping to change at page 134, line 45
A Client MAY request this attribute in a Get-Job-Attributes or A Client MAY request this attribute in a Get-Job-Attributes or
Get-Jobs request and use the value returned in combination with other Get-Jobs request and use the value returned in combination with other
requested Event Time Job Status attributes in order to display time requested Event Time Job Status attributes in order to display time
attributes to a user. The difference between this attribute and the attributes to a user. The difference between this attribute and the
'integer' value of a "time-at-xxx" attribute is the number of seconds 'integer' value of a "time-at-xxx" attribute is the number of seconds
ago that the "time-at-xxx" event occurred. A Client can compute the ago that the "time-at-xxx" event occurred. A Client can compute the
wall-clock time at which the "time-at-xxx" event occurred by wall-clock time at which the "time-at-xxx" event occurred by
subtracting this difference from the Client's wall-clock time. subtracting this difference from the Client's wall-clock time.
5.3.14.5. date-time-at-creation (dateTime) 5.3.14.5. date-time-at-creation (dateTime|unknown)
This RECOMMENDED attribute indicates the date and time at which the This RECOMMENDED attribute indicates the date and time at which the
Job was created. Job was created.
5.3.14.6. date-time-at-processing (dateTime) 5.3.14.6. date-time-at-processing (dateTime|unknown|no-value)
This RECOMMENDED attribute indicates the date and time at which the This RECOMMENDED attribute indicates the date and time at which the
Job first began processing after the Job Creation request or the most Job first began processing after the Job Creation request or the most
recent Restart-Job operation. recent Restart-Job operation.
5.3.14.7. date-time-at-completed (dateTime) 5.3.14.7. date-time-at-completed (dateTime|unknown|no-value)
This RECOMMENDED attribute indicates the date and time at which the This RECOMMENDED attribute indicates the date and time at which the
Job entered a Terminating State ('completed', 'canceled', or Job entered a Terminating State ('completed', 'canceled', or
'aborted'). 'aborted').
5.3.15. number-of-intervening-jobs (integer(0:MAX)) 5.3.15. number-of-intervening-jobs (integer(0:MAX))
This attribute indicates the number of Jobs that are "ahead" of this This attribute indicates the number of Jobs that are "ahead" of this
Job in the relative chronological order of expected time to complete Job in the relative chronological order of expected time to complete
(i.e., the current scheduled order). For efficiency, it is only (i.e., the current scheduled order). For efficiency, it is only
skipping to change at page 137, line 5 skipping to change at page 136, line 43
independent of the number of copies. independent of the number of copies.
As with "job-k-octets", this value also MUST NOT include the As with "job-k-octets", this value also MUST NOT include the
multiplicative factor due to a copies instruction embedded in the multiplicative factor due to a copies instruction embedded in the
Document data. If the Document data actually includes replications Document data. If the Document data actually includes replications
of the Document data, this value will include such replication. In of the Document data, this value will include such replication. In
other words, this value is always the number of Impressions in the other words, this value is always the number of Impressions in the
source Document data, rather than a measure of the number of source Document data, rather than a measure of the number of
Impressions to be produced by the Job. Impressions to be produced by the Job.
5.3.17.3. job-media-sheets (integer(0:MAX)) 5.3.17.3. job-media-sheets (integer(1:MAX))
This RECOMMENDED attribute specifies the total number of Media Sheets This RECOMMENDED attribute specifies the total number of Media Sheets
to be produced for this Job. to be produced for this Job.
Unlike the "job-k-octets" and the "job-impressions" attributes, this Unlike the "job-k-octets" and the "job-impressions" attributes, this
value MUST include the multiplicative factors contributed by the value MUST include the multiplicative factors contributed by the
number of copies specified by the "copies" attribute and a 'number of number of copies specified by the "copies" attribute and a 'number of
copies' instruction embedded in the Document data, if any. This copies' instruction embedded in the Document data, if any. This
difference allows the Administrator to control the lower and upper difference allows the Administrator to control the lower and upper
bounds of both (1) the size of the Document(s) with bounds of both (1) the size of the Document(s) with
skipping to change at page 139, line 5 skipping to change at page 138, line 40
These attributes form the attribute group called These attributes form the attribute group called
"printer-description". Tables 16 and 17 summarize these attributes, "printer-description". Tables 16 and 17 summarize these attributes,
their syntax, and whether they are REQUIRED for a Printer to support. their syntax, and whether they are REQUIRED for a Printer to support.
If they are not indicated as REQUIRED, they are OPTIONAL. The If they are not indicated as REQUIRED, they are OPTIONAL. The
maximum size in octets for 'text' and 'name' attributes is indicated maximum size in octets for 'text' and 'name' attributes is indicated
in parentheses. in parentheses.
Note: How these attributes are set by an Administrator is outside the Note: How these attributes are set by an Administrator is outside the
scope of this document. scope of this document.
+-----------------------------------+-----------------+-------------+ +-----------------------------+-----------------------+-------------+
| Attribute | Syntax | REQUIRED? | | Attribute | Syntax | REQUIRED? |
+-----------------------------------+-----------------+-------------+ +-----------------------------+-----------------------+-------------+
| charset-configured | charset | REQUIRED | | charset-configured | charset | REQUIRED |
+-----------------------------------+-----------------+-------------+ +-----------------------------+-----------------------+-------------+
| charset-supported | 1setOf charset | REQUIRED | | charset-supported | 1setOf charset | REQUIRED |
+-----------------------------------+-----------------+-------------+ +-----------------------------+-----------------------+-------------+
| color-supported | boolean | RECOMMENDED | | color-supported | boolean | RECOMMENDED |
+-----------------------------------+-----------------+-------------+ +-----------------------------+-----------------------+-------------+
| compression-supported | 1setOf type2 | REQUIRED | | compression-supported | 1setOf type2 keyword | REQUIRED |
| | keyword | | +-----------------------------+-----------------------+-------------+
+-----------------------------------+-----------------+-------------+ | document-format-default | mimeMediaType | REQUIRED |
| document-format-default | mimeMediaType | REQUIRED | +-----------------------------+-----------------------+-------------+
+-----------------------------------+-----------------+-------------+ | document-format-supported | 1setOf mimeMediaType | REQUIRED |
| document-format-supported | 1setOf | REQUIRED | +-----------------------------+-----------------------+-------------+
| | mimeMediaType | | | generated-natural-language- | 1setOf | REQUIRED |
+-----------------------------------+-----------------+-------------+ | supported | naturalLanguage | |
| generated-natural-language- | 1setOf | REQUIRED | +-----------------------------+-----------------------+-------------+
| supported | naturalLanguage | | | ipp-versions-supported | 1setOf type2 keyword | REQUIRED |
+-----------------------------------+-----------------+-------------+ +-----------------------------+-----------------------+-------------+
| ipp-versions-supported | 1setOf type2 | REQUIRED | | job-impressions-supported | rangeOfInteger(0:MAX) | RECOMMENDED |
| | keyword | | +-----------------------------+-----------------------+-------------+
+-----------------------------------+-----------------+-------------+ | job-k-octets-supported | rangeOfInteger(0:MAX) | |
| job-impressions-supported | rangeOfInteger | RECOMMENDED | +-----------------------------+-----------------------+-------------+
| | (0:MAX) | | | job-media-sheets-supported | rangeOfInteger(1:MAX) | |
+-----------------------------------+-----------------+-------------+ +-----------------------------+-----------------------+-------------+
| job-k-octets-supported | rangeOfInteger | | | multiple-document-jobs- | boolean | RECOMMENDED |
| | (0:MAX) | | | supported | | |
+-----------------------------------+-----------------+-------------+ +-----------------------------+-----------------------+-------------+
| job-media-sheets-supported | rangeOfInteger | | | multiple-operation-time-out | integer(1:MAX) | RECOMMENDED |
| | (0:MAX) | | +-----------------------------+-----------------------+-------------+
+-----------------------------------+-----------------+-------------+ | natural-language-configured | naturalLanguage | REQUIRED |
| multiple-document-jobs-supported | boolean | RECOMMENDED | +-----------------------------+-----------------------+-------------+
+-----------------------------------+-----------------+-------------+ | operations-supported | 1setOf type2 enum | REQUIRED |
| multiple-operation-time-out | integer(1:MAX) | RECOMMENDED | +-----------------------------+-----------------------+-------------+
+-----------------------------------+-----------------+-------------+ | pdl-override-supported | type2 keyword | REQUIRED |
| natural-language-configured | naturalLanguage | REQUIRED | +-----------------------------+-----------------------+-------------+
+-----------------------------------+-----------------+-------------+ | printer-driver-installer | uri | |
| operations-supported | 1setOf type2 | REQUIRED | +-----------------------------+-----------------------+-------------+
| | enum | | | printer-info | text(127) | RECOMMENDED |
+-----------------------------------+-----------------+-------------+ +-----------------------------+-----------------------+-------------+
| pdl-override-supported | type2 keyword | REQUIRED | | printer-location | text(127) | RECOMMENDED |
+-----------------------------------+-----------------+-------------+ +-----------------------------+-----------------------+-------------+
| printer-driver-installer | uri | | | printer-make-and-model | text(127) | RECOMMENDED |
+-----------------------------------+-----------------+-------------+ +-----------------------------+-----------------------+-------------+
| printer-info | text(127) | RECOMMENDED | | printer-message-from- | text(127) | |
+-----------------------------------+-----------------+-------------+ | operator | | |
| printer-location | text(127) | RECOMMENDED | +-----------------------------+-----------------------+-------------+
+-----------------------------------+-----------------+-------------+ | printer-more-info- | uri | |
| printer-make-and-model | text(127) | RECOMMENDED | | manufacturer | | |
+-----------------------------------+-----------------+-------------+ +-----------------------------+-----------------------+-------------+
| printer-message-from-operator | text(127) | | | printer-name | name(127) | REQUIRED |
+-----------------------------------+-----------------+-------------+ +-----------------------------+-----------------------+-------------+
| printer-more-info-manufacturer | uri | | | reference-uri-schemes- | 1setOf uriScheme | |
+-----------------------------------+-----------------+-------------+ | supported | | |
| printer-name | name(127) | REQUIRED | +-----------------------------+-----------------------+-------------+
+-----------------------------------+-----------------+-------------+
| reference-uri-schemes-supported | 1setOf | |
| | uriScheme | |
+-----------------------------------+-----------------+-------------+
Table 16: Printer Description Attributes (READ-WRITE) Table 16: Printer Description Attributes (READ-WRITE)
+------------------------------+----------------------+-------------+ +------------------------------+----------------------+-------------+
| Attribute | Syntax | REQUIRED? | | Attribute | Syntax | REQUIRED? |
+------------------------------+----------------------+-------------+ +------------------------------+----------------------+-------------+
| pages-per-minute-color | integer(0:MAX) | RECOMMENDED | | pages-per-minute-color | integer(0:MAX) | RECOMMENDED |
+------------------------------+----------------------+-------------+ +------------------------------+----------------------+-------------+
| pages-per-minute | integer(0:MAX) | RECOMMENDED | | pages-per-minute | integer(0:MAX) | RECOMMENDED |
+------------------------------+----------------------+-------------+ +------------------------------+----------------------+-------------+
| printer-current-time | dateTime | RECOMMENDED | | printer-current-time | dateTime|unknown | RECOMMENDED |
+------------------------------+----------------------+-------------+ +------------------------------+----------------------+-------------+
| printer-is-accepting-jobs | boolean | REQUIRED | | printer-is-accepting-jobs | boolean | REQUIRED |
+------------------------------+----------------------+-------------+ +------------------------------+----------------------+-------------+
| printer-more-info | uri | RECOMMENDED | | printer-more-info | uri | RECOMMENDED |
+------------------------------+----------------------+-------------+ +------------------------------+----------------------+-------------+
| printer-state | type1 enum | REQUIRED | | printer-state | type1 enum | REQUIRED |
+------------------------------+----------------------+-------------+ +------------------------------+----------------------+-------------+
| printer-state-message | text(MAX) | RECOMMENDED | | printer-state-message | text(MAX) | RECOMMENDED |
+------------------------------+----------------------+-------------+ +------------------------------+----------------------+-------------+
| printer-state-reasons | 1setOf type2 keyword | REQUIRED | | printer-state-reasons | 1setOf type2 keyword | REQUIRED |
skipping to change at page 144, line 23 skipping to change at page 144, line 8
5.4.5. printer-location (text(127)) 5.4.5. printer-location (text(127))
This RECOMMENDED Printer attribute identifies the location of the This RECOMMENDED Printer attribute identifies the location of the
device. This could include things like 'in Room 123A, second floor device. This could include things like 'in Room 123A, second floor
of building XYZ'. of building XYZ'.
5.4.6. printer-info (text(127)) 5.4.6. printer-info (text(127))
This RECOMMENDED Printer attribute provides descriptive information This RECOMMENDED Printer attribute provides descriptive information
about this Printer. This could include things like 'This Printer can about this Printer. This could include things like 'This printer can
be used for printing color transparencies for HR presentations', or be used for printing color transparencies for HR presentations', or
'Out of courtesy for others, please print only small (1-5 page) Jobs 'Out of courtesy for others, please print only small (1-5 page) jobs
at this Printer', or even 'This Printer is going away on July 1; at this printer', or even 'This printer is going away on July 1;
please find a new Printer'. please find a new printer'.
5.4.7. printer-more-info (uri) 5.4.7. printer-more-info (uri)
This RECOMMENDED Printer attribute contains a URI used to obtain more This RECOMMENDED Printer attribute contains a URI used to obtain more
information about this specific Printer. For example, this could be information about this specific Printer. For example, this could be
an HTTP URI referencing an HTML page accessible to a web browser. an HTTP URI referencing an HTML page accessible to a web browser.
The information obtained from this URI is intended for End User The information obtained from this URI is intended for End User
consumption. Features outside the scope of IPP can be accessed from consumption. Features outside the scope of IPP can be accessed from
this URI. The information is intended to be specific to this Printer this URI. The information is intended to be specific to this Printer
instance and site-specific services, e.g., Job pricing, services instance and site-specific services, e.g., Job pricing, services
skipping to change at page 150, line 49 skipping to change at page 150, line 31
Semantics document (this document) or the IPP Encoding and Semantics document (this document) or the IPP Encoding and
Transport document [RFC8010] following the rules, if any, when the Transport document [RFC8010] following the rules, if any, when the
"version-number" parameter is '1.0'. "version-number" parameter is '1.0'.
o '1.1': Meets the conformance requirements of IPP version 1.1 as o '1.1': Meets the conformance requirements of IPP version 1.1 as
specified in this document and [RFC8010], including any extensions specified in this document and [RFC8010], including any extensions
registered according to Section 7 and any extension defined in any registered according to Section 7 and any extension defined in any
future versions of this document or [RFC8010] following the rules, future versions of this document or [RFC8010] following the rules,
if any, when the "version-number" parameter is '1.1'. if any, when the "version-number" parameter is '1.1'.
Additional values are defined in IPP 2.0, 2.1, and 2.2 [PWG5100.12]. Additional values are defined in "IPP Version 2.0, 2.1, and 2.2"
[PWG5100.12].
5.4.15. operations-supported (1setOf type2 enum) 5.4.15. operations-supported (1setOf type2 enum)
This REQUIRED Printer attribute specifies the set of supported This REQUIRED Printer attribute specifies the set of supported
operations for this Printer and contained Jobs. operations for this Printer and contained Jobs.
This attribute is encoded as any other enum attribute syntax This attribute is encoded as any other enum attribute syntax
according to [RFC8010] as 32 bits. However, all 32-bit enum values according to [RFC8010] as 32 bits. However, all 32-bit enum values
for this attribute MUST NOT exceed 0x00007fff, since these same for this attribute MUST NOT exceed 0x00007fff, since these same
values are also passed in two octets in the "operation-id" parameter values are also passed in two octets in the "operation-id" field (see
(see Section 4.1.1) in each Protocol request with the two high-order Section 4.1.1) in each Protocol request with the two high-order
octets omitted in order to indicate the operation being performed octets omitted in order to indicate the operation being performed
[RFC8010]. [RFC8010].
Table 19 lists the "operations-supported" and "operation-id" (see Table 19 lists the "operations-supported" attribute and "operation-
Section 4.1.2) enum values that are defined in this document. id" parameter (see Section 4.1.2) enum values that are defined in
this document.
+---------------+---------------------------------------------------+ +---------------+---------------------------------------------------+
| Value | Operation Name | | Value | Operation Name |
+---------------+---------------------------------------------------+ +---------------+---------------------------------------------------+
| 0x0000 | reserved, not used | | 0x0000 | reserved, not used |
+---------------+---------------------------------------------------+ +---------------+---------------------------------------------------+
| 0x0001 | reserved, not used | | 0x0001 | reserved, not used |
+---------------+---------------------------------------------------+ +---------------+---------------------------------------------------+
| 0x0002 | Print-Job | | 0x0002 | Print-Job |
+---------------+---------------------------------------------------+ +---------------+---------------------------------------------------+
skipping to change at page 152, line 46 skipping to change at page 151, line 46
| 0x000e | Restart-Job | | 0x000e | Restart-Job |
+---------------+---------------------------------------------------+ +---------------+---------------------------------------------------+
| 0x000f | reserved for a future operation | | 0x000f | reserved for a future operation |
+---------------+---------------------------------------------------+ +---------------+---------------------------------------------------+
| 0x0010 | Pause-Printer | | 0x0010 | Pause-Printer |
+---------------+---------------------------------------------------+ +---------------+---------------------------------------------------+
| 0x0011 | Resume-Printer | | 0x0011 | Resume-Printer |
+---------------+---------------------------------------------------+ +---------------+---------------------------------------------------+
| 0x0012 | Purge-Jobs | | 0x0012 | Purge-Jobs |
+---------------+---------------------------------------------------+ +---------------+---------------------------------------------------+
| 0x0013-0x3fff | reserved for future Standards Track operations | | 0x0013-0x3fff | additional registered operations (see the IANA |
| | (see Section 7.8) | | | IPP registry and Section 7.8) |
+---------------+---------------------------------------------------+ +---------------+---------------------------------------------------+
| 0x4000-0x7fff | reserved for vendor extensions (see Section 7.8) | | 0x4000-0x7fff | reserved for vendor extensions (see Section 7.8) |
+---------------+---------------------------------------------------+ +---------------+---------------------------------------------------+
Table 19: "operations-supported" and "operation-id" Enum Values Table 19: "operations-supported" Enum Values
5.4.16. multiple-document-jobs-supported (boolean) 5.4.16. multiple-document-jobs-supported (boolean)
This RECOMMENDED Printer attribute indicates whether the Printer This RECOMMENDED Printer attribute indicates whether the Printer
supports more than one Document per Job, i.e., more than one supports more than one Document per Job, i.e., more than one
Send-Document operation with Document data and/or Send-URI Send-Document operation with Document data and/or Send-URI
operations. If the Printer supports the Create-Job and Send-Document operations. If the Printer supports the Create-Job and Send-Document
operations (see Sections 4.2.4 and 4.3.1), it MUST support this operations (see Sections 4.2.4 and 4.3.1), it MUST support this
attribute. attribute.
skipping to change at page 157, line 5 skipping to change at page 156, line 5
representing are restarted or power-cycled, the Printer MAY continue representing are restarted or power-cycled, the Printer MAY continue
counting this value or MAY reset this value to 1, depending on counting this value or MAY reset this value to 1, depending on
implementation. However, if the Printer software ceases running and implementation. However, if the Printer software ceases running and
restarts without knowing the last value for "printer-up-time", the restarts without knowing the last value for "printer-up-time", the
implementation MUST reset this value to 1. If this value is reset implementation MUST reset this value to 1. If this value is reset
and the Printer has persistent Jobs, the Printer MUST reset the and the Printer has persistent Jobs, the Printer MUST reset the
"time-at-xxx (integer)" Event Time Job Status attributes according to "time-at-xxx (integer)" Event Time Job Status attributes according to
Section 5.3.14. An implementation MAY use both implementation Section 5.3.14. An implementation MAY use both implementation
alternatives, depending on warm versus cold start, respectively. alternatives, depending on warm versus cold start, respectively.
5.4.30. printer-current-time (dateTime) 5.4.30. printer-current-time (dateTime|unknown)
This RECOMMENDED Printer attribute indicates the current date and This RECOMMENDED Printer attribute indicates the current date and
time. This value is used to populate the Event Time Job Status time. This value is used to populate the Event Time Job Status
attributes "date-time-at-creation", "date-time-at-processing", and attributes "date-time-at-creation", "date-time-at-processing", and
"date-time-at-completed" (see Section 5.3.14). "date-time-at-completed" (see Section 5.3.14).
This value is obtained on a "best effort" basis and in practice does This value is obtained on a "best effort" basis and in practice does
not have to be precise in order to be useful. A Printer not have to be precise in order to be useful. A Printer
implementation sets the value of this attribute by obtaining the date implementation sets the value of this attribute by obtaining the date
and time via some implementation-dependent means, such as getting the and time via some implementation-dependent means, such as getting the
value from a network time server, initialization at time of value from a network time server, initialization at time of
manufacture, or setting by an Administrator. See [RFC3196] and manufacture, or setting by an Administrator. See [RFC3196] and
[PWG5100.19] for examples. If an implementation supports this [PWG5100.19] for examples. If an implementation supports this
attribute and the implementation knows that it has not yet been set, attribute and the implementation knows that it has not yet been set,
then the implementation MUST return the value of this attribute using then the implementation MUST return the value of this attribute using
the out-of-band 'no-value', meaning not configured. See the the out-of-band 'unknown', meaning the value is not yet known. See
beginning of Section 5.1. the beginning of Section 5.1.
The time zone of this attribute might not be the time zone used by The time zone of this attribute might not be the time zone used by
people located near the Printer or device. The Client MUST NOT people located near the Printer or device. The Client MUST NOT
expect the time zone of any received 'dateTime' value to be in the expect the time zone of any received 'dateTime' value to be in the
time zone of the Client or in the time zone of the people located time zone of the Client or in the time zone of the people located
near the Printer. near the Printer.
The Client SHOULD display any dateTime attributes to the user in the The Client SHOULD display any dateTime attributes to the user in the
Client's local time by converting the 'dateTime' value returned by Client's local time by converting the 'dateTime' value returned by
the server to the time zone of the Client, rather than using the time the server to the time zone of the Client, rather than using the time
zone returned by the Printer in attributes that use the 'dateTime' zone returned by the Printer in attributes that use the 'dateTime'
attribute syntax. attribute syntax.
Note: Prior versions of this document incorrectly specified the use
of the 'no-value' out-of-band value when the current date and time
had not been set. The correct out-of-band value is 'unknown' since
there is always an intrinsic current date and time.
5.4.31. multiple-operation-time-out (integer(1:MAX)) 5.4.31. multiple-operation-time-out (integer(1:MAX))
This RECOMMENDED Printer attribute identifies the minimum time (in This RECOMMENDED Printer attribute identifies the minimum time (in
seconds) that the Printer waits for additional Send-Document or seconds) that the Printer waits for additional Send-Document or
Send-URI operations to follow a still-open Job before taking any Send-URI operations to follow a still-open Job before taking any
recovery actions, such as the ones indicated in Section 4.3.1. If recovery actions, such as the ones indicated in Section 4.3.1. If
the Printer supports the Create-Job and Send-Document operations (see the Printer supports the Create-Job and Send-Document operations (see
Sections 4.2.4 and 4.3.1), it MUST support this attribute. Sections 4.2.4 and 4.3.1), it MUST support this attribute.
Printers SHOULD use a value between '60' and '240' (seconds). An Printers SHOULD use a value between '60' and '240' (seconds). An
skipping to change at page 158, line 45 skipping to change at page 157, line 47
5.4.34. job-impressions-supported (rangeOfInteger(0:MAX)) 5.4.34. job-impressions-supported (rangeOfInteger(0:MAX))
This RECOMMENDED Printer attribute specifies the upper and lower This RECOMMENDED Printer attribute specifies the upper and lower
bounds for the number of Impressions per Job. The supported values bounds for the number of Impressions per Job. The supported values
are used to validate the Client-supplied "job-impressions" operation are used to validate the Client-supplied "job-impressions" operation
attribute in Job Creation requests. The corresponding Job attribute in Job Creation requests. The corresponding Job
Description attribute "job-impressions" is defined in Description attribute "job-impressions" is defined in
Section 5.3.17.2. Section 5.3.17.2.
5.4.35. job-media-sheets-supported (rangeOfInteger(0:MAX)) 5.4.35. job-media-sheets-supported (rangeOfInteger(1:MAX))
This Printer attribute specifies the upper and lower bounds for the This Printer attribute specifies the upper and lower bounds for the
number of Media Sheets per Job. The supported values are used to number of Media Sheets per Job. The supported values are used to
validate the Client-supplied "job-media-sheets" operation attribute validate the Client-supplied "job-media-sheets" operation attribute
in Job Creation requests. The corresponding Job attribute in Job Creation requests. The corresponding Job attribute
"job-media-sheets" is defined in Section 5.3.17.3. "job-media-sheets" is defined in Section 5.3.17.3.
5.4.36. pages-per-minute (integer(0:MAX)) 5.4.36. pages-per-minute (integer(0:MAX))
This RECOMMENDED Printer attribute specifies the nominal number of This RECOMMENDED Printer attribute specifies the nominal number of
skipping to change at page 160, line 45 skipping to change at page 159, line 51
MUST accept and process both the 'textWithoutLanguage' and MUST accept and process both the 'textWithoutLanguage' and
'textWithLanguage' forms. Similarly, for each attribute that the 'textWithLanguage' forms. Similarly, for each attribute that the
Client supports whose attribute syntax is 'name', the Client MUST Client supports whose attribute syntax is 'name', the Client MUST
accept and process both the 'nameWithoutLanguage' and accept and process both the 'nameWithoutLanguage' and
'nameWithLanguage' forms. For presentation purposes, truncation of 'nameWithLanguage' forms. For presentation purposes, truncation of
long attribute values is not recommended. A recommended approach long attribute values is not recommended. A recommended approach
would be for the Client implementation to allow the user to scroll would be for the Client implementation to allow the user to scroll
through long attribute values. through long attribute values.
A response MAY contain attribute groups, attributes, attribute A response MAY contain attribute groups, attributes, attribute
syntaxes, values, and status-codes that the Client does not expect. syntaxes, values, and status-code values that the Client does not
Therefore, a Client implementation MUST gracefully handle such expect. Therefore, a Client implementation MUST gracefully handle
responses and not refuse to interoperate with a conforming Printer such responses and not refuse to interoperate with a conforming
that is returning Standards Track extensions or vendor extensions, Printer that is returning Standards Track extensions or vendor
including attribute groups, attributes, attribute syntaxes, attribute extensions, including attribute groups, attributes, attribute
values, status-codes, and out-of-band attribute values that conform syntaxes, attribute values, status-code values, and out-of-band
to Section 7. Clients can choose to ignore any parameters, attribute attribute values that conform to Section 7. Clients can choose to
groups, attributes, attribute syntaxes, or values that they do not ignore any parameters, attribute groups, attributes, attribute
understand. syntaxes, or values that they do not understand.
While a Client is sending data to a Printer, it SHOULD do its best to While a Client is sending data to a Printer, it SHOULD do its best to
prevent a channel from being closed by a lower layer when the channel prevent a channel from being closed by a lower layer when the channel
is blocked (i.e., flow-controlled off) for whatever reason, e.g., is blocked (i.e., flow-controlled off) for whatever reason, e.g.,
'out of paper' or 'Job ahead hasn't freed up enough memory'. 'out of paper' or 'Job ahead hasn't freed up enough memory'.
However, the layer that launched the print submission (e.g., an End However, the layer that launched the print submission (e.g., an End
User) MAY close the channel in order to cancel the Job. When a User) MAY close the channel in order to cancel the Job. When a
Client closes a channel, a Printer MAY print all or part of the Client closes a channel, a Printer MAY print all or part of the
received portion of the Document. See the Encoding and Transport received portion of the Document. See the Encoding and Transport
document [RFC8010] for more details. document [RFC8010] for more details.
skipping to change at page 163, line 9 skipping to change at page 162, line 33
Conforming IPP objects MUST support all REQUIRED operation attributes Conforming IPP objects MUST support all REQUIRED operation attributes
and all values of such attributes if so indicated in the description. and all values of such attributes if so indicated in the description.
Conforming IPP objects MUST ignore all unsupported or unknown Conforming IPP objects MUST ignore all unsupported or unknown
operation attributes or operation attribute groups received in a operation attributes or operation attribute groups received in a
request but MUST reject a request that contains a supported operation request but MUST reject a request that contains a supported operation
attribute that contains an unsupported value. attribute that contains an unsupported value.
Conforming IPP objects MAY return operation responses that contain Conforming IPP objects MAY return operation responses that contain
attribute groups, attribute names, attribute syntaxes, attribute attribute groups, attribute names, attribute syntaxes, attribute
values, and status-codes that are extensions to this specification. values, and status-code values that are extensions to this
The additional attribute groups MAY occur in any order. specification. The additional attribute groups MAY occur in any
order.
The following section on object attributes specifies the support The following section on object attributes specifies the support
required for object attributes. required for object attributes.
6.2.3. IPP Object Attributes 6.2.3. IPP Object Attributes
Conforming IPP objects MUST support all of the REQUIRED object Conforming IPP objects MUST support all of the REQUIRED object
attributes, as defined in this document in the indicated sections. attributes, as defined in this document in the indicated sections.
If an object supports an attribute, it MUST support only those values If an object supports an attribute, it MUST support only those values
skipping to change at page 165, line 44 skipping to change at page 165, line 27
4. Enum Attribute Values 4. Enum Attribute Values
5. Attribute Group Tags 5. Attribute Group Tags
6. Out-of-Band Attribute Value Tags 6. Out-of-Band Attribute Value Tags
7. Attribute Syntaxes 7. Attribute Syntaxes
8. Operations 8. Operations
9. Status-Codes 9. Status-Code Values
Extensions registered for use with IPP are OPTIONAL for Client and Extensions registered for use with IPP are OPTIONAL for Client and
IPP object conformance to the IPP/1.1 Model and Semantics document IPP object conformance to the IPP/1.1 Model and Semantics document
(this document). (this document).
These extension procedures are aligned with the guidelines as set These extension procedures are aligned with the guidelines as set
forth in "Guidelines for Writing an IANA Considerations Section in forth in "Guidelines for Writing an IANA Considerations Section in
RFCs" [RFC5226]. Appendix A describes how to propose new RFCs" [RFC5226]. Appendix A describes how to propose new
registrations for consideration. IANA will reject registration registrations for consideration. IANA will reject registration
proposals that leave out required information or do not follow the proposals that leave out required information or do not follow the
skipping to change at page 166, line 36 skipping to change at page 166, line 20
The IANA policy (using terms defined in [RFC5226]) for object The IANA policy (using terms defined in [RFC5226]) for object
extensions was formerly Expert Review; this document changes the extensions was formerly Expert Review; this document changes the
policy to Specification Required. policy to Specification Required.
7.2. Attribute Extensibility 7.2. Attribute Extensibility
Since attribute names are type2 keywords (see Section 5.1.4), the Since attribute names are type2 keywords (see Section 5.1.4), the
IANA policy (using terms defined in [RFC5226]) for attribute IANA policy (using terms defined in [RFC5226]) for attribute
extensions is Expert Review. extensions is Expert Review.
For vendor attribute extensions, implementers SHOULD use keywords For vendor attribute extensions, implementors SHOULD use keywords
with a suitable distinguishing prefix such as 'smiNNN-' where NNN is with a suitable distinguishing prefix such as 'smiNNN-' where NNN is
an SMI Private Enterprise Number (PEN) [IANA-PEN]. For example, if an SMI Private Enterprise Number (PEN) [IANA-PEN]. For example, if
the company Example Corp. had obtained the SMI PEN 32473, then a the company Example Corp. had obtained the SMI PEN 32473, then a
vendor attribute 'foo' would be 'smi32473-foo'. vendor attribute 'foo' would be 'smi32473-foo'.
Note: Prior versions of this document recommended using a fully Note: Prior versions of this document recommended using a fully
qualified domain name [RFC1035] as the prefix (e.g., qualified domain name [RFC1035] as the prefix (e.g.,
'example.com-foo'), and many IPP implementations have also used 'example.com-foo'), and many IPP implementations have also used
reversed domain names (e.g., 'com.example-foo'). Domain names reversed domain names (e.g., 'com.example-foo'). Domain names
have proven problematic due to the length of some domain names, have proven problematic due to the length of some domain names,
skipping to change at page 167, line 41 skipping to change at page 167, line 24
Note: The type1 or type2 prefix on the basic attribute syntax is Note: The type1 or type2 prefix on the basic attribute syntax is
provided only to communicate the IANA policy required for provided only to communicate the IANA policy required for
registration and is not represented in IPP messages. Both type1 registration and is not represented in IPP messages. Both type1
and type2 'keyword' values are represented using the same and type2 'keyword' values are represented using the same
'keyword' value tag. 'keyword' value tag.
For type1 and type2 keywords, the proposer includes the name of the For type1 and type2 keywords, the proposer includes the name of the
keyword in the registration proposal, and the name is part of the keyword in the registration proposal, and the name is part of the
technical review. technical review.
For vendor keyword extensions, implementers SHOULD either: For vendor keyword extensions, implementors SHOULD either:
a. follow attribute-specific guidance such as the guidance defined a. follow attribute-specific guidance such as the guidance defined
in [PWG5101.1], or in [PWG5101.1], or
b. use keywords with a suitable distinguishing prefix, such as b. use keywords with a suitable distinguishing prefix, such as
'smiNNN-' where NNN is an SMI Private Enterprise Number (PEN) 'smiNNN-' where NNN is an SMI Private Enterprise Number (PEN)
[IANA-PEN]. [IANA-PEN].
For example, if the company Example Corp. had obtained the For example, if the company Example Corp. had obtained the
SMI PEN 32473, then a vendor keyword 'foo' would be 'smi32473-foo'. SMI PEN 32473, then a vendor keyword 'foo' would be 'smi32473-foo'.
skipping to change at page 168, line 32 skipping to change at page 168, line 14
extensions is First Come First Served. Only attributes using the extensions is First Come First Served. Only attributes using the
type1 and type2 enum syntax can be registered in the IANA IPP type1 and type2 enum syntax can be registered in the IANA IPP
registry. registry.
Note: The type1 or type2 prefix on the basic attribute syntax is Note: The type1 or type2 prefix on the basic attribute syntax is
provided only to communicate the IANA policy required for provided only to communicate the IANA policy required for
registration and is not represented in IPP messages. Both type1 registration and is not represented in IPP messages. Both type1
and type2 enum values are represented using the same enum and type2 enum values are represented using the same enum
value tag. value tag.
For vendor enum extensions, implementers MUST use values in the For vendor enum extensions, implementors MUST use values in the
reserved integer range, which is 0x4000000 to 0x7fffffff. reserved integer range, which is 0x40000000 to 0x7fffffff.
Implementors SHOULD consult with the IPP Designated Expert(s) to Implementors SHOULD consult with the IPP Designated Expert(s) to
reserve vendor extension value(s) for their usage. reserve vendor extension value(s) for their usage.
When a type1 or type2 enum extension is approved, the IPP Designated When a type1 or type2 enum extension is approved, the IPP Designated
Expert(s), in consultation with IANA, assigns the next available enum Expert(s), in consultation with IANA, assigns the next available enum
number for each enum value. number for each enum value.
When a type2 enum extension is approved, the IPP Designated Expert(s) When a type2 enum extension is approved, the IPP Designated Expert(s)
becomes the point of contact for any future maintenance that might be becomes the point of contact for any future maintenance that might be
required for that registration. required for that registration.
skipping to change at page 169, line 28 skipping to change at page 169, line 8
7.7. Attribute Syntax Extensibility 7.7. Attribute Syntax Extensibility
The IANA policy (using terms defined in [RFC5226]) for attribute The IANA policy (using terms defined in [RFC5226]) for attribute
syntax extensions was formerly Expert Review; this document changes syntax extensions was formerly Expert Review; this document changes
the policy to Specification Required. The IANA policy for vendor the policy to Specification Required. The IANA policy for vendor
attribute syntax extensions (tags 0x40000000 to 0x7fffffff) is First attribute syntax extensions (tags 0x40000000 to 0x7fffffff) is First
Come First Served. Only attribute syntaxes in the range of Come First Served. Only attribute syntaxes in the range of
0x00000000 to 0x3fffffff can be registered in the IANA IPP registry. 0x00000000 to 0x3fffffff can be registered in the IANA IPP registry.
For vendor attribute syntax extensions, implementers MUST use values For vendor attribute syntax extensions, implementors MUST use values
in the reserved integer range, which is 0x4000000 to 0x7fffffff. in the reserved integer range, which is 0x4000000 to 0x7fffffff.
Implementors SHOULD consult with the IPP Designated Expert(s) to Implementors SHOULD consult with the IPP Designated Expert(s) to
reserve vendor extension value(s) for their usage. reserve vendor extension value(s) for their usage.
For registered attribute syntaxes, the IPP Designated Expert(s), in For registered attribute syntaxes, the IPP Designated Expert(s), in
consultation with IANA, assigns the next attribute syntax tag in the consultation with IANA, assigns the next attribute syntax tag in the
appropriate range as specified in [RFC8010]. appropriate range as specified in [RFC8010].
7.8. Operation Extensibility 7.8. Operation Extensibility
The IANA policy (using terms defined in [RFC5226]) for operation The IANA policy (using terms defined in [RFC5226]) for operation
extensions is Expert Review. The IANA policy for vendor operation extensions is Expert Review. The IANA policy for vendor operation
extensions (values 0x40000000 to 0x7fffffff) is First Come First extensions (values 0x4000 to 0x7fff) is First Come First Served.
Served. Only operation codes in the range of 0x00000000 to Only operation codes in the range of 0x0000 to 0x3fff can be
0x3fffffff can be registered in the IANA IPP registry. registered in the IANA IPP registry.
For vendor operation extensions, implementers MUST use values in the For vendor operation extensions, implementors MUST use values in the
reserved integer range, which is 0x4000000 to 0x7fffffff. reserved integer range, which is 0x4000 to 0x7fff. Implementors
Implementors SHOULD consult with the IPP Designated Expert(s) to SHOULD consult with the IPP Designated Expert(s) to reserve vendor
reserve vendor extension value(s) for their usage. extension value(s) for their usage.
For registered operation extensions, the IPP Designated Expert(s), in For registered operation extensions, the IPP Designated Expert(s), in
consultation with IANA, assigns the next "operation-id" code as consultation with IANA, assigns the next "operation-id" code as
specified in Section 5.4.15. specified in Section 5.4.15.
7.9. Status-Code Extensibility 7.9. Status-Code Extensibility
The IANA policy (using terms defined in [RFC5226]) for status-code The IANA policy (using terms defined in [RFC5226]) for status-code
extensions is Expert Review. The IANA policy for vendor status-code extensions is Expert Review. The IANA policy for vendor status-code
extensions (codes 0x0n80 to 0x0nff, for n = 0 to 5) is First Come extensions (codes 0x0n80 to 0x0nff, for n = 0 to 5) is First Come
First Served. Only status-codes in the range of 0x0n00 to 0x0nff can First Served. Only status-code values in the range of 0x0n00 to
be registered in the IANA IPP registry. 0x0n7f can be registered in the IANA IPP registry. [M.Sweet] This
text is correct, the IANA registry should be updated.
The values for status-codes are allocated in ranges as specified in The status-code values are allocated in ranges as specified in
Appendix B for each status-code class: Appendix B for each status-code class:
"informational" - Request received, continuing process "informational" - Request received, continuing process
"successful" - The action was successfully received, understood, and "successful" - The action was successfully received, understood, and
accepted accepted
"redirection" - Further action is taken in order to complete the "redirection" - Further action is taken in order to complete the
request request
"client-error" - The request contains bad syntax or cannot be "client-error" - The request contains bad syntax or cannot be
fulfilled fulfilled
"server-error" - The IPP object failed to fulfill an apparently valid "server-error" - The IPP object failed to fulfill an apparently valid
request request
For vendor operation status-code extensions, implementers MUST use For vendor operation status-code extensions, implementors MUST use
the top of each range (0x0n80 to 0x0nff) as specified in Appendix B. the top of each range (0x0n80 to 0x0nff) as specified in Appendix B.
Implementors SHOULD consult with the IPP Designated Expert(s) to Implementors SHOULD consult with the IPP Designated Expert(s) to
reserve vendor extension value(s) for their usage. reserve vendor extension value(s) for their usage.
For registered operation status-codes, the IPP Designated Expert(s), For registered operation status-code values, the IPP Designated
in consultation with IANA, assigns the next status-code in the Expert(s), in consultation with IANA, assigns the next status-code in
appropriate class range as specified in Appendix B. the appropriate class range as specified in Appendix B.
8. Internationalization Considerations 8. Internationalization Considerations
Some of the attributes have values that are text strings and names Some of the attributes have values that are text strings and names
that are intended for human understanding rather than machine that are intended for human understanding rather than machine
understanding (see the 'text' and 'name' attribute syntaxes in understanding (see the 'text' and 'name' attribute syntaxes in
Sections 5.1.2 and 5.1.3). Sections 5.1.2 and 5.1.3).
In each operation request, the Client In each operation request, the Client
skipping to change at page 171, line 24 skipping to change at page 171, line 6
All IPP objects MUST support the UTF-8 [RFC3629] charset in all All IPP objects MUST support the UTF-8 [RFC3629] charset in all
'text' and 'name' attributes supported. If an IPP object supports 'text' and 'name' attributes supported. If an IPP object supports
more than the UTF-8 charset, the object MUST convert between them in more than the UTF-8 charset, the object MUST convert between them in
order to return the requested charset to the Client according to order to return the requested charset to the Client according to
Section 4.1.4.2. If an IPP object supports more than one natural Section 4.1.4.2. If an IPP object supports more than one natural
language, the object SHOULD return 'text' and 'name' values in the language, the object SHOULD return 'text' and 'name' values in the
natural language requested where those values are generated by the natural language requested where those values are generated by the
Printer (see Section 4.1.4.1). Printer (see Section 4.1.4.1).
For Printers that support multiple charsets and/or multiple natural For Printers that support multiple charsets and/or multiple natural
languages in 'text' and 'name' attributes, different Jobs may have languages in 'text' and 'name' attributes, different Jobs might have
been submitted in differing charsets and/or natural languages. All been submitted in differing charsets and/or natural languages. All
responses MUST be returned in the charset requested by the Client. responses MUST be returned in the charset requested by the Client.
However, the Get-Jobs operation uses the 'textWithLanguage' and However, the Get-Jobs operation uses the 'textWithLanguage' and
'nameWithLanguage' mechanisms to identify the differing natural 'nameWithLanguage' mechanisms to identify the differing natural
languages with each Job attribute returned. languages with each Job attribute returned.
The Printer also has configured charset and natural language The Printer also has configured charset and natural language
attributes. The Client can query the Printer to determine the list attributes. The Client can query the Printer to determine the list
of charsets and natural languages supported by the Printer and what of charsets and natural languages supported by the Printer and what
the Printer's configured values are. See the "charset-configured", the Printer's configured values are. See the "charset-configured",
skipping to change at page 175, line 9 skipping to change at page 174, line 39
resources are not well understood, and there are no published resources are not well understood, and there are no published
precedents regarding this scenario. precedents regarding this scenario.
Once the authenticated identity of the requester has been supplied to Once the authenticated identity of the requester has been supplied to
the IPP object, the object uses that identity to enforce any the IPP object, the object uses that identity to enforce any
authorization policy that might be in place. For example, one site's authorization policy that might be in place. For example, one site's
policy might be that only the Job owner is allowed to cancel a Job. policy might be that only the Job owner is allowed to cancel a Job.
The details and mechanisms to set up a particular access control The details and mechanisms to set up a particular access control
policy are not part of this document and are typically established policy are not part of this document and are typically established
via some other type of administrative or access control framework. via some other type of administrative or access control framework.
However, there are operation status-codes that allow an IPP server to However, there are operation status-code values that allow an IPP
return information back to a Client about any potential access server to return information back to a Client about any potential
control violations for an IPP object. access control violations for an IPP object.
During a Job Creation request, the Client's identity is recorded in During a Job Creation request, the Client's identity is recorded in
the Job object in an implementation-defined attribute. This the Job object in an implementation-defined attribute. This
information can be used to verify a Client's identity for subsequent information can be used to verify a Client's identity for subsequent
operations on that Job object in order to enforce any access control operations on that Job object in order to enforce any access control
policy that might be in effect. See Section 9.3 below for more policy that might be in effect. See Section 9.3 below for more
details. This and other information stored in the Job object can details. This and other information stored in the Job object can
also be considered personal or sensitive in nature and can be also be considered personal or sensitive in nature and can be
filtered out as part of a configured privacy policy (Section 9.4). filtered out as part of a configured privacy policy (Section 9.4).
skipping to change at page 178, line 46 skipping to change at page 178, line 33
'anonymous' -- then only authenticated Operators or Administrators of 'anonymous' -- then only authenticated Operators or Administrators of
the IPP Printer could query the foreign Jobs with an IPP request. the IPP Printer could query the foreign Jobs with an IPP request.
Alternatively, if the security policy is to allow users to query Alternatively, if the security policy is to allow users to query
other users' Jobs, then the foreign Jobs would also be visible to an other users' Jobs, then the foreign Jobs would also be visible to an
End User IPP Client using Get-Jobs and Get-Job-Attributes. End User IPP Client using Get-Jobs and Get-Job-Attributes.
10. Changes since RFC 2911 10. Changes since RFC 2911
The following changes have been made since RFC 2911: The following changes have been made since RFC 2911:
o Errata ID 364: Fixed range of "redirection" status-codes (to o Errata ID 364: Fixed range of "redirection" status-code values (to
0x03xx). 0x03xx).
o Errata ID 694: Fixed range of vendor status-codes (0x0n80 to o Errata ID 694: Fixed range of vendor status-code values (0x0n80 to
0x0nff). 0x0nff).
o Errata ID 3072: Reworded multiple-document-handling definition, o Errata ID 3072: Reworded multiple-document-handling definition,
since it also applies to Jobs with a single Document and is the since it also applies to Jobs with a single Document and is the
only interoperable way to request uncollated copies. only interoperable way to request uncollated copies.
o Errata ID 3365: Fixed bad 'nameWithLanguage' maximum length by o Errata ID 3365: Fixed bad 'nameWithLanguage' maximum length by
referencing the 'nameWithoutLanguage' section (i.e., referencing the 'nameWithoutLanguage' section (i.e.,
Section 5.1.3.1). Section 5.1.3.1).
skipping to change at page 183, line 13 skipping to change at page 182, line 37
<http://www.rfc-editor.org/info/rfc1952>. <http://www.rfc-editor.org/info/rfc1952>.
[RFC1977] Schryver, V., "PPP BSD Compression Protocol", RFC 1977, [RFC1977] Schryver, V., "PPP BSD Compression Protocol", RFC 1977,
DOI 10.17487/RFC1977, August 1996, DOI 10.17487/RFC1977, August 1996,
<http://www.rfc-editor.org/info/rfc1977>. <http://www.rfc-editor.org/info/rfc1977>.
[RFC20] Cerf, V., "ASCII format for network interchange", STD 80, [RFC20] Cerf, V., "ASCII format for network interchange", STD 80,
RFC 20, DOI 10.17487/RFC0020, October 1969, RFC 20, DOI 10.17487/RFC0020, October 1969,
<http://www.rfc-editor.org/info/rfc20>. <http://www.rfc-editor.org/info/rfc20>.
[RFC2045] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
Extensions (MIME) Part One: Format of Internet Message
Bodies", RFC 2045, DOI 10.17487/RFC2045, November 1996,
<http://www.rfc-editor.org/info/rfc2045>.
[RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail [RFC2046] Freed, N. and N. Borenstein, "Multipurpose Internet Mail
Extensions (MIME) Part Two: Media Types", RFC 2046, Extensions (MIME) Part Two: Media Types", RFC 2046,
DOI 10.17487/RFC2046, November 1996, DOI 10.17487/RFC2046, November 1996,
<http://www.rfc-editor.org/info/rfc2046>. <http://www.rfc-editor.org/info/rfc2046>.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate
Requirement Levels", BCP 14, RFC 2119, Requirement Levels", BCP 14, RFC 2119,
DOI 10.17487/RFC2119, March 1997, DOI 10.17487/RFC2119, March 1997,
<http://www.rfc-editor.org/info/rfc2119>. <http://www.rfc-editor.org/info/rfc2119>.
skipping to change at page 188, line 36 skipping to change at page 187, line 50
to IPP as provided in Section 7 for: to IPP as provided in Section 7 for:
1. attributes 1. attributes
2. type2 'keyword' attribute values 2. type2 'keyword' attribute values
3. type2 'enum' attribute values 3. type2 'enum' attribute values
4. operations 4. operations
5. status-codes 5. status-code values
A.1. Attribute Registration A.1. Attribute Registration
Type of registration: attribute Type of registration: attribute
Proposed keyword name of this attribute: Proposed keyword name of this attribute:
Types of attributes (Document Description, Document Status, Document Types of attributes (Document Description, Document Status, Document
Template, Event Notifications, Job Description, Job Status, Job Template, Event Notifications, Job Description, Job Status, Job
Template, Operation, Printer Description, Printer Status, Template, Operation, Printer Description, Printer Status,
skipping to change at page 191, line 22 skipping to change at page 190, line 27
consultation with IANA): consultation with IANA):
Operations that this status-code can be used with: Operations that this status-code can be used with:
Specification of this status-code (follow the style of Appendix B): Specification of this status-code (follow the style of Appendix B):
Name of proposer: Name of proposer:
Email address of proposer: Email address of proposer:
Note: For status-codes, the Designated Expert will be the point of Note: For status-code values, the Designated Expert will be the point
contact and change controller for the approved registration of contact and change controller for the approved registration
specification, if any maintenance of the registration specification specification, if any maintenance of the registration specification
is needed. is needed.
Appendix B. Status-Codes and Suggested Status-Code Messages Appendix B. Status-Code Values and Suggested Status-Code Messages
This section defines status-code enum keywords and values that are This section defines status-code enum keywords and values that are
used to provide semantic information on the results of an operation used to provide semantic information on the results of an operation
request. Each operation response MUST include a status-code. The request. Each operation response MUST include a status-code. The
response MAY also contain a status message that provides a short response MAY also contain a status message that provides a short
textual description of the status. The status-code is intended for textual description of the status. The status-code is intended for
use by automata, and the status message is intended for the human End use by automata, and the status message is intended for the human End
User. User.
The prefix of the status keyword defines the class of response as The prefix of the status keyword defines the class of response as
skipping to change at page 191, line 47 skipping to change at page 191, line 4
The prefix of the status keyword defines the class of response as The prefix of the status keyword defines the class of response as
follows: follows:
"informational" - Request received, continuing process "informational" - Request received, continuing process
"successful" - The action was successfully received, understood, and "successful" - The action was successfully received, understood, and
accepted accepted
"redirection" - Further action is taken in order to complete the "redirection" - Further action is taken in order to complete the
request request
"client-error" - The request contains bad syntax or cannot be "client-error" - The request contains bad syntax or cannot be
fulfilled fulfilled
"server-error" - The IPP object failed to fulfill an apparently valid "server-error" - The IPP object failed to fulfill an apparently valid
request request
As with type2 enums, IPP status-codes are extensible. Regardless of
whether all status-codes are recognized, IPP Clients MUST understand As with type2 enums, IPP status-code values are extensible.
the class of any status-code, as indicated by the prefix, and treat Regardless of whether all status-code values are recognized, IPP
any unrecognized response as being equivalent to the first Clients MUST understand the class of any status-code, as indicated by
status-code of that class, with the exception that an unrecognized the prefix, and treat any unrecognized response as being equivalent
response MUST NOT be cached. For example, if an unrecognized to the first status-code of that class, with the exception that an
status-code of 'client-error-xxx-yyy' is received by the Client, it unrecognized response MUST NOT be cached. For example, if an
can safely assume that there was something wrong with its request and unrecognized status-code of 'client-error-xxx-yyy' is received by the
treat the response as if it had received a 'client-error-bad-request' Client, it can safely assume that there was something wrong with its
status-code. The name of the enum is the suggested status message request and treat the response as if it had received a
for US English. 'client-error-bad-request' status-code. The name of the enum is the
suggested status message for US English.
See [PWG5100.19] for guidelines on presenting status messages to End See [PWG5100.19] for guidelines on presenting status messages to End
Users. Users.
The status-code values range from 0x0000 to 0x7fff. The value ranges The status-code values range from 0x0000 to 0x7fff. The value ranges
for each status-code class are as follows: for each status-code class are as follows:
"successful" - 0x0000 to 0x00ff "successful" - 0x0000 to 0x00ff
"informational" - 0x0100 to 0x01ff "informational" - 0x0100 to 0x01ff
skipping to change at page 192, line 37 skipping to change at page 191, line 43
"client-error" - 0x0400 to 0x04ff "client-error" - 0x0400 to 0x04ff
"server-error" - 0x0500 to 0x05ff "server-error" - 0x0500 to 0x05ff
The top half (128 values) of each range (0x0n80 to 0x0nff, for n = 0 The top half (128 values) of each range (0x0n80 to 0x0nff, for n = 0
to 5) is reserved for vendor use within each status-code class. to 5) is reserved for vendor use within each status-code class.
Values 0x0600 to 0x7fff are reserved for future assignment by Values 0x0600 to 0x7fff are reserved for future assignment by
Standards Track documents and MUST NOT be used. Standards Track documents and MUST NOT be used.
B.1. Status-Codes B.1. Status-Code Values
Each status-code is described below. Appendix B.2 contains a table Each status-code is described below. Appendix B.2 contains a table
that indicates which status-codes apply to which operations. The that indicates which status-code values apply to which operations.
Implementor's Guides [RFC3196] [PWG5100.19] provide guidance for The Implementor's Guides [RFC3196] [PWG5100.19] provide guidance for
processing IPP attributes for all operations, including returning processing IPP attributes for all operations, including status-code
status-codes. values.
B.1.1. Informational B.1.1. Informational
This class of status-codes indicates a provisional response and is to This class of status-code values indicates a provisional response and
be used for informational purposes only. is to be used for informational purposes only.
There are no status-codes defined in this document for this class of There are no values defined in this document for this class of
status-codes. status-code values.
B.1.2. Successful Status-Codes B.1.2. Successful Status-Code Values
This class of status-codes indicates that the Client's request was This class of status-code values indicates that the Client's request
successfully received, understood, and accepted. was successfully received, understood, and accepted.
B.1.2.1. successful-ok (0x0000) B.1.2.1. successful-ok (0x0000)
The request has succeeded, and no request attributes were substituted The request has succeeded, and no request attributes were substituted
or ignored. In the case of a response to a Job Creation request, the or ignored. In the case of a response to a Job Creation request, the
'successful-ok' status-code indicates that the request was 'successful-ok' status-code indicates that the request was
successfully received and validated, and that the Job object has been successfully received and validated, and that the Job object has been
created; it does not indicate that the Job has been processed. The created; it does not indicate that the Job has been processed. The
transition of the Job object into the 'completed' state is the only transition of the Job object into the 'completed' state is the only
indicator that the Job has been printed. indicator that the Job has been printed.
skipping to change at page 193, line 47 skipping to change at page 193, line 7
The request has succeeded, but some supplied attribute values The request has succeeded, but some supplied attribute values
conflicted with the values of other supplied attributes. Either conflicted with the values of other supplied attributes. Either
(1) these conflicting values were substituted with (supported) values (1) these conflicting values were substituted with (supported) values
or (2) the attributes were removed in order to process the Job or (2) the attributes were removed in order to process the Job
without rejecting it. Attributes or values that conflict with other without rejecting it. Attributes or values that conflict with other
attributes and have been substituted or ignored MUST be returned in attributes and have been substituted or ignored MUST be returned in
the Unsupported Attributes group of the response for all operations the Unsupported Attributes group of the response for all operations
as supplied by the Client. See Sections 4.1.7 and 4.2.1.2. as supplied by the Client. See Sections 4.1.7 and 4.2.1.2.
B.1.3. Redirection Status-Codes B.1.3. Redirection Status-Code Values
This class of status-codes indicates that further action needs to be This class of status-code values indicates that further action needs
taken to fulfill the request. to be taken to fulfill the request.
There are no status-codes defined in this document for this class of There are no values defined in this document for this class of
status-codes. status-code values.
B.1.4. Client Error Status-Codes B.1.4. Client Error Status-Code Values
This class of status-codes is intended for cases in which the Client This class of status-code values is intended for cases in which the
seems to have erred. The IPP object SHOULD return a message Client seems to have erred. The IPP object SHOULD return a message
containing an explanation of the error situation and whether it is a containing an explanation of the error situation and whether it is a
temporary or permanent condition. temporary or permanent condition.
B.1.4.1. client-error-bad-request (0x0400) B.1.4.1. client-error-bad-request (0x0400)
The request could not be understood by the IPP object due to The request could not be understood by the IPP object due to
malformed syntax (such as the value of a fixed-length attribute whose malformed syntax (such as the value of a fixed-length attribute whose
length does not match the prescribed length for that attribute -- see length does not match the prescribed length for that attribute -- see
the Implementor's Guides [RFC3196] [PWG5100.19]). The IPP the Implementor's Guides [RFC3196] [PWG5100.19]). The IPP
application SHOULD NOT repeat the request without modifications. application SHOULD NOT repeat the request without modifications.
skipping to change at page 196, line 44 skipping to change at page 196, line 5
more details, see the Implementor's Guides [RFC3196] [PWG5100.19]. more details, see the Implementor's Guides [RFC3196] [PWG5100.19].
Note: For attribute values that are URIs, this rare condition is only Note: For attribute values that are URIs, this rare condition is only
likely to occur when a Client has improperly submitted a request with likely to occur when a Client has improperly submitted a request with
long query information (e.g., an IPP application allows an End User long query information (e.g., an IPP application allows an End User
to enter an invalid URI), when the Client has descended into a URI to enter an invalid URI), when the Client has descended into a URI
"black hole" of redirection (e.g., a redirected URI prefix that "black hole" of redirection (e.g., a redirected URI prefix that
points to a suffix of itself), or when the IPP object is under attack points to a suffix of itself), or when the IPP object is under attack
by a Client attempting to exploit security holes present in some IPP by a Client attempting to exploit security holes present in some IPP
objects using fixed-length buffers for reading or manipulating the objects using fixed-length buffers for reading or manipulating the
Request-URI. request URI.
B.1.4.11. client-error-document-format-not-supported (0x040a) B.1.4.11. client-error-document-format-not-supported (0x040a)
The IPP object is refusing to service the request because the The IPP object is refusing to service the request because the
Document data is in a format, as specified in the "document-format" Document data is in a format, as specified in the "document-format"
operation attribute, that is not supported by the Printer. This operation attribute, that is not supported by the Printer. This
error is returned independent of the Client-supplied error is returned independent of the Client-supplied
"ipp-attribute-fidelity" attribute. The Printer MUST return this "ipp-attribute-fidelity" attribute. The Printer MUST return this
status-code, even if there are other Job Template attributes that are status-code, even if there are other Job Template attributes that are
not supported as well, since this error is a bigger problem than with not supported as well, since this error is a bigger problem than with
skipping to change at page 199, line 10 skipping to change at page 198, line 19
attempting to validate the accessibility of, or access to, the attempting to validate the accessibility of, or access to, the
Document data specified in the "document-uri" operation attribute. Document data specified in the "document-uri" operation attribute.
The Printer MAY also return a specific Document access error code The Printer MAY also return a specific Document access error code
using the "document-access-error" operation attribute (see using the "document-access-error" operation attribute (see
Section 4.1.6.4). This error is returned independent of the Section 4.1.6.4). This error is returned independent of the
Client-supplied "ipp-attribute-fidelity" attribute. The Printer MUST Client-supplied "ipp-attribute-fidelity" attribute. The Printer MUST
return this status-code, even if there are Job Template attributes return this status-code, even if there are Job Template attributes
that are not supported as well, since this error is a bigger problem that are not supported as well, since this error is a bigger problem
than with Job Template attributes. See Sections 4.1.6.1 and 4.1.7. than with Job Template attributes. See Sections 4.1.6.1 and 4.1.7.
B.1.5. Server Error Status-Codes B.1.5. Server Error Status-Code Values
This class of status-codes indicates cases in which the IPP object is This class of status-code values indicates cases in which the IPP
aware that it has erred or is incapable of performing the request. object is aware that it has erred or is incapable of performing the
The IPP object SHOULD include a message containing an explanation of request. The IPP object SHOULD include a message containing an
the error situation, and whether it is a temporary or permanent explanation of the error situation, and whether it is a temporary or
condition. permanent condition.
B.1.5.1. server-error-internal-error (0x0500) B.1.5.1. server-error-internal-error (0x0500)
The IPP object encountered an unexpected condition that prevented it The IPP object encountered an unexpected condition that prevented it
from fulfilling the request. This error status-code differs from from fulfilling the request. This error status-code differs from
'server-error-temporary-error' in that it implies a more permanent 'server-error-temporary-error' in that it implies a more permanent
type of internal error. It also differs from type of internal error. It also differs from
'server-error-device-error' in that it implies an unexpected 'server-error-device-error' in that it implies an unexpected
condition (unlike a paper-jam or out-of-toner problem, which is condition (unlike a paper-jam or out-of-toner problem, which is
undesirable but expected). This error status-code indicates that undesirable but expected). This error status-code indicates that
skipping to change at page 201, line 38 skipping to change at page 200, line 45
had been created, then they are returned in the Print-Job, had been created, then they are returned in the Print-Job,
Send-Document, or Send-URI response as usual; otherwise, no "job-id" Send-Document, or Send-URI response as usual; otherwise, no "job-id"
and "job-uri" attributes are returned in the response. and "job-uri" attributes are returned in the response.
B.1.5.10. server-error-multiple-document-jobs-not-supported (0x0509) B.1.5.10. server-error-multiple-document-jobs-not-supported (0x0509)
The IPP object does not support multiple Documents per Job, and a The IPP object does not support multiple Documents per Job, and a
Client attempted to supply Document data with a second Send-Document Client attempted to supply Document data with a second Send-Document
or Send-URI operation. or Send-URI operation.
B.2. Status-Codes for IPP Operations B.2. Status-Code Values for IPP Operations
PJ = Print-Job, PU = Print-URI, CJ = Create-Job, SD = Send-Document, PJ = Print-Job, PU = Print-URI, CJ = Create-Job, SD = Send-Document,
SU = Send-URI, V = Validate-Job, GA = Get-Job-Attributes and SU = Send-URI, V = Validate-Job, GA = Get-Job-Attributes and
Get-Printer-Attributes, GJ = Get-Jobs, C = Cancel-Job Get-Printer-Attributes, GJ = Get-Jobs, C = Cancel-Job
IPP Operations IPP Operations
IPP Status Keyword PJ PU CJ SD SU V GA GJ C IPP Status Keyword PJ PU CJ SD SU V GA GJ C
------------------ -- -- -- -- -- - -- -- - ------------------ -- -- -- -- -- - -- -- -
successful-ok x x x x x x x x x successful-ok x x x x x x x x x
successful-ok-ignored-or-substituted- x x x x x x x x x successful-ok-ignored-or-substituted- x x x x x x x x x
skipping to change at page 203, line 34 skipping to change at page 202, line 41
server-error-device-error server-error-device-error
server-error-temporary-error x x x x x x server-error-temporary-error x x x x x x
server-error-not-accepting-jobs server-error-not-accepting-jobs
server-error-busy x x x x x x server-error-busy x x x x x x
server-error-job-canceled server-error-job-canceled
server-error-multiple-document-jobs- server-error-multiple-document-jobs-
not-supported not-supported
Appendix C. Processing IPP Attributes Appendix C. Processing IPP Attributes
When submitting a Print Job to a Printer, the IPP model allows a When submitting a Print Job to a Printer, the IPP Model allows a
Client to supply operation and Job Template attributes along with the Client to supply operation and Job Template attributes along with the
Document data. These Job Template attributes in the Job Creation Document data. These Job Template attributes in the Job Creation
request affect the rendering, production, and finishing of the request affect the rendering, production, and finishing of the
Documents in the Job. Similar types of instructions can also be Documents in the Job. Similar types of instructions can also be
contained in the Document data itself. In addition, the Printer has contained in the Document data itself. In addition, the Printer has
a set of attributes that describe what rendering and finishing a set of attributes that describe what rendering and finishing
processes are supported by that Printer. This model, which allows processes are supported by that Printer. This model, which allows
for flexibility and power, also introduces the potential that for flexibility and power, also introduces the potential that
Client-supplied attributes can conflict with either: Client-supplied attributes can conflict with either:
o what the implementation is capable of realizing (i.e., what the o what the implementation is capable of realizing (i.e., what the
Printer supports), or Printer supports), or
o the instructions embedded within the Document data itself. o the instructions embedded within the Document data itself.
The following sections describe how these two types of conflicts are The following sections describe how these two types of conflicts are
handled in the IPP model. handled in the IPP Model.
C.1. Fidelity C.1. Fidelity
If there is a conflict between what the Client requests and what a If there is a conflict between what the Client requests and what a
Printer supports, the Client can request one of two possible Printer supports, the Client can request one of two possible
conflict-handling mechanisms: conflict-handling mechanisms:
1) either reject the Job, since the Job cannot be processed exactly 1) either reject the Job, since the Job cannot be processed exactly
as specified, or as specified, or
skipping to change at page 204, line 26 skipping to change at page 203, line 34
In the first case, the Client is indicating the following to the In the first case, the Client is indicating the following to the
Printer: "Print the Job exactly as specified with no exceptions, and Printer: "Print the Job exactly as specified with no exceptions, and
if that can't be done, don't even bother printing the Job at all." if that can't be done, don't even bother printing the Job at all."
In the second case, the Client is indicating the following to the In the second case, the Client is indicating the following to the
Printer: "It is more important to make sure the Job is printed rather Printer: "It is more important to make sure the Job is printed rather
than be processed exactly as specified; just make sure the Job is than be processed exactly as specified; just make sure the Job is
printed even if some Client-supplied attributes need to be changed or printed even if some Client-supplied attributes need to be changed or
ignored." ignored."
The IPP model accounts for this situation by introducing an The IPP Model accounts for this situation by introducing an
"ipp-attribute-fidelity" attribute. "ipp-attribute-fidelity" attribute.
In a Job Creation request, "ipp-attribute-fidelity" is a boolean In a Job Creation request, "ipp-attribute-fidelity" is a boolean
operation attribute that MAY be supplied by the Client. The value operation attribute that MAY be supplied by the Client. The value
'true' indicates that total fidelity to Client-supplied Job Template 'true' indicates that total fidelity to Client-supplied Job Template
attributes and values is required. The Client is requesting that the attributes and values is required. The Client is requesting that the
Job be printed exactly as specified, and if that is not possible, Job be printed exactly as specified, and if that is not possible,
then the Job MUST be rejected rather than processed incorrectly. The then the Job MUST be rejected rather than processed incorrectly. The
value 'false' indicates that a reasonable attempt to print the Job is value 'false' indicates that a reasonable attempt to print the Job is
acceptable. If a Printer does not support some of the acceptable. If a Printer does not support some of the
skipping to change at page 205, line 48 skipping to change at page 205, line 7
an End User that only has access to a Printer with 'na-letter' media an End User that only has access to a Printer with 'na-letter' media
loaded. That End User most likely wants to submit that Document to loaded. That End User most likely wants to submit that Document to
an IPP Printer with the "media" Job Template attribute set to an IPP Printer with the "media" Job Template attribute set to
'na-letter'. Attributes supplied at Job submission time should take 'na-letter'. Attributes supplied at Job submission time should take
precedence over the embedded PDL instructions. However, until precedence over the embedded PDL instructions. However, until
companies that supply Document data interpreters allow a way for companies that supply Document data interpreters allow a way for
external IPP attributes to take precedence over embedded Job external IPP attributes to take precedence over embedded Job
production instructions, a Printer might not be able to support the production instructions, a Printer might not be able to support the
semantics that IPP attributes override the embedded instructions. semantics that IPP attributes override the embedded instructions.
The IPP model accounts for this situation by introducing a The IPP Model accounts for this situation by introducing a
"pdl-override-supported" attribute that describes the Printer's "pdl-override-supported" attribute that describes the Printer's
capabilities to override instructions embedded in the PDL data capabilities to override instructions embedded in the PDL data
stream. The value of the "pdl-override-supported" attribute is stream. The value of the "pdl-override-supported" attribute is
configured by means outside the scope of this IPP/1.1 document. configured by means outside the scope of this IPP/1.1 document.
This REQUIRED Printer attribute takes on the following values: This REQUIRED Printer attribute takes on the following values:
o 'attempted': This value indicates that the Printer attempts to o 'attempted': This value indicates that the Printer attempts to
make the IPP attribute values take precedence over embedded make the IPP attribute values take precedence over embedded
instructions in the Document data; however, there is no guarantee. instructions in the Document data; however, there is no guarantee.
 End of changes. 128 change blocks. 
375 lines changed or deleted 380 lines changed or added

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/