Internet Engineering Task Force (IETF) M. Sweet Request for Comments: 8011 Apple Inc. Obsoletes: 2911, 3381, 3382 I. McDonald Category: Standards Track High North, Inc. ISSN: 2070-1721 January 2017 Internet Printing Protocol/1.1: Model and SemanticsAbstract
The Internet Printing Protocol (IPP) is an application-level protocol for distributed printing using Internet tools and technologies. This document describes a simplified model consisting of abstract objects, attributes, and operations that is independent of encoding and transport. The model consists of several objects, including Printers and Jobs. Jobs optionally support multiple Documents. IPP semantics allow End Users and Operators to query Printer capabilities; submit Print Jobs; inquire about the status of Print Jobs and Printers; and cancel, hold, and release Print Jobs. IPP semantics also allow Operators to pause and resume Jobs and Printers. Security, internationalization, and directory issues are also addressed by the model and semantics. The IPP message encoding and transport are described in "Internet Printing Protocol/1.1: Encoding and Transport" (RFC 8010). This document obsoletes RFCs 2911, 3381, and 3382. Status of This Memo This is an Internet Standards Track document. This document is a product of the Internet Engineering Task Force (IETF). It represents the consensus of the IETF community. It has received public review and has been approved for publication by the Internet Engineering Steering Group (IESG). Further information on Internet Standards is available in Section 2 of RFC 7841. Information about the current status of this document, any errata, and how to provide feedback on it may be obtained at http://www.rfc-editor.org/info/rfc8011.
Copyright Notice Copyright (c) 2017 IETF Trust and the persons identified as the document authors. All rights reserved. This document is subject to BCP 78 and the IETF Trust's Legal Provisions Relating to IETF Documents (http://trustee.ietf.org/license-info) in effect on the date of publication of this document. Please review these documents carefully, as they describe your rights and restrictions with respect to this document. Code Components extracted from this document must include Simplified BSD License text as described in Section 4.e of the Trust Legal Provisions and are provided without warranty as described in the Simplified BSD License.
Table of Contents
1. Introduction ....................................................9 1.1. Simplified Printing Model .................................12 2. Conventions Used in This Document ..............................15 2.1. Requirements Language .....................................15 2.2. Printing Terminology ......................................15 2.3. Model Terminology .........................................16 2.3.1. Administrator ......................................16 2.3.2. Attributes .........................................16 2.3.2.1. Attribute Group Name ......................16 2.3.2.2. Attribute Name ............................16 2.3.2.3. Attribute Syntax ..........................16 2.3.2.4. Attribute Value ...........................17 2.3.3. End User ...........................................17 2.3.4. Impression .........................................17 2.3.5. Input Page .........................................17 2.3.6. Job Creation Operation .............................17 2.3.7. Keyword ............................................17 2.3.8. Media Sheet ........................................18 2.3.9. Operator ...........................................18 2.3.10. Set ...............................................18 2.3.11. Support of Attributes .............................18 2.3.12. Terminating State .................................21 2.4. Abbreviations .............................................21 3. IPP Objects ....................................................22 3.1. Printer Object ............................................22 3.2. Job Object ................................................25 3.3. Object Relationships ......................................25 3.4. Object Identity ...........................................26 4. IPP Operations .................................................29 4.1. Common Semantics ..........................................30 4.1.1. Required Parameters ................................30 4.1.2. Operation IDs and Request IDs ......................31 4.1.3. Attributes .........................................31 4.1.4. Character Set and Natural Language Operation Attributes ...............................33 4.1.4.1. Request Operation Attributes ..............34 4.1.4.2. Response Operation Attributes .............38 4.1.5. Operation Targets ..................................39 4.1.6. Operation Response Status-Code Values and Status Messages ....................................41 4.1.6.1. "status-code" (type2 enum) ................41 4.1.6.2. "status-message" (text(255)) ..............42 4.1.6.3. "detailed-status-message" (text(MAX)) .....43 4.1.6.4. "document-access-error" (text(MAX)) .......43
4.1.7. Unsupported Attributes .............................44 4.1.8. Versions ...........................................45 4.1.9. Job Creation Operations ............................48 4.2. Printer Operations ........................................50 4.2.1. Print-Job Operation ................................51 4.2.1.1. Print-Job Request .........................51 4.2.1.2. Print-Job Response ........................56 4.2.2. Print-URI Operation ................................58 4.2.3. Validate-Job Operation .............................59 4.2.4. Create-Job Operation ...............................59 4.2.5. Get-Printer-Attributes Operation ...................60 4.2.5.1. Get-Printer-Attributes Request ............61 4.2.5.2. Get-Printer-Attributes Response ...........63 4.2.6. Get-Jobs Operation .................................64 4.2.6.1. Get-Jobs Request ..........................65 4.2.6.2. Get-Jobs Response .........................66 4.2.7. Pause-Printer Operation ............................68 4.2.7.1. Pause-Printer Request .....................71 4.2.7.2. Pause-Printer Response ....................71 4.2.8. Resume-Printer Operation ...........................72 4.2.9. Purge-Jobs Operation ...............................73 4.3. Job Operations ............................................73 4.3.1. Send-Document Operation ............................74 4.3.1.1. Send-Document Request .....................75 4.3.1.2. Send-Document Response ....................77 4.3.2. Send-URI Operation .................................78 4.3.3. Cancel-Job Operation ...............................78 4.3.3.1. Cancel-Job Request ........................80 4.3.3.2. Cancel-Job Response .......................81 4.3.4. Get-Job-Attributes Operation .......................81 4.3.4.1. Get-Job-Attributes Request ................82 4.3.4.2. Get-Job-Attributes Response ...............83 4.3.5. Hold-Job Operation .................................84 4.3.5.1. Hold-Job Request ..........................86 4.3.5.2. Hold-Job Response .........................87 4.3.6. Release-Job Operation ..............................87 4.3.7. Restart-Job Operation ..............................89 4.3.7.1. Restart-Job Request .......................91 4.3.7.2. Restart-Job Response ......................92 5. Object Attributes ..............................................92 5.1. Attribute Syntaxes ........................................92 5.1.1. Out-of-Band Values - 'unknown', 'unsupported', and 'no-value' ......................93 5.1.2. 'text' .............................................93 5.1.2.1. 'textWithoutLanguage' .....................94 5.1.2.2. 'textWithLanguage' ........................94
5.1.3. 'name' .............................................95 5.1.3.1. 'nameWithoutLanguage' .....................96 5.1.3.2. 'nameWithLanguage' ........................96 5.1.3.3. Matching 'name' Attribute Values ..........97 5.1.4. 'keyword' ..........................................98 5.1.5. 'enum' .............................................99 5.1.6. 'uri' .............................................100 5.1.7. 'uriScheme' .......................................100 5.1.8. 'charset' .........................................101 5.1.9. 'naturalLanguage' .................................102 5.1.10. 'mimeMediaType' ..................................102 5.1.10.1. 'application/octet-stream' - Auto-Sensing the Document Format ........103 5.1.11. 'octetString' ....................................104 5.1.12. 'boolean' ........................................104 5.1.13. 'integer' ........................................104 5.1.14. 'rangeOfInteger' .................................105 5.1.15. 'dateTime' .......................................105 5.1.16. 'resolution' .....................................105 5.1.17. 'collection' .....................................105 5.1.18. '1setOf X' .......................................106 5.2. Job Template Attributes ..................................106 5.2.1. job-priority (integer(1:100)) .....................109 5.2.2. job-hold-until (type2 keyword | name(MAX)) ........111 5.2.3. job-sheets (type2 keyword | name(MAX)) ............112 5.2.4. multiple-document-handling (type2 keyword) ........113 5.2.5. copies (integer(1:MAX)) ...........................115 5.2.6. finishings (1setOf type2 enum) ....................115 5.2.7. page-ranges (1setOf rangeOfInteger(1:MAX)) ........118 5.2.8. sides (type2 keyword) .............................119 5.2.9. number-up (integer(1:MAX)) ........................120 5.2.10. orientation-requested (type2 enum) ...............120 5.2.11. media (type2 keyword | name(MAX)) ................123 5.2.12. printer-resolution (resolution) ..................124 5.2.13. print-quality (type2 enum) .......................124 5.3. Job Description and Status Attributes ....................124 5.3.1. job-id (integer(1:MAX)) ...........................126 5.3.2. job-uri (uri) .....................................126 5.3.3. job-printer-uri (uri) .............................127 5.3.4. job-more-info (uri) ...............................127 5.3.5. job-name (name(MAX)) ..............................127 5.3.6. job-originating-user-name (name(MAX)) .............128 5.3.7. job-state (type1 enum) ............................128 5.3.7.1. Forwarding Servers .......................132 5.3.7.2. Partitioning of Job States ...............132 5.3.8. job-state-reasons (1setOf type2 keyword) ..........133 5.3.9. job-state-message (text(MAX)) .....................138 5.3.10. job-detailed-status-messages (1setOf text(MAX)) ..139
5.3.11. job-document-access-errors (1setOf text(MAX)) ....139 5.3.12. number-of-documents (integer(0:MAX)) .............139 5.3.13. output-device-assigned (name(127)) ...............139 5.3.14. Event Time Job Status Attributes .................140 5.3.14.1. time-at-creation (integer(MIN:MAX)) .....140 5.3.14.2. time-at-processing (integer(MIN:MAX)) ...141 5.3.14.3. time-at-completed (integer(MIN:MAX)) ....141 5.3.14.4. job-printer-up-time (integer(1:MAX)) ....141 5.3.14.5. date-time-at-creation (dateTime|unknown) ......................141 5.3.14.6. date-time-at-processing (dateTime|unknown|no-value) .............141 5.3.14.7. date-time-at-completed (dateTime|unknown|no-value) .............141 5.3.15. number-of-intervening-jobs (integer(0:MAX)) ......142 5.3.16. job-message-from-operator (text(127)) ............142 5.3.17. Job Size Attributes ..............................142 5.3.17.1. job-k-octets (integer(0:MAX)) ...........142 5.3.17.2. job-impressions (integer(0:MAX)) ........143 5.3.17.3. job-media-sheets (integer(1:MAX)) .......143 5.3.18. Job Progress Attributes ..........................144 5.3.18.1. job-k-octets-processed (integer(0:MAX)) ........................144 5.3.18.2. job-impressions-completed (integer(0:MAX)) ........................144 5.3.18.3. job-media-sheets-completed (integer(0:MAX)) ........................144 5.3.19. attributes-charset (charset) .....................144 5.3.20. attributes-natural-language (naturalLanguage) ....145 5.4. Printer Description and Status Attributes ................145 5.4.1. printer-uri-supported (1setOf uri) ................147 5.4.2. uri-authentication-supported (1setOf type2 keyword) ..........................................148 5.4.3. uri-security-supported (1setOf type2 keyword) .....149 5.4.4. printer-name (name(127)) ..........................150 5.4.5. printer-location (text(127)) ......................150 5.4.6. printer-info (text(127)) ..........................151 5.4.7. printer-more-info (uri) ...........................151 5.4.8. printer-driver-installer (uri) ....................151 5.4.9. printer-make-and-model (text(127)) ................151 5.4.10. printer-more-info-manufacturer (uri) .............151 5.4.11. printer-state (type1 enum) .......................152 5.4.12. printer-state-reasons (1setOf type2 keyword) .....152 5.4.13. printer-state-message (text(MAX)) ................157 5.4.14. ipp-versions-supported (1setOf type2 keyword) ....157 5.4.15. operations-supported (1setOf type2 enum) .........157
5.4.16. multiple-document-jobs-supported (boolean) .......159 5.4.17. charset-configured (charset) .....................159 5.4.18. charset-supported (1setOf charset) ...............159 5.4.19. natural-language-configured (naturalLanguage) ....160 5.4.20. generated-natural-language-supported (1setOf naturalLanguage) .........................160 5.4.21. document-format-default (mimeMediaType) ..........160 5.4.22. document-format-supported (1setOf mimeMediaType) ...................................161 5.4.23. printer-is-accepting-jobs (boolean) ..............161 5.4.24. queued-job-count (integer(0:MAX)) ................161 5.4.25. printer-message-from-operator (text(127)) ........161 5.4.26. color-supported (boolean) ........................161 5.4.27. reference-uri-schemes-supported (1setOf uriScheme) .......................................162 5.4.28. pdl-override-supported (type2 keyword) ...........162 5.4.29. printer-up-time (integer(1:MAX)) .................162 5.4.30. printer-current-time (dateTime|unknown) ..........163 5.4.31. multiple-operation-time-out (integer(1:MAX)) .....164 5.4.32. compression-supported (1setOf type2 keyword) .....164 5.4.33. job-k-octets-supported (rangeOfInteger(0:MAX)) ...165 5.4.34. job-impressions-supported (rangeOfInteger(0:MAX)) ..........................165 5.4.35. job-media-sheets-supported (rangeOfInteger(1:MAX)) ..........................165 5.4.36. pages-per-minute (integer(0:MAX)) ................165 5.4.37. pages-per-minute-color (integer(0:MAX)) ..........165 6. Conformance ...................................................166 6.1. Client Conformance Requirements ..........................166 6.2. IPP Object Conformance Requirements ......................168 6.2.1. Objects ...........................................168 6.2.2. Operations ........................................168 6.2.3. IPP Object Attributes .............................170 6.2.4. Versions ..........................................170 6.2.5. Extensions ........................................171 6.2.6. Attribute Syntaxes ................................171 6.2.7. Security ..........................................172 6.3. Charset and Natural Language Requirements ................172 7. IANA Considerations ...........................................173 7.1. Object Extensions ........................................174 7.2. Attribute Extensibility ..................................174 7.3. Keyword Extensibility ....................................175 7.4. Enum Extensibility .......................................176 7.5. Attribute Group Extensibility ............................176 7.6. Out-of-Band Attribute Value Extensibility ................176 7.7. Attribute Syntax Extensibility ...........................177 7.8. Operation Extensibility ..................................177 7.9. Status-Code Extensibility ................................178
8. Internationalization Considerations ...........................179 9. Security Considerations .......................................183 9.1. Security Scenarios .......................................184 9.1.1. Client and Server in the Same Security Domain .....184 9.1.2. Client and Server in Different Security Domains ...184 9.1.3. Print by Reference ................................184 9.2. URIs in Operation, Job, and Printer Attributes ...........185 9.3. URIs for Each Authentication Mechanism ...................185 9.4. Restricted Queries .......................................186 9.5. Operations Performed by Operators and Administrators .....186 9.6. Queries on Jobs Submitted Using Non-IPP Protocols ........186 10. Changes since RFC 2911 .......................................187 11. References ...................................................188 11.1. Normative References ....................................188 11.2. Informative References ..................................194 Appendix A. Formats for IPP Registration Proposals ...............197 A.1. Attribute Registration ....................................197 A.2. type2 'keyword' Attribute Value Registration ..............198 A.3. type2 'enum' Attribute Value Registration .................198 A.4. Operation Registration ....................................199 A.5. Status-Code Registration ..................................199 Appendix B. Status-Code Values and Suggested Status-Code Messages .............................................200 B.1. Status-Code Values ........................................201 B.1.1. Informational .........................................201 B.1.2. Successful Status-Code Values .........................201 B.1.2.1. successful-ok (0x0000) ............................201 B.1.2.2. successful-ok-ignored-or-substituted-attributes (0x0001) ..........................................202 B.1.2.3. successful-ok-conflicting-attributes (0x0002) .....202 B.1.3. Redirection Status-Code Values ........................202 B.1.4. Client Error Status-Code Values .......................202 B.1.4.1. client-error-bad-request (0x0400) .................203 B.1.4.2. client-error-forbidden (0x0401) ...................203 B.1.4.3. client-error-not-authenticated (0x0402) ...........203 B.1.4.4. client-error-not-authorized (0x0403) ..............203 B.1.4.5. client-error-not-possible (0x0404) ................203 B.1.4.6. client-error-timeout (0x0405) .....................204 B.1.4.7. client-error-not-found (0x0406) ...................204 B.1.4.8. client-error-gone (0x0407) ........................204 B.1.4.9. client-error-request-entity-too-large (0x0408) ....205 B.1.4.10. client-error-request-value-too-long (0x0409) .....205 B.1.4.11. client-error-document-format-not-supported (0x040a) .........................................205 B.1.4.12. client-error-attributes-or-values-not-supported (0x040b) .........................................206 B.1.4.13. client-error-uri-scheme-not-supported (0x040c) ...206 B.1.4.14. client-error-charset-not-supported (0x040d) ......206
B.1.4.15. client-error-conflicting-attributes (0x040e) .....207 B.1.4.16. client-error-compression-not-supported (0x040f) ..207 B.1.4.17. client-error-compression-error (0x0410) ..........207 B.1.4.18. client-error-document-format-error (0x0411) ......207 B.1.4.19. client-error-document-access-error (0x0412) ......207 B.1.5. Server Error Status-Code Values .......................208 B.1.5.1. server-error-internal-error (0x0500) ..............208 B.1.5.2. server-error-operation-not-supported (0x0501) .....208 B.1.5.3. server-error-service-unavailable (0x0502) .........208 B.1.5.4. server-error-version-not-supported (0x0503) .......209 B.1.5.5. server-error-device-error (0x0504) ................209 B.1.5.6. server-error-temporary-error (0x0505) .............210 B.1.5.7. server-error-not-accepting-jobs (0x0506) ..........210 B.1.5.8. server-error-busy (0x0507) ........................210 B.1.5.9. server-error-job-canceled (0x0508) ................210 B.1.5.10. server-error-multiple-document-jobs-not-supported (0x0509) .........................................210 B.2. Status-Code Values for IPP Operations .....................211 Appendix C. Processing IPP Attributes ............................213 C.1. Fidelity ..................................................213 C.2. Page Description Language (PDL) Override ..................215 C.3. Using Job Template Attributes during Document Processing ..217 Appendix D. Generic Directory Schema .............................218 Acknowledgements .................................................221 Authors' Addresses ...............................................2211. Introduction
The Internet Printing Protocol (IPP) is an application-level protocol for distributed printing using Internet tools and technologies. IPP version 1.1 (IPP/1.1) focuses primarily on End User functionality with a few administrative operations included. IPP versions 2.0, 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 IPP. The full set of IETF IPP documents includes: Design Goals for an Internet Printing Protocol [RFC2567] Rationale for the Structure of the Model and Protocol for the Internet Printing Protocol [RFC2568] Internet Printing Protocol/1.1: Model and Semantics (this document) Internet Printing Protocol/1.1: Encoding and Transport [RFC8010] Internet Printing Protocol/1.1: Implementor's Guide [RFC3196]
Internet Printing Protocol/1.1: IPP URL Scheme [RFC3510] Internet Printing Protocol (IPP) over HTTPS Transport Binding and the 'ipps' URI Scheme [RFC7472] Internet Printing Protocol (IPP): Requirements for Job, Printer, and Device Administrative Operations [RFC3239] Internet Printing Protocol (IPP): Job and Printer Set Operations [RFC3380] Internet Printing Protocol (IPP): Job and Printer Administrative Operations [RFC3998] Internet Printing Protocol (IPP): Requirements for IPP Notifications [RFC3997] Internet Printing Protocol (IPP): Event Notifications and Subscriptions [RFC3995] Internet Printing Protocol (IPP): The 'ippget' Delivery Method for Event Notifications [RFC3996] Mapping between LPD and IPP Protocols [RFC2569] Anyone reading these documents for the first time is strongly encouraged to read the IPP documents in the above order. Additional IPP specifications have been published by the IEEE-ISTO Printer Working Group's IPP Workgroup [PWG-IPP-WG]. The following standards are highly recommended reading: PWG Media Standardized Names 2.0 (MSN2) [PWG5101.1] IPP Finishings 2.0 (FIN) [PWG5100.1] Internet Printing Protocol (IPP): "output-bin" attribute extension [PWG5100.2] Internet Printing Protocol (IPP): Production Printing Attributes - Set 1 [PWG5100.3] (for "media-col" Job Template attribute) Standard for The Internet Printing Protocol (IPP): Document Object [PWG5100.5] Standard for The Internet Printing Protocol (IPP): Page Overrides [PWG5100.6]
Standard for The Internet Printing Protocol (IPP): Job Extensions [PWG5100.7] Standard for Internet Printing Protocol (IPP): "-actual" attributes [PWG5100.8] Internet Printing Protocol (IPP): Printer State Extensions v1.0 [PWG5100.9] Internet Printing Protocol (IPP): Job and Printer Extensions - Set 2 (JPS2) [PWG5100.11] IPP Version 2.0, 2.1, and 2.2 [PWG5100.12] IPP: Job and Printer Extensions - Set 3 (JPS3) [PWG5100.13] IPP Everywhere [PWG5100.14] IPP FaxOut Service [PWG5100.15] IPP Transaction-Based Printing Extensions [PWG5100.16] IPP Scan Service (SCAN) [PWG5100.17] IPP Shared Infrastructure Extensions (INFRA) [PWG5100.18] IPP Implementor's Guide v2.0 (IG) [PWG5100.19] This document is organized as follows: o The rest of Section 1 is an introduction to the IPP simplified model for distributed printing; o Section 2 defines the terminology and conventions used within this document; o Section 3 introduces the object types covered in this document with their basic behaviors, attributes, and interactions; o Section 4 defines the core operations for IPP/1.1. IPP operations are synchronous -- each operation has both a request and a response; o Section 5 defines the core attributes (and their syntaxes) that are used in the model;
o Sections 6 and 7 summarize the implementation conformance requirements for objects that support the protocol and IANA considerations, respectively; o Sections 8 and 9 cover the internationalization and security considerations for IPP; and o The appendices provide a reference for status-code values, processing of IPP attributes, and the generic directory schema.1.1. Simplified Printing Model
In order to achieve its goal of realizing a workable printing protocol for the Internet, the Internet Printing Protocol (IPP) is based on a simplified printing model that abstracts the many components of real-world printing solutions. The Internet is a distributed computing environment where requesters of print services (Clients, applications, Printer drivers, etc.) cooperate and interact with print service providers. This document (sometimes referred to here as the "Model and Semantics" document) describes a simple, abstract model for IPP even though the underlying configurations can be complex "n-tier" client/server systems. An important simplifying step in the IPP Model is to expose only the key objects and interfaces required for printing. The model described in this document does not include features, interfaces, and relationships 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 development efforts [HTPP] [ISO10175] [LDPA] [P1387.4] [PSIS] [RFC1179] [SWP]. IPP is heavily influenced by the printing model introduced in the Document Printing Application (DPA) [ISO10175] standard. Although DPA specifies both End User and administrative features, IPP/1.1 focuses primarily on End User functionality with a few additional OPTIONAL operations for Administrators and Operators. The IPP Model encapsulates the important components of distributed printing into the following IPP object types: o Printer (Section 3.1) o Job (Section 3.2) o Document (see [PWG5100.5]) o Subscription (see [RFC3995]) Each object type has an associated set of operations (see Section 4) and attributes (see Section 5).
It is important, however, to understand that in real system implementations (which lie underneath the abstracted IPP Model), there are other components of a print service that are not explicitly defined in the IPP Model. The following figure illustrates where IPP fits with respect to these other components. +----------------+ | Application | o + . . . . . . . | \|/ | Spooler | / \ + . . . . . . . | +---------+ End User | Printer Driver |---| File | +-----------+ +-----+ +-------+--------+ +----+----+ | Browser | | GUI | | | +-----+-----+ +--+--+ | | | | | | | +---+-------------+--+ | N D S | | IPP Client |--------------+ O I E | +---------+----------+ T R C | | I E U | F C R -------------- Transport ------------------- I T I C O T | --+ A R Y +--------+--------+ | T Y | IPP Server | | I +--------+--------+ | O | | N +-----------------+ | IPP Printer | Print Service | | +-----------------+ | | --+ +-----------------+ | Output Device(s)| +-----------------+ Figure 1: IPP Model An IPP Printer object ("Printer") encapsulates the functions normally associated with physical Output Devices along with the spooling, scheduling, and multiple device management functions often associated with a print server. Printers are optionally registered as entries in a directory where End Users find and select them based on some sort of filtered context-based searching mechanism (see Appendix D). The directory is used to store relatively static information about the Printer, allowing End Users to search for and find Printers that match their search criteria -- for example, name, location, context, Printer capabilities, etc. The more dynamic information, such as
state, currently loaded and ready media, number of Jobs at the Printer, errors, warnings, and so forth, is directly associated with the Printer itself rather than with the entry in the directory, which only references the Printer. IPP Clients ("Clients") implement IPP on the Client side and give End Users (or programs running on behalf of End Users) the ability to query Printers and submit and manage Print Jobs. An IPP server is just that part of the Printer object that implements the server-side protocol. The rest of the Printer object implements (or gateways into) the application semantics of the print service itself. Printers can be embedded in an Output Device or can be implemented on a host on the network that communicates with an Output Device. When a Job is submitted to the Printer and the Printer has validated the attributes in the submission request, the Printer creates a new IPP Job object ("Job"). The End User then interacts with this new Job to query its status and monitor the progress of the Job. An End User can also cancel their Print Jobs by using the Job's Cancel-Job operation. An End User can also hold, release, and restart their Print Jobs using the Job's OPTIONAL Hold-Job, Release-Job, and Restart-Job operations, if implemented. A privileged Operator or Administrator of a Printer can cancel, hold, release, and restart any user's Job using the REQUIRED Cancel-Job and the OPTIONAL Hold-Job, Release-Job, and Restart-Job operations. In addition, a privileged Operator or Administrator of a Printer can pause, resume, or purge (Jobs from) a Printer using the OPTIONAL Pause-Printer, Resume-Printer, and Purge-Jobs operations, if implemented. The notification service is defined in "Internet Printing Protocol (IPP): Event Notifications and Subscriptions" [RFC3995]. By using such a notification service, the End User is able to register for and receive Printer-specific and Job-specific events asynchronously. Otherwise, an End User can query the status of Printers and can follow the progress of Jobs by polling using the Get-Printer-Attributes, Get-Jobs, and Get-Job-Attributes operations.