home *** CD-ROM | disk | FTP | other *** search
/ Internet Info 1997 December / Internet_Info_CD-ROM_Walnut_Creek_December_1997.iso / drafts / draft_ietf_i / draft-ietf-ipp-model-05.txt < prev    next >
Text File  |  1997-09-10  |  276KB  |  5,855 lines

  1.  
  2.          INTERNET-DRAFT
  3.          draft-ietf-ipp-model-05.txt
  4.                                                                        R. deBry
  5.                                                                 IBM Corporation
  6.                                                                     T. Hastings
  7.                                                               Xerox Corporation
  8.                                                                      R. Herriot
  9.                                                                Sun Microsystems
  10.                                                                     S. Isaacson
  11.                                                                    Novell, Inc.
  12.                                                                       P. Powell
  13.                                                      San Diego State University
  14.                                                               September 3, 1997
  15.  
  16.                   Internet Printing Protocol/1.0: Model and Semantics
  17.  
  18.          Status of this Memo
  19.  
  20.          This document is an Internet-Draft.  Internet-Drafts are working
  21.          documents of the Internet Engineering Task Force (IETF), its areas,
  22.          and its working groups.  Note that other groups may also distribute
  23.          working documents as Internet-Drafts.
  24.  
  25.          Internet-Drafts are draft documents valid for a maximum of six months
  26.          and may be updated, replaced, or obsoleted by other documents at any
  27.          time.  It is inappropriate to use Internet-Drafts as reference
  28.          material or to cite them other than as "work in progress".
  29.  
  30.          To learn the current status of any Internet-Draft, please check the
  31.          "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
  32.          Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
  33.          munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
  34.          ftp.isi.edu (US West Coast).
  35.  
  36.          Abstract
  37.  
  38.          This document is one of a set of documents, which together describe
  39.          all aspects of a new Internet Printing Protocol (IPP).  IPP is an
  40.          application level protocol that can be used for distributed printing
  41.          using Internet tools and technology.  The protocol is heavily
  42.          influenced by the printing model introduced in the Document Printing
  43.          Application (ISO/IEC 10175 DPA) standard.  Although DPA specifies both
  44.          end user and administrative features, IPP version 1.0 is focused only
  45.          on end user functionality.
  46.  
  47.          The full set of IPP documents includes:
  48.  
  49.  
  50.  
  51.          deBry, Hastings, Herriot, Isaacson, Powell
  52.                                         [Page 1]
  53.                                   Expires March3, 1998
  54.  
  55.  
  56.  
  57.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  58.  
  59.  
  60.            Internet Printing Protocol: Requirements
  61.            Internet Printing Protocol/1.0: Model and Semantics
  62.            Internet Printing Protocol/1.0: Security
  63.            Internet Printing Protocol/1.0: Protocol Specification
  64.            Internet Printing Protocol/1.0: Directory Schema
  65.  
  66.          The requirements document takes a broad look at distributed printing
  67.          functionality, and it enumerates real-life scenarios that help to
  68.          clarify the features that need to be included in a printing protocol
  69.          for the Internet.  It identifies requirements for three types of
  70.          users: end users, operators, and administrators.  The requirements
  71.          document calls out a subset of end user requirements that MUST be
  72.          satisfied in the first version of IPP.  Operator and administrator
  73.          requirements are out of scope for v1.0. The model and semantics
  74.          document describes a simplified model with abstract objects, their
  75.          attributes, and their operations. The model introduces a Printer
  76.          object and a Job object.  The Job object supports multiple documents
  77.          per job.  The security document covers potential threats and proposed
  78.          counters to those threats.  The protocol specification is formal
  79.          document which incorporates the ideas in all the other documents into
  80.          a concrete mapping using clearly defined data representations and
  81.          transport protocol mappings that real implementers can use to develop
  82.          interoperable client and server side components. Finally, the
  83.          directory schema document shows a generic schema for directory service
  84.          entries that represent instances of IPP Printers.
  85.  
  86.          This document is the "Internet Printing Protocol/1.0: Model and
  87.          Semantics" document.
  88.  
  89.  
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.          deBry, Hastings, Herriot, Isaacson, Powell
  110.                                         [Page 2]
  111.                                Expires February xx, 1998
  112.  
  113.  
  114.  
  115.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  116.  
  117.  
  118.                                    Table of Contents
  119.  
  120.          1. Simplified Printing Model .......................................7
  121.          2. IPP Objects .....................................................9
  122.          2.1  Printer Object..................................................9
  123.          2.2  Job Object.....................................................12
  124.          2.3  Document Object................................................12
  125.          2.4  Object Relationships...........................................12
  126.          2.5  Object Identity................................................13
  127.          3. IPP Operations .................................................15
  128.          3.1  General Semantics..............................................16
  129.          3.1.1     Operation Targets........................................16
  130.          3.1.2     Operation Status Codes and Messages......................16
  131.          3.1.3     Security Concerns for IPPOperations......................17
  132.          3.1.3.1     Authenticated Requester Identity .......................17
  133.          3.1.3.2     Restricted Queries .....................................17
  134.          3.1.4     Versions.................................................18
  135.          3.1.5     Job Creation Operations..................................18
  136.          3.2  Printer Operations.............................................20
  137.          3.2.1     Print-Job Operation......................................20
  138.          3.2.1.1     Print-Job Request ......................................20
  139.          3.2.1.2     Print-Job Response .....................................22
  140.          3.2.2     Print-URI Operation......................................23
  141.          3.2.3     Validate-Job Operation...................................23
  142.          3.2.4     Create-Job Operation.....................................23
  143.          3.2.5     Get-Attributes Operation.................................24
  144.          3.2.5.1     Get-Attributes Request .................................24
  145.          3.2.5.2     Get-Attributes Response ................................25
  146.          3.2.6     Get-Jobs Operation.......................................25
  147.          3.2.6.1     Get-Jobs Request .......................................25
  148.          3.2.6.2     Get-Jobs Response ......................................26
  149.          3.3  Job Operations.................................................27
  150.          3.3.1     Send-Document Operation..................................27
  151.          3.3.1.1     Send-Document Request ..................................27
  152.          3.3.1.2     Send-Document Response .................................28
  153.          3.3.2     Send-URI Operation.......................................29
  154.          3.3.3     Cancel Job Operation.....................................29
  155.          3.3.3.1     Cancel-Job Request .....................................29
  156.          3.3.3.2     Cancel-Job Response ....................................29
  157.          3.3.4     Get-Attributes Operation.................................29
  158.          3.3.4.1     Get-Attributes Request .................................30
  159.          3.3.4.2     Get-Attributes Response ................................30
  160.          4. Object Attributes ..............................................31
  161.          4.1  Attribute Syntaxes.............................................31
  162.          4.2  Job Template Attributes........................................33
  163.          4.2.1     job-sheets (type4 keyword)...............................37
  164.          4.2.2     notify-events (1setOf type2 keyword).....................38
  165.          4.2.2.1     Event Notification Content .............................38
  166.  
  167.          deBry, Hastings, Herriot, Isaacson, Powell
  168.                                         [Page 3]
  169.                                Expires February xx, 1998
  170.  
  171.  
  172.  
  173.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  174.  
  175.  
  176.          4.2.3     notify-addresses (1setOf uri)............................39
  177.          4.2.4     job-priority (integer(1:100))............................39
  178.          4.2.5     job-hold-until (type4 keyword)...........................40
  179.          4.2.6     multiple-document-handling (type2 keyword)...............40
  180.          4.2.7     media (type4 keyword)....................................41
  181.          4.2.8     number-up (type3 keyword)................................42
  182.          4.2.9     sides (type2 keyword)....................................42
  183.          4.2.10    printer-resolution (resoultion)..........................43
  184.          4.2.11    print-quality (type2 enum)...............................43
  185.          4.2.12    finishings (1setOf type2 enum)...........................43
  186.          4.2.13    copies (integer(1:2**31 - 1))............................44
  187.          4.2.14    page-range (rangeOf integer).............................44
  188.          4.2.15    orientation (type2 enum).................................45
  189.          4.2.16    document-format (mimeType)...............................45
  190.          4.2.17    compression (type3 keyword)..............................45
  191.          4.2.18    job-k-octets (integer(0:2**31 - 1))......................46
  192.          4.2.19    job-impressions (integer(0:2**31 - 1))...................46
  193.          4.2.20    job-media-sheets (integer(0:2**31 - 1))..................46
  194.          4.3  Job Description Attributes.....................................46
  195.          4.3.1     job-uri (uri)............................................47
  196.          4.3.2     job-id (32bit unsigned integer)..........................48
  197.          4.3.3     job-uri-user (uri).......................................48
  198.          4.3.4     job-name (name)..........................................48
  199.          4.3.5     job-originating-user (name)..............................48
  200.          4.3.6     job-originating-host (name)..............................48
  201.          4.3.7     user-human-language (human-language).....................49
  202.          4.3.8     job-state (type1 enum)...................................49
  203.          4.3.9     job-state-reasons (1setOf  type2 keyword)................51
  204.          4.3.10    job-state-message (text).................................53
  205.          4.3.11    output-device-assigned (name)............................53
  206.          4.3.12    time-since-pending (integer).............................53
  207.          4.3.13    time-since-processing (integer)..........................53
  208.          4.3.14    time-since-completed (integer)...........................53
  209.          4.3.15    number-of-intervening-jobs (integer(0:2**31 - 1))........53
  210.          4.3.16    job-message-from-operator (text).........................54
  211.          4.3.17    job-k-octets-processed (integer(0:2**31 - 1))............54
  212.          4.3.18    job-impressions-completed  (integer(0:2**31 - 1))........54
  213.          4.3.19    job-media-sheets-completed (integer(0:2**31 - 1))........54
  214.          4.4  Document Attributes............................................54
  215.          4.4.1     document-name (name).....................................55
  216.          4.4.2     document-uri (uri).......................................55
  217.          4.5  Printer Description Attributes.................................56
  218.          4.5.1     printer-uri (uri)........................................58
  219.          4.5.2     printer-name (name)......................................58
  220.          4.5.3     printer-location (text)..................................58
  221.          4.5.4     printer-description (text)...............................58
  222.          4.5.5     printer-more-info (uri)..................................58
  223.          4.5.6     printer-driver-installer (uri)...........................59
  224.  
  225.          deBry, Hastings, Herriot, Isaacson, Powell
  226.                                         [Page 4]
  227.                                Expires February xx, 1998
  228.  
  229.  
  230.  
  231.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  232.  
  233.  
  234.          4.5.7     printer-make-and-model (text)............................59
  235.          4.5.8     printer-more-info-manufacturer (uri).....................59
  236.          4.5.9     printer-state (type1 enum)...............................59
  237.          4.5.10    printer-state-reasons (1setOf type2 keyword).............60
  238.          4.5.11    printer-state-message (text).............................62
  239.          4.5.12    operations-supported (1setOf type2 enum).................62
  240.          4.5.13    printer-is-accepting-jobs (boolean)......................63
  241.          4.5.14    queued-job-count (integer(0:2**31 - 1))..................63
  242.          4.5.15    printer-message-from-operator (text).....................63
  243.          4.5.16    printer-human-language (human-language)..................63
  244.          4.5.17    printer-human-language-supported (1setOf human-language).63
  245.          4.5.18    color-supported (boolean)................................64
  246.          4.5.19    pdl-override (type2 keyword).............................64
  247.          4.5.20    Security Related Attributes..............................64
  248.          4.5.20.1    message-protection-supported (keyword) .................65
  249.          4.5.20.2    authentication-authorization-supported (keyword) .......65
  250.          4.5.21    printer-up-time (seconds)................................65
  251.          4.5.22    printer-current-time (dateTime)..........................65
  252.          5. Conformance ....................................................66
  253.          5.1  Client Conformance Requirements................................66
  254.          5.2  Printer Object Conformance Requirements........................67
  255.          5.2.1     Objects..................................................67
  256.          5.2.2     Operations...............................................67
  257.          5.2.3     Attributes...............................................67
  258.          5.2.4     Printer extensions.......................................68
  259.          5.2.5     Attribute Syntaxes.......................................68
  260.          5.3  Security Conformance Requirements..............................68
  261.          6. IANA Considerations (registered and private extensions) ........68
  262.          6.1  Typed Extensions...............................................68
  263.          6.2  Registration of MIME types/sub-types for document-formats......70
  264.          6.3  Attribute Extensibility........................................70
  265.          6.4  Attribute Syntax Extensibility.................................70
  266.          7. Internationalization Considerations ............................70
  267.          8. Security Considerations ........................................71
  268.          9. References .....................................................71
  269.          10.Author's Address ...............................................73
  270.          11.APPENDIX A: Terminology ........................................76
  271.          11.1 Conformance Terminology........................................76
  272.          11.1.1    MUST.....................................................76
  273.          11.1.2    MUST NOT.................................................76
  274.          11.1.3    SHOULD...................................................76
  275.          11.1.4    SHOULD NOT...............................................76
  276.          11.1.5    MAY......................................................76
  277.          11.1.6    NEED NOT.................................................77
  278.          11.2 Model Terminology..............................................77
  279.          11.2.1    Keyword..................................................77
  280.          11.2.2    Attributes...............................................77
  281.          11.2.2.1    Attribute Name .........................................77
  282.  
  283.          deBry, Hastings, Herriot, Isaacson, Powell
  284.                                         [Page 5]
  285.                                Expires February xx, 1998
  286.  
  287.  
  288.  
  289.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  290.  
  291.  
  292.          11.2.2.2    Attribute Group Name ...................................78
  293.          11.2.2.3    Attribute Value ........................................78
  294.          11.2.2.4    Attribute Syntax .......................................78
  295.          11.2.3    Supports.................................................78
  296.          12.APPENDIX B:  Status Codes ......................................80
  297.          12.1 Status Codes (type2 keyword)...................................80
  298.          12.1.1    Informational............................................81
  299.          12.1.2    Successful Status Codes..................................81
  300.          12.1.2.1    successful-ok (0x00) ...................................81
  301.          12.1.2.2    successful-ok-ignored-or-substituted-attributes (0x01) .81
  302.          12.1.3    Redirection Status Codes.................................81
  303.          12.1.4    Client Error Status Codes................................81
  304.          12.1.4.1    client-error-bad-request (0x400) .......................81
  305.          12.1.4.2    client-error-forbidden (0x401) .........................82
  306.          12.1.4.3    client-error-not-authenticated (0x402) .................82
  307.          12.1.4.4    client-error-not-authorized (0x403) ....................82
  308.          12.1.4.5    client-error-not-possible (0x404) ......................82
  309.          12.1.4.6    client-error-timeout (0x405) ...........................82
  310.          12.1.4.7    client-error-not-found (0x406) .........................83
  311.          12.1.4.8    client-error-gone (0x407) ..............................83
  312.          12.1.4.9    client-error-request-entity-too-large (0x408) ..........83
  313.          12.1.4.10   client-error-request-URI-too-long (0x409) ..............84
  314.          12.1.4.11   client-error-unsupported-document-format (0x40A) .......84
  315.          12.1.4.12   client-error-attribute-not-supported (0x40B) ...........84
  316.          12.1.5    Server Error Status Codes................................84
  317.          12.1.5.1    server-error-internal- error (0x500) ...................85
  318.          12.1.5.2    server-error-operation-not-supported (0x501) ...........85
  319.          12.1.5.3    server-error-service-unavailable (0x502) ...............85
  320.          12.1.5.4    server-error-version-not-supported (0x503) .............85
  321.          12.1.5.5    server-error-device-error (0x504) ......................85
  322.          12.1.5.6    server-error-temporary-error (0x505) ...................86
  323.          12.2 Status Keywords for IPP Operations.............................87
  324.          13.APPENDIX C: "document-format" values ...........................87
  325.          14.APPENDIX D:  "media" keyword values ............................90
  326.          15.APPENDIX E: Processing IPP Attributes ..........................95
  327.          15.1 Fidelity.......................................................95
  328.          15.2 Page Description Language (PDL) Override.......................97
  329.          15.3 Suggested Attribute Processing Algorithm.......................98
  330.          16.APPENDIX F: Relationship to SNMP MIBs .........................101
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.          deBry, Hastings, Herriot, Isaacson, Powell
  342.                                         [Page 6]
  343.                                Expires February xx, 1998
  344.  
  345.  
  346.  
  347.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  348.  
  349.  
  350.  
  351.          1. Simplified Printing Model
  352.  
  353.          In order to a achieve its goal of realizing a workable printing
  354.          protocol for the Internet, the Internet Printing Protocol (IPP) is
  355.          based on a simplified printing model which abstracts the many
  356.          components of real world printing solutions.  The Internet is a
  357.          distributed computing environment where requesters of print services
  358.          (clients, applications, printer drivers, etc.) cooperate and interact
  359.          with print service providers.  This model and semantics document
  360.          describes a simple, abstract model for IPP even though the underlying
  361.          configurations may be complex "n-tier" client/server systems.  An
  362.          important simplifying step in the IPP model is to expose only the key
  363.          objects and interfaces required for printing.  The model does not
  364.          include features, interfaces, and relationships that are beyond the
  365.          scope of IPP [20].
  366.  
  367.          The IPP model encapsulates the important components of distributed
  368.          printing into three object types:
  369.  
  370.            - Printer (Section 2.1)
  371.            - Job (Section 2.2)
  372.            - Document (Section 2.3)
  373.  
  374.          Each object type has an associated set of operations (see section 3)
  375.          and attributes (see section 4).
  376.  
  377.          The terminology used in the remainder of this document is defined in
  378.          Appendix A (section 11) .  Terms such as "attributes", "keywords", and
  379.          "supports" have special meaning in this document and are defined in
  380.          the model terminology section.  .  Terms such as "MANDATORY", "MUST",
  381.          and "OPTIONAL" have special meaning relating to conformance.  These
  382.          terms are defined in the section on conformance terminology, most of
  383.          which is taken from RFC 2119 [25].
  384.  
  385.          It is important, however, to understand that in real system
  386.          implementations (which lie underneath the abstracted IPP model), there
  387.          are other components of a print service which are not explicitly
  388.          defined in the IPP model. The following figure illustrates where IPP
  389.          fits with respect to these other components.
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.          deBry, Hastings, Herriot, Isaacson, Powell
  400.                                         [Page 7]
  401.                                Expires February xx, 1998
  402.  
  403.  
  404.  
  405.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  406.  
  407.  
  408.  
  409.                                       +--------------+
  410.                                       |  Application |
  411.                             o         +. . . . . . . |
  412.                            \|/        |   Spooler    |
  413.                            / \        +. . . . . . . |   +---------+
  414.                          End-User     | Print Driver |---|  File   |
  415.                +-----------+ +-----+  +------+-------+   +----+----+
  416.                |  Browser  | | GUI |         |                |
  417.                +-----+-----+ +--+--+         |                |
  418.                      |          |            |                |
  419.                      |      +---+------------+---+            |
  420.          N   D   S   |      |      IPP Client    |------------+
  421.          O   I   E   |      +---------+----------+
  422.          T   R   C   |                |
  423.          I   E   U   |
  424.          F   C   R   -------------- Transport ------------------
  425.          I   T   I
  426.          C   O   T                    |         --+
  427.          A   R   Y           +--------+--------+  |
  428.          T   Y               |    IPP Server   |  |
  429.          I                   +--------+--------+  |
  430.          O                            |           |
  431.          N                   +-----------------+  | IPP Printer
  432.                              |  Print Service  |  |
  433.                              +-----------------+  |
  434.                                       |         --+
  435.                              +-----------------+
  436.                              | Output Device(s)|
  437.                              +-----------------+
  438.  
  439.          An IPP Printer encapsulates the functions normally associated with
  440.          physical output devices along with the spooling, scheduling and
  441.          multiple device management functions often associated with a print
  442.          server. IPP Printers are optionally registered as entries in a
  443.          directory where end users find and select them based on some sort of
  444.          filtered and context based searching mechanism.  The directory is used
  445.          to store relatively static information about the Printer, allowing end
  446.          users to search for and find Printers that match their search criteria
  447.          (name, context, printer capabilities, etc.). The more dynamic
  448.          information associated with a Printer includes state, currently loaded
  449.          and ready media, number of jobs at the Printer, errors, warnings, and
  450.          so forth.
  451.  
  452.          IPP clients implement the IPP protocol on the client side, and give
  453.          end users (or programs) the ability to query an IPP Printer and submit
  454.          and manage print jobs.  An IPP server is just that part of the IPP
  455.          Printer that implements the server-side protocol.  The rest of the IPP
  456.  
  457.          deBry, Hastings, Herriot, Isaacson, Powell
  458.                                         [Page 8]
  459.                                Expires February xx, 1998
  460.  
  461.  
  462.  
  463.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  464.  
  465.  
  466.          Printer implements the application semantics of the print service
  467.          itself.  The IPP Printer may be embedded in an output device or may be
  468.          implemented on a host on the network that communicates with the output
  469.          device.
  470.  
  471.          When a job is submitted to the Printer and the Printer validates the
  472.          data in the submission request, the Printer creates a Job object.  The
  473.          end user then interacts with this new Job to query its status and
  474.          monitor the progress of the job.  End users may also cancel the Job.
  475.          The end user is able to register to receive certain events that are
  476.          then routed using the specified notification service(s).
  477.  
  478.  
  479.          2. IPP Objects
  480.  
  481.          The IPP model introduces objects of type Printer, Job, and Document.
  482.          Each object type is defined as a set of possible attributes that may
  483.          be supported by each instance of an object of that type.  For each
  484.          object instance, the actual set of supported attributes and values
  485.          describe the specific implementation.  The object's attributes and
  486.          values describe its capabilities, realizable features, job processing
  487.          functions, and default behaviors and characteristics. For example, the
  488.          object type "Printer" is defined as a set of attributes that each
  489.          instance of a Printer object might potentially support.  In the same
  490.          manner, the object type "Job" is defined as a set of attributes that
  491.          are potentially supported by each instance of a Job object.
  492.  
  493.          Each attribute included in the set of attributes defining an object
  494.          type is labeled as:
  495.  
  496.            - "MANDATORY": each object instance MUST support the attribute.
  497.            - "OPTIONAL": each object instance MAY support the attribute.
  498.  
  499.          There is no such similar labeling of attribute values.  However, if an
  500.          implementation supports an attribute, it must support at least one
  501.          (and possibly all) of the possible values for that attribute.
  502.  
  503.  
  504.          2.1 Printer Object
  505.  
  506.          A major component of the IPP model is the Printer object.  An instance
  507.          of a Printer object implements the IPP protocol.  Using the protocol,
  508.          end users may query the attributes of the Printer and submit Jobs to
  509.          the Printer (section 3 describes each of the Printer specific
  510.          operations in detail).  The actual implementation components behind
  511.          the Printer abstraction may take on different forms and different
  512.          configurations.  However, the model abstraction allows the details of
  513.  
  514.  
  515.          deBry, Hastings, Herriot, Isaacson, Powell
  516.                                         [Page 9]
  517.                                Expires February xx, 1998
  518.  
  519.  
  520.  
  521.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  522.  
  523.  
  524.          the configuration of real components to remain transparent to the end
  525.          user.
  526.  
  527.          The capabilities and state of an IPP Printer are described by its
  528.          attributes.  Printer attributes are grouped as follows:
  529.  
  530.            "job-template" attributes (section 4.2)
  531.            "printer-description" attributes (section 4.5)
  532.  
  533.          Since a Printer object is an abstraction of a generic document output
  534.          device and print service provider, an IPP Printer object could be used
  535.          to represent any real or virtual device with semantics consistent with
  536.          the Printer object, such as a fax-out device, an imager, or even a CD
  537.          writer.
  538.  
  539.          Some examples of configurations supporting a Printer object include:
  540.  
  541.            1) An output device, with no spooling capabilities
  542.            2) An output device, with a built-in spooler
  543.            3) A print server supporting IPP with one or more associated output
  544.               devices
  545.               3a) The associated output devices might or might not be capable
  546.                 of spooling jobs
  547.               3b) The associated output devices might or might not support IPP
  548.  
  549.          See the following figures for some examples on how to view IPP Printer
  550.          objects implemented on top of various print system configurations.
  551.          The embedded case below represents configurations 1 and 2. The hosted
  552.          and fan-out figures below represent configuration 3.
  553.  
  554.  
  555.  
  556.  
  557.  
  558.  
  559.  
  560.  
  561.  
  562.  
  563.  
  564.  
  565.  
  566.  
  567.  
  568.  
  569.  
  570.  
  571.  
  572.  
  573.          deBry, Hastings, Herriot, Isaacson, Powell
  574.                                        [Page 10]
  575.                                Expires February xx, 1998
  576.  
  577.  
  578.  
  579.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  580.  
  581.  
  582.          Legend:
  583.  
  584.          ##### indicates a Printer object which is
  585.                either embedded in an output device or is
  586.                hosted in a server.  The implementation
  587.                might or might not be capable of queuing/spooling.
  588.  
  589.          any   indicates any network protocol or direct
  590.                connect, including IPP
  591.  
  592.  
  593.          embedded printer:
  594.                                                    output device
  595.                                                  +---------------+
  596.           O   +--------+                         |  ###########  |
  597.          /|\  | client |------------IPP------------># Printer #  |
  598.          / \  +--------+                         |  # Object  #  |
  599.                                                  |  ###########  |
  600.                                                  +---------------+
  601.  
  602.  
  603.          hosted printer:
  604.                                                  +---------------+
  605.           O   +--------+        ###########      |               |
  606.          /|\  | client |--IPP--># Printer #-any->| output device |
  607.          / \  +--------+        # Object  #      |               |
  608.                                 ###########      +---------------+
  609.  
  610.  
  611.  
  612.                                                   +---------------+
  613.          fan out:                                 |               |
  614.                                               +-->| output device |
  615.                                           any/    |               |
  616.           O   +--------+      ###########   /     +---------------+
  617.          /|\  | client |-IPP-># Printer #--*
  618.          / \  +--------+      # Object  #   \     +---------------+
  619.                               ########### any\    |               |
  620.                                               +-->| output device |
  621.                                                   |               |
  622.                                                   +---------------+
  623.  
  624.  
  625.          It is assumed that URIs for IPP Printers are available to end users or
  626.          programs that wish to interact with the Printer.  Although NOT
  627.          MANDATORY, it is RECOMMENDED that Printers be registered in a
  628.          directory service which end users and programs can interrogate.
  629.          "Internet Printing Protocol: Directory Schema"[24] defines the
  630.  
  631.          deBry, Hastings, Herriot, Isaacson, Powell
  632.                                        [Page 11]
  633.                                Expires February xx, 1998
  634.  
  635.  
  636.  
  637.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  638.  
  639.  
  640.          attributes to be associated with a Printer entry in a directory
  641.          service.
  642.  
  643.  
  644.          2.2 Job Object
  645.  
  646.          A Job object is used to model a job.  A Job can contain one or more
  647.          Documents.  The information required to create a Job object is sent in
  648.          a create request from the end user via an IPP client to an IPP
  649.          Printer.  Section 3 describes each of the Job specific operations in
  650.          detail.
  651.  
  652.          The characteristics and state of an IPP Job are described by its
  653.          attributes.  Job attributes are grouped as follows:
  654.  
  655.            "job-template" attributes (optionally supplied by the client/end
  656.               user, section 4.2)
  657.            "job-description" attributes (set by the Printer, section 4.3)
  658.  
  659.  
  660.          2.3 Document Object
  661.  
  662.          A Document object is used to model a document.  A Document consists of
  663.          either printable data or a URI reference to printable data  An
  664.          instance of a Document object is a set of attributes which describe
  665.          the document data.  Document Attributes (see section 4.4). Document
  666.          attributes only describe the data to be printed; they do not include
  667.          any specialized document processing instructions.  All processing
  668.          instructions are at the Job level and are called called Job Template
  669.          attributes and they apply equally to all Documents within a Job.
  670.  
  671.  
  672.  
  673.  
  674.          2.4 Object Relationships
  675.  
  676.          Instances of objects within the system have relationships that MUST be
  677.          maintained persistently along with the persistent storage of the
  678.          object attributes.  An instance of a Printer object usually represents
  679.          one or more output devices.  A Printer object may represent a logical
  680.          device which "processes" jobs but never actually uses a physical
  681.          output device to put marks on paper (for example a Web page publisher
  682.          or an interface into an online document archive or repository).  A
  683.          Printer can contain zero or more Job objects.  An instance of a Job
  684.          object is contained in exactly one Printer object, however the
  685.          identical Job data could be sent to either the same or a different
  686.          Printer.  In this case, the new Job would be an identical, but
  687.          different Jobsince it each would have a different Job identifier.  A
  688.  
  689.          deBry, Hastings, Herriot, Isaacson, Powell
  690.                                        [Page 12]
  691.                                Expires February xx, 1998
  692.  
  693.  
  694.  
  695.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  696.  
  697.  
  698.          Job object contains one or more Documents.  If the Document is simply
  699.          a reference to some print data stream, the referenced document may be
  700.          used in multiple Documents in the same Job or even in different Jobs,
  701.          though each Document contains its own copy of the reference.  If the
  702.          Document is not just a reference, but an actual stream of print data,
  703.          the stream is contained in only one Document, although there can be
  704.          copies of the same document data in other Documents in the same or
  705.          different Jobs.
  706.  
  707.  
  708.          2.5 Object Identity
  709.  
  710.          All instances of Printer and Job objects have a URI so that they can
  711.          persistently and unambiguously referenced.  The IPP model requires
  712.          that these values be URIs as defined by RFC 1738 [11] and RFC 1808
  713.          [34].  In addition to an identifier, instances of Printers, Jobs, and
  714.          Documents may have a name.  An object name need not be unique across
  715.          all instances of all objects. The Printer name is chosen and set by an
  716.          administrator through some mechanism outside the scope of IPP itself.
  717.          If the client does not supply Job name or a Document name, the Printer
  718.          generates a name.  In all cases, the name only has local meaning, and
  719.          it is not constrained to be unique.
  720.  
  721.          To summarize:
  722.  
  723.            - Each Printer will be uniquely identified with a URI.  The
  724.               Printer's "printer-uri" attribute contains the URI.
  725.            - Each Job will be uniquely identified with a URI.  The Job's "job-
  726.               uri" attribute contains the URI.
  727.            - Each Printer has name (which is not necessarily unique).  The
  728.               administrator chooses and sets this name through some mechanism
  729.               outside the scope of IPP itself.  The Printer's "printer-name"
  730.               attribute contains the name.
  731.            - Each Job has name (which is not necessarily unique).  The client
  732.               optionally supplies this name in the create request.  If the
  733.               client does not supply this name, the Printer generates a name
  734.               for the Job. The Job's "job-name" attribute contains the name.
  735.            - Each Document has name (which is not necessarily unique).  The
  736.               client optionally supplies this name in the request which creates
  737.               the Document.  If the client does not supply this name, the
  738.               Printer generates a name for the Document. The Document's
  739.               "document-name" attribute contains the name.
  740.  
  741.          Note: If Documents are printed by reference, the corresponding
  742.          Document object contains a "document-uri" attribute.  The value of
  743.          this attribute is a reference to the document data to be printed; it
  744.          is not a unique identifier of the Document object itself.
  745.  
  746.  
  747.          deBry, Hastings, Herriot, Isaacson, Powell
  748.                                        [Page 13]
  749.                                Expires February xx, 1998
  750.  
  751.  
  752.  
  753.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  754.  
  755.  
  756.  
  757.  
  758.          Proposal:
  759.  
  760.          All instances of Printer objects have a URI so that they can
  761.          persistently and unambiguously referenced.  The IPP model requires
  762.          that these values be URIs as defined by RFC 1738 [11] and RFC 1808.
  763.          All Printer operations are directed to the Printer's URI.  All
  764.          instances of Job objects have an opaque identifier that when used in
  765.          combination with its Printer URI, allow it to be persistently and
  766.          unambiguously referenced.  Instances of Document objects have no
  767.          identifier since they are always created and queried using Job
  768.          operations; that is the model does not define semantics for querying
  769.          the attributes of just one Document within a multi-Document Job.
  770.  
  771.          In addition to these identifier attributes, instances of Printer, Job,
  772.          and Document objects may have a name.  An object name need not be
  773.          unique across all instances of all objects. The Printer name is chosen
  774.          and set by an administrator.  A client optionally supplies Job and
  775.          Document names in the operations that create Jobs and Documents.  If a
  776.          client does not supply a name, the Printer generates a name.  In all
  777.          cases, the name only has local meaning, and it is not in any way
  778.          constrained to be unique.
  779.  
  780.          To summarize:
  781.  
  782.            - Each Printer will be uniquely identified with a URI.  The
  783.               Printer's "printer-uri" attribute contains this URI.
  784.            - Each Job will be uniquely identified with a Job ID and a Printer
  785.               URI.  The Job's "job-id" attribute contains the Job ID.  The
  786.               Printer's "printer-uri" attribute contains the Printer's URI.
  787.            - Each Printer has name (which is not necessarily unique).  The
  788.               administrator chooses and sets this name through some mechanism
  789.               outside the scope of IPP itself.  The Printer's "printer-name"
  790.               attribute contains the name.
  791.            - Each Job has name (which is not necessarily unique).  The client
  792.               optionally supplies this name in the create request.  If the
  793.               client does not supply this name, the Printer generates a name
  794.               for the Job. The Job's "job-name" attribute contains the name.
  795.            - Each Document has name (which is not necessarily unique).  The
  796.               client optionally supplies this name in the request that creates
  797.               the Document.  If the client does not supply this name, the
  798.               Printer generates a name for the Document. The Document's
  799.               "document-name" attribute contains the name.
  800.  
  801.          Note: If Documents are printed by reference, the corresponding
  802.          Document object contains a "document-uri" attribute.  The value of
  803.  
  804.  
  805.          deBry, Hastings, Herriot, Isaacson, Powell
  806.                                        [Page 14]
  807.                                Expires February xx, 1998
  808.  
  809.  
  810.  
  811.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  812.  
  813.  
  814.          this attribute is a reference to the document data to be printed; it
  815.          is not a unique identifier of the Document object itself.
  816.  
  817.  
  818.          3. IPP Operations
  819.  
  820.          Jobs and Printers each have a set of associated operations.
  821.          Operations consist of requests and responses.  When a client
  822.          communicates with an IPP object, it issues an operation request to the
  823.          URI for that object.  Each request carries along with it any operation
  824.          attributes and data required by the object to perform the operation.
  825.          Each request requires a response from the object.  Each response
  826.          indicates success or failure of the operation with a status code, and
  827.          may include operation attributes  and an optional status message.  The
  828.          representation and encoding of IPP operations is described in
  829.          "Internet Printing Protocol: Protocol Specification" [23].  This
  830.          section describes the IPP operations in terms of their semantics and
  831.          contents, including both the request and the response for each
  832.          operation.
  833.  
  834.          The Printer operations are fully defined in section 3.2:
  835.  
  836.            Print-Job (section 3.2.1)
  837.            Print-URI (section 3.2.2)
  838.            Validate-Job (section 3.2.3)
  839.            Create-Job (section 3.2.4)
  840.            Get-Attributes (section 3.2.5)
  841.            Get-Jobs (section 3.2.6)
  842.  
  843.          The Job operations are fully defined in section 3.3:
  844.  
  845.            Send-Document (section 3.3.1)
  846.            Send-URI (section 3.3.2)
  847.            Cancel-Job (section 3.3.3)
  848.            Get-Attributes (section 3.3.4)
  849.  
  850.          There are no explicit Document operations.  However, there are Job
  851.          operations that are used to create and query Document objects
  852.          contained within a Job object.  The Send-Document and Send-URI Job
  853.          operations are used to add a new Document to an existing multi-
  854.          Document Job.  If requested, the Get-Attribute operation used for a
  855.          Job also returns any Document object attributes.  If the Job is a
  856.          single Document Job, only a single set of Document attributes is
  857.          returned.  If however, the Job contains multiple Documents, the Get-
  858.          Attribute Response contains multiple sets of Document attributes, one
  859.          set for each Document.
  860.  
  861.  
  862.  
  863.          deBry, Hastings, Herriot, Isaacson, Powell
  864.                                        [Page 15]
  865.                                Expires February xx, 1998
  866.  
  867.  
  868.  
  869.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  870.  
  871.  
  872.          3.1 General Semantics
  873.  
  874.          3.1.1 Operation Targets
  875.  
  876.          All IPP operations are directed at an instance of an IPP object.  For
  877.          Printer operations, the operation is directed at an IPP Printer using
  878.          its URI.  That is, all Printer operations must somehow contain the
  879.          target attribute "printer-uri" indicating the target of the operation.
  880.          In the mapping of IPP over HTTP, the "printer-uri" attribute is
  881.          actually encoded as the "request-URI" component of the HTTP operation.
  882.          In other mappings, the target URI might be encoded using some other
  883.          transport specific mechanism.
  884.  
  885.          For Job operations, the operation is directed at an IPP Job using its
  886.          URI.  Like Printer operations, all Job operations must somehow contain
  887.          the target attribute "job-uri" indicating the target of the operation.
  888.          Also, like Printer operations, in the mapping of IPP over HTTP, the
  889.          "job-uri" attribute is actually encoded as the "request-URI" component
  890.          of the HTTP operation.  In other mappings, the target URI might be
  891.          encoded using some other transport specific mechanism.
  892.  
  893.          Propsal:
  894.  
  895.          For Job operations, the the operation is directed at the Printer's URI
  896.          and it is accompanied by the Job ID .  This allows the IPP Printer
  897.          implementation to find the correct Job object.  That is, both the
  898.          "printer-uri" attribute and the "job-id" attribute must both be
  899.          supplied as the target of every Job operation.  Like Printer
  900.          operations, in the mapping of IPP over HTTP, the "printer-uri"
  901.          attribute is encoded in the "request-URI" component of the HTTP
  902.          operation.  However, the "job-id" attribute is supplied as an
  903.          operation attribute within the operation data itself.  If a Printer
  904.          receives an IPP operation, it must check to see if the "job-id"
  905.          attribute is included among the operation attributes.  If it is there,
  906.          the operation is being directed at the Job identified by the value of
  907.          "job-id".  If it is not there, the operation is being directed at the
  908.          Printer itself.
  909.  
  910.          3.1.2 Operation Status Codes and Messages
  911.  
  912.          Every operation response returns a MANDATORY status code and an
  913.          OPTIONAL status message. A status code provides information on the
  914.          processing of a request.  A status message provides a short textual
  915.          description of the status of the operation.  The status code is
  916.          intended for use by automata and the status message is intended for
  917.          the human user.  If a response does include a status message,an IPP
  918.          application is not required to examine or display the status message.
  919.          Status codes and suggested corresponding status messages are described
  920.  
  921.          deBry, Hastings, Herriot, Isaacson, Powell
  922.                                        [Page 16]
  923.                                Expires February xx, 1998
  924.  
  925.  
  926.  
  927.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  928.  
  929.  
  930.          in section 12. In most cases, if the status code indicates an error,
  931.          there are additional attributes in the response  that are not returned
  932.          in the successful case.  One such example is the group of unsupported
  933.          attributes and values.  This set of attributes is returned in response
  934.          to an operation request that includes attributes that are not
  935.          supported by the object.
  936.  
  937.          3.1.3 Security Concerns for IPPOperations
  938.  
  939.          3.1.3.1 Authenticated Requester Identity
  940.  
  941.          IPP is layered on top of security services that supply the requester's
  942.          identity.  It is assumed that identity supplied by the authentication
  943.          service is the most authenticated identity required by a given site's
  944.          configuration and current policy.  It is also assumed that the
  945.          layering allows for a single IPP implementation to be run over a
  946.          consistent interface that supplies the authenticated identity. The
  947.          authentication interface should allow for various modular and
  948.          extensible authentication service implementations without requiring
  949.          changes to the IPP implementation.
  950.  
  951.          Once the authenticated identity of the requester has been supplied to
  952.          the IPP implementation, the implementation uses that identity to
  953.          enforce any authorization policy(ies) that might be in place.  When a
  954.          Job is created, the identity of the requester of the create operation
  955.          is persistently stored in the Job's "job-originating-user" attribute.
  956.          This attribute can be used to match the requester's identity of
  957.          subsequent operations on that Job in order to enforce the local
  958.          authorization policy(ies), if any.  There are operation status codes
  959.          that allow an implementation to return information back to the
  960.          operation requester about what has been forbidden, not allowed, or not
  961.          authorized.
  962.  
  963.          For example, a site security policy might be that only the job owner
  964.          is allowed to cancel a job using the Cancel-Job operation.
  965.  
  966.          3.1.3.2 Restricted Queries
  967.  
  968.          In many of these IPP operations, a client supplies a list of
  969.          attributes to be returned in the response.  A Printer may be
  970.          configured, for security reasons, not to return all attributes that a
  971.          client requests.  It may even return none of the requested attributes.
  972.          In such cases, the status returned is the same as if the Printer had
  973.          returned all requested attributes.  The client cannot tell by such a
  974.          response whether the requested attribute was present or absent on the
  975.          Printer.
  976.  
  977.  
  978.  
  979.          deBry, Hastings, Herriot, Isaacson, Powell
  980.                                        [Page 17]
  981.                                Expires February xx, 1998
  982.  
  983.  
  984.  
  985.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  986.  
  987.  
  988.          3.1.4 Versions
  989.  
  990.          Each operation request carries with it a version number. Each version
  991.          number is in the form X.Y where X is the major version number and Y is
  992.          the minor version number.
  993.  
  994.          By including a version number in the client request, it allows the
  995.          client (the requester) to identify which version of IPP it is
  996.          interested in using.  If the Printer does not support that version,
  997.          the Printer responds with a status code of  'server-error-version-not-
  998.          supported'.  There is no version negotiation per se.  However, if
  999.          after receiving a version not supported status code from the Printer,
  1000.          there is nothing that prevents a client from trying again with a
  1001.          different version number.  For example, a client might be configured
  1002.          to support IPP version 3.0, 2.5, 2.0 and 1.0 (hypothetically
  1003.          speaking).  A client might first try to speak version 3.0.  If after
  1004.          receiving a version not supported, it might successively try version
  1005.          2.5, then 2.0, then 1.0.  All implementations MUST support version
  1006.          1.0.
  1007.  
  1008.          Items that might affect the changing of the major version number
  1009.          include any changes to the protocol specification itself such as:
  1010.  
  1011.            - reordering of ordered attributes or attribute sets
  1012.            - changes to the syntax of existing attributes
  1013.            - changing OPTIONAL to MANDATORY and vice versa
  1014.  
  1015.          Items that might affect the changing of the minor version number
  1016.          include any changes to the model objects and attributes but not the
  1017.          protocol specification itself, such as:
  1018.  
  1019.            - grouping all extensions not included in a previous version into a
  1020.               new version
  1021.            - formally adding in new attribute values
  1022.            - changing any of the type1 attributes
  1023.  
  1024.  
  1025.          3.1.5 Job Creation Operations
  1026.  
  1027.          In order to create a new Job object, a client issues a create request.
  1028.          A create request is any one of following three operation requests:
  1029.  
  1030.            - The Print-Job Request: A client that wants to create a Job with
  1031.               only a single Document uses the Print-Job operation. .  The
  1032.               operation allows for the client to "push" the document data to
  1033.               the Printer by including the document data in the request itself.
  1034.  
  1035.  
  1036.  
  1037.          deBry, Hastings, Herriot, Isaacson, Powell
  1038.                                        [Page 18]
  1039.                                Expires February xx, 1998
  1040.  
  1041.  
  1042.  
  1043.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  1044.  
  1045.  
  1046.            - The Print-URI Request: A client that wants to create a Job with
  1047.               only a single Document where the Printer "pulls" the document
  1048.               data uses the Print-URI operation.   In this case, the client
  1049.               includes only a URI reference to the document data (not the
  1050.               document data itself).
  1051.  
  1052.            - The Create-Job Request:  A client that wants to create a Job with
  1053.               multiple Documents uses the Create-Job operation. . This
  1054.               operation is followed by an arbitrary number of Send-Document or
  1055.               Send-URI operations (each creating another Document for this
  1056.               Job).  The Send-Document operation includes the document data in
  1057.               the request (the client "pushes" the document data to the
  1058.               printer), and the Send-URI operation includes only a URI
  1059.               reference to the document data in the request (the Printer
  1060.               "pulls" the document data from the referenced location).  The
  1061.               last Send-Document or Send-URI request includes a "last-document"
  1062.               attribute set to 'true'  indicating that this is the last
  1063.               Document for this Job.
  1064.  
  1065.          Throughout this model specification, the term "create request" is used
  1066.          to refer to any of these three operation requests.
  1067.  
  1068.          A Create-Job operation followed by only one Send-Document operation is
  1069.          semantically equivalent to a Print-Job operation, however, for
  1070.          performance reasons, the client SHOULD use the Print-Job operation for
  1071.          all single Document Jobs.  Also, Print-Job is a MANDATORY operation
  1072.          (all implementations MUST support it) whereas Create-Job is an
  1073.          OPTIONAL operation, hence some implemations might not support it.
  1074.  
  1075.          Appendix E: Processing IPP Attributes (see Section 15) describes the
  1076.          rules and issues surrounding either the acceptance or rejection of a
  1077.          create request.
  1078.  
  1079.          At job submission time, the Printer does not need to validate the
  1080.          document data or the actual contents of the URI reference to document
  1081.          data (in the case of a Print-URI).  The Printer SHOULD check the
  1082.          syntax of the URI to make sure that it appears to be a valid URI.
  1083.          However, other checks are essentially useless,since they require
  1084.          actually parsing and interpreting all of the print data, or in the
  1085.          case of a URI, checking for availability at Job submission time does
  1086.          not guarantee availability at Job processing time.  In other words,
  1087.          even if the checks were made a Job submission time, they MUST also be
  1088.          done later at Job processing time, since at job processing time, the
  1089.          Printer might discover any of the following conditions:
  1090.  
  1091.            - additional runtime errors in the document data,
  1092.            - some nested document data  is in an unsupported format,
  1093.  
  1094.  
  1095.          deBry, Hastings, Herriot, Isaacson, Powell
  1096.                                        [Page 19]
  1097.                                Expires February xx, 1998
  1098.  
  1099.  
  1100.  
  1101.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  1102.  
  1103.  
  1104.            - the URI reference is no longer valid (i.e., the server hosting
  1105.               the data might be down), or
  1106.            - any other run-time job processing error
  1107.  
  1108.          At this point, the Printer is unable to return an error status code in
  1109.          the create response, since it had already sent the create response
  1110.          with a successful status code.  In this case, the Printer, depending
  1111.          on the error, can set the "job-state", "job-state-reasons", or "job-
  1112.          state-message" attributes to the appropriate value(s) so that later
  1113.          queries can report the correct job status.  Also, if the client has
  1114.          requested notification for 'job-problems', the Printer could notify
  1115.          the client via the address(es) in the "notify-addresses" attribute.
  1116.  
  1117.  
  1118.          3.2 Printer Operations
  1119.  
  1120.          3.2.1 Print-Job Operation
  1121.  
  1122.          When an end user desires to submit a print job with only one Document,
  1123.          the client uses a Print-Job operation.   A Print-Job operation differs
  1124.          from a Print-URI operation in that a Print-Job operation contains the
  1125.          document data to be printed and a Print-URI operation only contains a
  1126.          reference to the document data.  A Validate-Job operation contains no
  1127.          data, only a set of Job Template and Document attributes whose values
  1128.          can be validated for consistency.  A Create-Job operation is similar
  1129.          as well, however the Create-Job Request is used to create a multi-
  1130.          Document Job.
  1131.  
  1132.          3.2.1.1 Print-Job Request
  1133.  
  1134.          The following sets of attributes are supplied as  as part of the
  1135.          Print-Job Request:
  1136.  
  1137.          Operation Attributes
  1138.  
  1139.            "job-name" (name):
  1140.               This OPTIONAL attribute identifies the client supplied Job name.
  1141.               If this attribute is supplied, its value it used for the "job-
  1142.               name" attribute of the newly created Job object. If this
  1143.               attribute is not supplied by the client, the Printer generates a
  1144.               name to use in the "job-name" attribute of the newly created Job
  1145.               object (see Section 4.3.4).
  1146.  
  1147.            "ipp-attribute-fidelity" (boolean):
  1148.               This is an OPTIONAL attribute.  If not supplied, the Printer
  1149.               assumes the value is 'false'.  The value 'true' indicates that
  1150.               total fidelity to client supplied attributes and values is
  1151.               required. The value 'false' indicates that a reasonable attempt
  1152.  
  1153.          deBry, Hastings, Herriot, Isaacson, Powell
  1154.                                        [Page 20]
  1155.                                Expires February xx, 1998
  1156.  
  1157.  
  1158.  
  1159.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  1160.  
  1161.  
  1162.               to print the Job is acceptable.  All implementations support both
  1163.               types of job processing.  See section 15 for a full description
  1164.               of "ipp-attribute-fidelity" and its relationship to other
  1165.               attributes, especially the Printer's "pdl-override" attribute.
  1166.  
  1167.  
  1168.            "document-name" (name):
  1169.               This OPTIONAL attribute identifies the client supplied Document
  1170.               name.  If this attribute is supplied, its value it used for the
  1171.               "document-name" attribute of the newly created Document object.
  1172.               If this attribute is not supplied by the client, the Printer
  1173.               optionally generates a name to use in the "document-name"
  1174.               attribute of the newly created Document object (see Section 4.4).
  1175.  
  1176.               ISSUE: Since this is part of a Print-Job that creates only a
  1177.               single Document, should we
  1178.               not allow this attribute?
  1179.  
  1180.  
  1181.          Job Template Attributes
  1182.  
  1183.               An optional set of Job Template attributes as defined in section
  1184.               4.2.  If the client supplies no Job Template attributes in the
  1185.               Print-Job Request, the Printer uses the values set in its default
  1186.               value attributes at job processing time (not job submission
  1187.               time).
  1188.  
  1189.          Document Attributes:
  1190.  
  1191.               An optional set of Document Attributes as defined in section 4.4.
  1192.               If "document-format" is not supplied, the Printer assumes that
  1193.               the document data is in a format that this acceptable to the
  1194.               Printer.  If the "document-format" is unknown for a certain
  1195.               document, the client SHALL NOT supply the attribute in the create
  1196.               request or the Send-Document Request.
  1197.  
  1198.  
  1199.          Document Content
  1200.  
  1201.               The client MUST supply the document data to be processed.
  1202.  
  1203.  
  1204.  
  1205.          Note: Since all Print-Job Request attributes are OPTIONAL, the
  1206.          simplest Print-Job Request consists of just the Document Content and
  1207.          nothing else.  In this case, the Printer creates a new Job object and
  1208.          stores a generated Job name in the "job-name" attribute.  The Job
  1209.          contains a single Document.  The Printer optionally generates a name
  1210.  
  1211.          deBry, Hastings, Herriot, Isaacson, Powell
  1212.                                        [Page 21]
  1213.                                Expires February xx, 1998
  1214.  
  1215.  
  1216.  
  1217.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  1218.  
  1219.  
  1220.          the Document and stores it in the "document-name" attribute.  The
  1221.          Printer assumes that the document data is in a format supported by the
  1222.          Printer.  When the Printer processes the Job, it uses all of its
  1223.          default values for the missing Job Template attributes.
  1224.  
  1225.  
  1226.  
  1227.          3.2.1.2 Print-Job Response
  1228.  
  1229.          The Printer SHALL return to the client the following sets of
  1230.          attributes as part of the Print-Job Response:
  1231.  
  1232.          Operation Attributes
  1233.  
  1234.            "job-uri" (uri):
  1235.               A URI which the client SHALL use for all other operations on this
  1236.               Job.  This is the MANDATORY "job-uri" attribute.
  1237.  
  1238.               ISSUE: Can this just be a "Job Status Attribute"?
  1239.  
  1240.          Job Status Attributes
  1241.  
  1242.            "job-name":
  1243.               This is the Job's "job-name" attribute.
  1244.  
  1245.  
  1246.            "job-state":
  1247.               This is the Job's "job-state" attribute. The value of  this
  1248.               attribute is taken from a "snapshot" of the new Job object
  1249.               sometime after the time the Printer receives the print request
  1250.               until just prior to returning the response to the client.
  1251.  
  1252.            "job-state-reasons":
  1253.               This is the Job's "job-state-reasons" attribute.  The value of
  1254.               this attribute is taken from a "snapshot" of the new Job object
  1255.               sometime after the time the Printer receives the print request
  1256.               until just prior to returning the response to the client.
  1257.  
  1258.            "job-state-message":
  1259.               This is the Job's "job-state-message" attribute.  Since the "job-
  1260.               state-message" attribute is OPTIONAL Job attribute, itis
  1261.               OPTIONALLY included in the response.
  1262.  
  1263.               Note: Since any printer state information which affects a job's
  1264.               state is reflected in the "job-state" and "job-state-reasons"
  1265.               attributes, it is sufficient to return only these attributes and
  1266.               no specific printer status attributes.
  1267.  
  1268.  
  1269.          deBry, Hastings, Herriot, Isaacson, Powell
  1270.                                        [Page 22]
  1271.                                Expires February xx, 1998
  1272.  
  1273.  
  1274.  
  1275.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  1276.  
  1277.  
  1278.          Unsupported Attributes:
  1279.  
  1280.               This is a set of attributes and attribute values that are
  1281.               unsupported.  This output parameter is only returned in the
  1282.               response if the status code indicates that there was such an
  1283.               error.
  1284.  
  1285.  
  1286.          Note: The simplest response consists of the just the job URI ("job-
  1287.          uri") and the Job Status attributes with a status code of "successful-
  1288.          ok".
  1289.  
  1290.          3.2.2 Print-URI Operation
  1291.  
  1292.          This operation is identical to the Print-Job operation (section 3.2.1)
  1293.          except that a client supplies a URI reference to the document data
  1294.          using the "document-uri" (uri)  operation attribute rather than
  1295.          including the document data itself.  It is up to the IPP server to
  1296.          interpret the URI and subsequently "pull" the document from the source
  1297.          referenced by the URI string.
  1298.  
  1299.          3.2.3 Validate-Job Operation
  1300.  
  1301.          This operation is similar to the Print-Job operation (section 3.2.1)
  1302.          except that a client supplies no document data and the Printer
  1303.          allocates no resources (i.e., it does not create a new Job object).
  1304.          This operation is used only to verify capabilities of a printer object
  1305.          against whatever attributes are supplied by the client in the
  1306.          Validate-Job request.  There is no "job-uri" attribute returned in the
  1307.          Validate-Job Response neither are there any Job Status attributes
  1308.          returned in the response.  The client MAY include a "document-uri"
  1309.          attribute in the request.  In this case, the Printer SHOULD only
  1310.          validate the syntax of the URI rather than follow the reference and
  1311.          validate the contents of the reference. If all is well, the Printer
  1312.          returns the status code "successful-ok".  Otherwise, the Printer
  1313.          returns a set of unsupported attributes and the appropriate error
  1314.          status code.
  1315.  
  1316.          3.2.4 Create-Job Operation
  1317.  
  1318.          This operation is similar to the Print-Job operation (section 3.2.1)
  1319.          except that a client supplies no document data or any reference to
  1320.          document data in the Create-Job request.  This operation is followed
  1321.          by one or more Send-Document or Send-URI operations.  If a Printer
  1322.          object supports the Create-Job operation, it MUST also support either
  1323.          the Send-Document operation or the Send-URI operation or both.  Since
  1324.          a client can query the Printer's "operations-supported" attribute, a
  1325.          client SHOULD NOT attempt to use an unsupported optional operation.
  1326.  
  1327.          deBry, Hastings, Herriot, Isaacson, Powell
  1328.                                        [Page 23]
  1329.                                Expires February xx, 1998
  1330.  
  1331.  
  1332.  
  1333.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  1334.  
  1335.  
  1336.          3.2.5 Get-Attributes Operation
  1337.  
  1338.          The Printer Get-Attributes operation allows a client to obtain
  1339.          information from a Printer object. In the operations attributes in a
  1340.          request, the client supplies the set of attribute names and/or
  1341.          attribute group names in which the requester is interested.  In the
  1342.          operation attribute in the response, the Printer returns a
  1343.          corresponding attribute set with the appropriate attribute values
  1344.          filled in.
  1345.  
  1346.          For Printers, the attribute groups include:
  1347.  
  1348.            - 'job-template': all of the Job Template attributes that apply to
  1349.               a Printer object (the last two columns of the table in Section
  1350.               4.2).
  1351.            - 'printer-description': the attributes specified in Section 4.5.
  1352.  
  1353.          There is also the special group 'all' which includes all supported
  1354.          attributes.
  1355.  
  1356.          It is NOT REQUIRED that a Printer support all attributes belonging to
  1357.          a group, however it is MANDATORY that each Printer implementation
  1358.          understand all group names.
  1359.  
  1360.          3.2.5.1 Get-Attributes Request
  1361.  
  1362.          The following sets of attributes are part of the Get-Attributes
  1363.          Request when the request is directed to a Printer object:
  1364.  
  1365.            Operation Attributes"requested-attributes" (1setOf keyword) :
  1366.               An optional set of attribute names (without values) or attribute
  1367.               group names in whose values the requester is interested.  If the
  1368.               client omits this input parameter, the Printer SHALL respond as
  1369.               if this input parameter had been supplied with a value of 'all'.
  1370.  
  1371.            "document-format" (mimeType) :
  1372.               This input parameter is useful for determining the set of
  1373.               supported attribute values which relate to the requested document
  1374.               format.  The Printer SHALL return only (1) those attributes that
  1375.               are supported and (2) the attribute values that are supported for
  1376.               the specified document format.  By specifying the document
  1377.               format, the client can get the Printer to eliminate the
  1378.               attributes and values that are not supported for a specific
  1379.               document format.  For example, a Printer might have multiple
  1380.               interpreters to support both 'application/postscript' (for
  1381.               PostScript) and 'text/plain' (for text) documents.  However, for
  1382.               only one of those interpreters might the Printer be able to
  1383.               support "number-up" with values of 'one', 'two', and 'four'.  For
  1384.  
  1385.          deBry, Hastings, Herriot, Isaacson, Powell
  1386.                                        [Page 24]
  1387.                                Expires February xx, 1998
  1388.  
  1389.  
  1390.  
  1391.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  1392.  
  1393.  
  1394.               the other interpreter it might be able to only support "number-
  1395.               up" with a value of 'one'.
  1396.  
  1397.               If the client omits this input parameter, the Printer SHALL
  1398.               respond as if the input parameter had been set to the value of
  1399.               the Printer's default value "document-format" attribute were
  1400.               supplied.  It is recommended that the client always supply a
  1401.               value for document-format, since the Printer's default value for
  1402.               document-format may be 'langAutomatic', in which case the
  1403.               returned attributes and values are for the union of the document
  1404.               formats that the Printer can automatically sense.
  1405.  
  1406.               ISSUE: What about MIME types.
  1407.  
  1408.          3.2.5.2 Get-Attributes Response
  1409.  
  1410.          The Printer returns the following sets of attributes as part of the
  1411.          Get-Attributes Response:
  1412.  
  1413.          Requested Attributes
  1414.  
  1415.               This is the set of requested attributes and their current values.
  1416.               The Printer ignores (does not respond with) any requested
  1417.               attribute which is not supported.
  1418.  
  1419.  
  1420.          3.2.6 Get-Jobs Operation
  1421.  
  1422.          The Get-Jobs operation allows a client to retrieve the list of Jobs
  1423.          belonging to the target Printer object.  The client may also supply a
  1424.          list of Job attribute names or attribute group names.  These Job
  1425.          attributes will be returned for each Job that is returned.
  1426.  
  1427.          This operation is like Get-Attributes, except that Get-Jobs operation
  1428.          returns attributes from possibly more than one object (see the
  1429.          description of attribute groups in section 3.3.4).
  1430.  
  1431.          3.2.6.1 Get-Jobs Request
  1432.  
  1433.          The client submits the Get-Jobs request to a Printer URI.
  1434.  
  1435.          The following sets of attributes are part of the Get-Jobs Request:
  1436.  
  1437.          Operation Attributes
  1438.  
  1439.            "limit" (integer):
  1440.               This is an integer value that indicates a limit to the number of
  1441.               Jobs returned.  The limit is a "stateless limit" in that if the
  1442.  
  1443.          deBry, Hastings, Herriot, Isaacson, Powell
  1444.                                        [Page 25]
  1445.                                Expires February xx, 1998
  1446.  
  1447.  
  1448.  
  1449.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  1450.  
  1451.  
  1452.               limit is n then only the first n jobs are returned in the Get-
  1453.               Jobs Response; there is no mechanism to allow for the "next" n
  1454.               jobs.  The limit applies across all Job States requested.  For
  1455.               example, if the limit if 50, and there are 75 spooled jobs, only
  1456.               the first 50  jobs are returned;  the other 25 jobs are not
  1457.               returned.
  1458.  
  1459.            "requested-attributes" (1setOf keyword):
  1460.               An optional set of Job attribute names or attribute groups names
  1461.               in whose values the requester is interested.  This set of
  1462.               attributes is returned for each Job that is returned..  The
  1463.               attribute group names are the same as for the Get-Attributes
  1464.               operation for the Job object.  If the client omits this input
  1465.               parameter, the Printer SHALL respond as if this input parameter
  1466.               had been supplied with a value of " 'job-uri'.
  1467.  
  1468.          3.2.6.2 Get-Jobs Response
  1469.  
  1470.          The Printer returns zero or more Job objects each with zero or more
  1471.          attributes.  There is a set of requested attributes for each Job.
  1472.          After each Job, there is a set of requested attributes for each
  1473.          Document in the Job.  For example:
  1474.  
  1475.               Job 1
  1476.                    Document 1A
  1477.               Job 2
  1478.                    Document 2A
  1479.                    Document 2B
  1480.                    Document 2C
  1481.               Job 3
  1482.                    Document 3A
  1483.               Job 4
  1484.               Job 5
  1485.                    Document 5A
  1486.                    Document 5B
  1487.  
  1488.          Jobs are returned in the following order: First all active Jobs (Jobs
  1489.          in the 'pending', 'processing', 'pending-held', and 'processing-
  1490.          stopped' states) are returned oldest to newest (with respect to
  1491.          expected completion time).  Next, all completed Jobs (Jobs in the
  1492.          'completed', 'aborted', or 'canceled' states) newest to oldest (with
  1493.          respect to actual completion time).  Jobs that are in the 'pending-
  1494.          held' state SHALL appear in their position as if they were 'pending'
  1495.          (otherwise, a user might be confused by Jobs that move from 'pending-
  1496.          held' to 'pending' as seeming to jump ahead in the queue). Note:  Jobs
  1497.          are returned in the following order:
  1498.  
  1499.  
  1500.  
  1501.          deBry, Hastings, Herriot, Isaacson, Powell
  1502.                                        [Page 26]
  1503.                                Expires February xx, 1998
  1504.  
  1505.  
  1506.  
  1507.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  1508.  
  1509.  
  1510.            First, all active Jobs (Jobs in the 'pending', 'processing',
  1511.               'pending-held', and 'processing-stopped' states) are returned
  1512.               oldest to newest (with respect to expected completion time),
  1513.               followed by
  1514.            Second, all completed Jobs (Jobs in the 'completed', 'aborted', or
  1515.               'canceled' states) newest to oldest (with respect to actual
  1516.               completion time).  Jobs that are in the 'pending-held' state
  1517.               SHALL appear in their position as if they were 'pending'
  1518.               (otherwise, a user might be confused by Jobs that move from
  1519.               'pending-held' to 'pending' as seeming to jump ahead in the
  1520.               queue).
  1521.  
  1522.  
  1523.          3.3 Job Operations
  1524.  
  1525.          The target of Job operations are Job objects.  Since Job objects are
  1526.          identified with both the Printer's URI and the "job-id" attribute, the
  1527.          following applies rules apply to all Job operations:
  1528.  
  1529.            - The Printer's URI is encoded at the transport level the same as
  1530.               all Printer operations
  1531.            - The "job-id" attribute is included as an operation attribute for
  1532.               all Job operations.
  1533.          3.3.1 Send-Document Operation
  1534.  
  1535.          Once a Job object has been created using a Create-Job operation
  1536.          (returning a "job-uri"), a client directs a Send-Document operation to
  1537.          the newly create Job object.  The operation adds a new Document to the
  1538.          Job object. An entire document MUST be sent in a single Send-Document
  1539.          Request.
  1540.  
  1541.          3.3.1.1 Send-Document Request
  1542.  
  1543.          The client submits the request to a Job URI.
  1544.  
  1545.          The following attribute sets are part of the Send-Document Request:
  1546.  
  1547.          Operation Attributes:
  1548.  
  1549.            "document-name" (name):
  1550.               This OPTIONAL attribute identifies the client supplied Document
  1551.               name.  If this attribute is supplied, its value it used for the
  1552.               "document-name" attribute of the newly created Document object.
  1553.               If this attribute is not supplied by the client, the Printer
  1554.               optionally generates a name to use in the "document-name"
  1555.               attribute of the newly created Document object (see Section ??).
  1556.  
  1557.            "last-document" (boolean):
  1558.  
  1559.          deBry, Hastings, Herriot, Isaacson, Powell
  1560.                                        [Page 27]
  1561.                                Expires February xx, 1998
  1562.  
  1563.  
  1564.  
  1565.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  1566.  
  1567.  
  1568.               This is a boolean flag that is set to 'true' if this is the last
  1569.               Document for the Job.
  1570.          Document Attributes:
  1571.  
  1572.               An optional set of Document Attributes as defined in section 4.4.
  1573.               If "document-format" is not supplied, the Printer assumes that
  1574.               the document data is in a format that this acceptable to the
  1575.               Printer.  If the "document-format" is unknown for a certain
  1576.               document, the client SHALL NOT supply the attribute in the create
  1577.               request or the Send-Document Request.
  1578.  
  1579.          Document Content
  1580.  
  1581.               The client MUST supply the document data to be processed.
  1582.  
  1583.  
  1584.          3.3.1.2 Send-Document Response
  1585.  
  1586.          The following sets of attributes are part of the Send-Document
  1587.          Response:
  1588.  
  1589.          Job Status Attributes
  1590.  
  1591.            "job-name":
  1592.               This is the Job's "job-name" attribute.
  1593.  
  1594.            "job-state":
  1595.               This is the Job's "job-state" attribute. The value of  this
  1596.               attribute is taken from a "snapshot" of the new Job object
  1597.               sometime after the time the Printer receives the print request
  1598.               until just prior to returning the response to the client.
  1599.  
  1600.            "job-state-reasons":
  1601.               This is the Job's "job-state-reasons" attribute.  The value of
  1602.               this attribute is taken from a "snapshot" of the new Job object
  1603.               sometime after the time the Printer receives the print request
  1604.               until just prior to returning the response to the client.
  1605.  
  1606.            "job-state-message":
  1607.               This is the Job's "job-state-message" attribute.  Since the "job-
  1608.               state-message" attribute is OPTIONAL Job attribute, itis
  1609.               OPTIONALLY included in the response.
  1610.  
  1611.          Unsupported Attributes:
  1612.  
  1613.               This is a set of attributes and attribute values that are
  1614.               unsupported.  This output parameter is only returned in the
  1615.  
  1616.  
  1617.          deBry, Hastings, Herriot, Isaacson, Powell
  1618.                                        [Page 28]
  1619.                                Expires February xx, 1998
  1620.  
  1621.  
  1622.  
  1623.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  1624.  
  1625.  
  1626.               response if the status code indicates that there was such an
  1627.               error.
  1628.  
  1629.  
  1630.          3.3.2 Send-URI Operation
  1631.  
  1632.          This operation is identical to the Send-Document operation (see
  1633.          section 3.3.1) except that a client supplies a URI reference
  1634.          ("document-uri" operation attribute) rather than the document data
  1635.          itself.  It is up to the IPP server to interpret the URI and
  1636.          subsequently "pull" the document from the source referenced by the URI
  1637.          string.
  1638.  
  1639.  
  1640.          3.3.3 Cancel Job Operation
  1641.  
  1642.          This operation allows a client to cancel a Print Job any time after
  1643.          the print job has been submitted to the Printer.  Since a Job might
  1644.          already be printing by the time a Cancel-Job is received, some pages
  1645.          may be printed before the job is actually terminated.
  1646.  
  1647.          3.3.3.1 Cancel-Job Request
  1648.  
  1649.          The client submits the request to a Job URI.
  1650.  
  1651.          The following attribute sets are part of the Cancel Job Request:
  1652.  
  1653.          Operation Attributes
  1654.  
  1655.            "message" (text):
  1656.               Optional message to the operator
  1657.  
  1658.          3.3.3.2 Cancel-Job Response
  1659.  
  1660.          There are no attributes in the Cancel Job Response other than the
  1661.          Status Code and optional Status Message.  Once a successful response
  1662.          has been sent, the implementation guarantees that the Job will
  1663.          eventually end up in the 'cancelled' state.  If the implementation is
  1664.          forced to leave the job in the some other state, the "job-state-
  1665.          reasons" SHOULD contain the 'processing-to-stop-point' value which
  1666.          indicates to later queries that although the Job may still be
  1667.          'processing', it will eventually end up in the 'cancelled' state, not
  1668.          the 'completed' state.
  1669.  
  1670.          3.3.4 Get-Attributes Operation
  1671.  
  1672.          The Job Get-Attributes operation allows a client to obtain information
  1673.          from a Job object and it is almost identical to the Get-Attributes
  1674.  
  1675.          deBry, Hastings, Herriot, Isaacson, Powell
  1676.                                        [Page 29]
  1677.                                Expires February xx, 1998
  1678.  
  1679.  
  1680.  
  1681.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  1682.  
  1683.  
  1684.          operation for a Printer object (see section 3.2.5).  The only
  1685.          differences are that the operation is directed at a Job rather than a
  1686.          Printer and there is no "document-format" operation attribute used
  1687.          when querying a Job object.
  1688.  
  1689.          For Jobs, the attribute groups include:
  1690.  
  1691.            - 'job-template': all of the Job Template attributes that apply to
  1692.               a Job object (the first column of the table in Section 4.2).
  1693.            - 'job-description': the attributes specified in Section 4.3.
  1694.  
  1695.          There is also the special group 'all' which includes all supported
  1696.          attributes.
  1697.  
  1698.          There is another special group named 'document-attributes' which
  1699.          consists of the Document Attributes described in section 4.4. If any
  1700.          Document Attributes are requested, the response contains a separate
  1701.          set of Document attributes for each Document in the Job.
  1702.  
  1703.  
  1704.  
  1705.          3.3.4.1 Get-Attributes Request
  1706.  
  1707.          The following attribute sets are part of the Get-Attributes Request
  1708.          when the request is directed to a Job object:
  1709.  
  1710.          Operation Attributes:
  1711.  
  1712.            "requested-attributes" (1setOf keyword) :
  1713.               An optional set of attribute names (without values) or attribute
  1714.               group names in whose values the requester is interested.  If the
  1715.               client omits this attribute, the Printer SHALL respond as if this
  1716.               input parameter had been supplied with a value of 'all'.
  1717.  
  1718.          3.3.4.2 Get-Attributes Response
  1719.  
  1720.          The implementation returns the following response attributes as part
  1721.          of the Get-Attributes Response:
  1722.  
  1723.          Job Attributes:
  1724.  
  1725.               This is the set of requested attributes and their current values.
  1726.               The implementation ignores (does not respond with) any requested
  1727.               attribute which is not supported.
  1728.  
  1729.          Document Attributes:
  1730.  
  1731.  
  1732.  
  1733.          deBry, Hastings, Herriot, Isaacson, Powell
  1734.                                        [Page 30]
  1735.                                Expires February xx, 1998
  1736.  
  1737.  
  1738.  
  1739.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  1740.  
  1741.  
  1742.               This is the set of requested attributes and their current values.
  1743.               The implementation ignores (does not respond with) any requested
  1744.               attribute which is not supported.  One set is returned for each
  1745.               Document in the Job.
  1746.  
  1747.  
  1748.          4. Object Attributes
  1749.  
  1750.          This section describes the attributes with their corresponding
  1751.          syntaxes and values that are part of the IPP model. The sections below
  1752.          show the objects and their associated attributes which are included
  1753.          within the scope of this protocol.  Many of these attributes are
  1754.          derived from other relevant specifications:
  1755.  
  1756.            - ISO/IEC 10175 DPA (Final, June 1996) [5]
  1757.            - RFC 1759 Printer MIB (Proposed Standard, May 1995) [1]
  1758.            - Internet-Draft: Printer MIB (Draft Standard in progress, July
  1759.               1997) [29]
  1760.            - Internet-Draft: Job Monitoring MIB (I-D in progress, June 1997)
  1761.               [27]
  1762.  
  1763.          Each attribute is uniquely identified in this document using a
  1764.          "keyword" (see section 11.2.1).  The keyword is included in the
  1765.          section header describing that attribute. Not only are attributes
  1766.          uniquely identified with keywords, some attributes are defined to have
  1767.          a syntax which is a set of keywords.
  1768.  
  1769.  
  1770.          4.1 Attribute Syntaxes
  1771.  
  1772.          This section defines the basic syntax types that a client and server
  1773.          SHALL be able to handle.  These are considered to be a set of type2
  1774.          enum values.  The values are:
  1775.  
  1776.            '1'     'text':  a sequence of characters, length: 0 to 4095,  where
  1777.                         each character is a member of the ISO 10646 [??] coded
  1778.                         character set using the UTF-8 character encoding scheme
  1779.                         [28]..  This syntax type is used for free form human
  1780.                         readable text intended for human consumption.
  1781.            '2'     'name':  this is the same a "text" except that the sequence
  1782.                         of characters is of length 1 to 255  This syntax type
  1783.                         is used for referencing some object or entity via a
  1784.                         user-friendly string, such as a Printer name, a
  1785.                         document name, a user name, or a host name.
  1786.            '3'     'keyword':  a sequence of characters, length: 1 to 255,
  1787.                         containing only the characters ASCII lowercase letters
  1788.                         ("a" - "z"), ASCII digits ("0" - "9"), hyphen ("-"),
  1789.                         dot ("."), and underscore ("_").  The first character
  1790.  
  1791.          deBry, Hastings, Herriot, Isaacson, Powell
  1792.                                        [Page 31]
  1793.                                Expires February xx, 1998
  1794.  
  1795.  
  1796.  
  1797.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  1798.  
  1799.  
  1800.                         MUST be an ASCII lowercase letter.  This syntax type is
  1801.                         used for enumerating semantic identifiers of entities
  1802.                         in the abstract protocol (specified in this document).
  1803.                         These entities can be attribute names or values of
  1804.                         attributes.  When a keyword is used to represent an
  1805.                         attribute (its name), it MUST be unique within the full
  1806.                         scope of IPP objects and attributes.  When a keyword is
  1807.                         used to represent a value of an attribute, it MUST be
  1808.                         unique just within the scope of that attribute.  That
  1809.                         is, the same keyword can not be used for two different
  1810.                         values within the same attribute to mean two different
  1811.                         semantic ideas.  However, the same keyword can be used
  1812.                         across two or more attributes, representing different
  1813.                         semantic ideas for each attribute.
  1814.            '4'     'enum':  an enumerated integer value that is in the range
  1815.                         from -2**31 to 2**31 - 1.   Each value has an
  1816.                         associated keyword name.  Each attribute (whose syntax
  1817.                         is enum) enumerates the values that are defined for the
  1818.                         attribute.  The enum type is used for attributes for
  1819.                         which there are enum values assigned by other
  1820.                         standards, such as SNMP MIBs.  A number of attribute
  1821.                         enum values in this specification are also used for
  1822.                         corresponding attributes in the IETF Printer MIB [1]
  1823.                         and the Job Monitoring MIB [27].  Enums are not used
  1824.                         for attributes to which the system administrator may
  1825.                         assign values.  Values in the range 2**30 to 2**31 - 1
  1826.                         are reserved for private or experimental use.
  1827.                         Implementers are warned that use of such values may
  1828.                         conflict with other implementations.  Implementers are
  1829.                         encouraged to request registration of enum values
  1830.                         following the procedures in Section 6.
  1831.            '5'     'uri':  a sequence of characters as defined in rfc1738 and
  1832.                         rfc1808.  This syntax type is used for carrying
  1833.                         Universal Resource Identifiers.
  1834.            '6'     'uriScheme':  a sequence of characters representing the URI
  1835.                         Scheme.  These include 'http' for HTTP schemed URIs
  1836.                         (e.g., http://...), and 'ftp' for FTP schemed URIs
  1837.                         (e.g., ftp://...).
  1838.            '7'     'human-language':  a standard identifier for human language
  1839.                         and optionally a country.  The values for this syntax
  1840.                         type are taken from RFC 1766 [26].  Independent of the
  1841.                         human language, all text strings are strings of
  1842.                         characters where each character is a member of the ISO
  1843.                         10646 [??] coded character set.  Text strings are
  1844.                         encoded using the UTF-8 character encoding scheme [28]
  1845.            '8'     'octetString:'  a sequence of octets.  This syntax type is
  1846.                         used for opaque data, such as the document-content.
  1847.  
  1848.  
  1849.          deBry, Hastings, Herriot, Isaacson, Powell
  1850.                                        [Page 32]
  1851.                                Expires February xx, 1998
  1852.  
  1853.  
  1854.  
  1855.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  1856.  
  1857.  
  1858.            '9'     'boolean':  two values of 'true' and 'false'.  This syntax
  1859.                         type is like a keywordSet, but there are only two
  1860.                         values. Note: An application might use a checkbox for
  1861.                         an attribute with this syntax type.
  1862.            '10'    'integer':  an integer value that is in the range from -
  1863.                         2**31 to 2**31 - 1.  Each attribute specifies the range
  1864.                         constraint explicitly if the range is different from
  1865.                         the full range of possible integer values (e.g., 0 -
  1866.                         100 for the "job-priority" attribute).
  1867.            '11'    'dateTime':  a standard, fixed length representation of date
  1868.                         and time as defined in RFC 1514 [32] and RFC 1903 [33].
  1869.            '12'    'resolution':  a special syntax used only for "printer-
  1870.                         resolution" and "printer-resolution-supported"  It
  1871.                         consists of 3 parts:  a cross feed direction resolution
  1872.                         (positive integer value), a feed direction resolution
  1873.                         (positive integer value) and a units value.  All these
  1874.                         are taken from the Printer MIB [1] suggested values.
  1875.            '13'    'mimeType': MIME type values as defined by RFC 2045 [??].
  1876.            '14'    '1setOf  X':  1 or more values of type X.  This syntax type
  1877.                         is used for multi-valued attributes, whose value is a
  1878.                         set of values.  Note:  The syntax type is called
  1879.                         "1setOf" to indicate that set of values SHALL NOT be
  1880.                         empty (a set of size 0).
  1881.  
  1882.            '15'    'rangeOf  X':  a range of value of type X.  This syntax type
  1883.                         is used for ordered values (numeric, lexical, etc.)
  1884.                         such as integers.
  1885.  
  1886.  
  1887.  
  1888.          4.2 Job Template Attributes
  1889.  
  1890.          Job Template attributes describe job processing behavior.  Job
  1891.          Template attributes are OPTIONAL (see section 11.2.3 for a description
  1892.          of support for OPTIONAL attributes).
  1893.  
  1894.          Job Template attributes conform to the following rules.  For each Job
  1895.          Template attribute called "foo":
  1896.  
  1897.            1. The Printer supports a "foo-supported" attribute that describes
  1898.               which job processing behaviors are supported by a Printer.  A
  1899.               client can query the Printer and find out what behaviors are
  1900.               supported by inspecting the values of the "foo-supported"
  1901.               attribute.
  1902.  
  1903.            2. The Printer also supports a default value attribute named "foo".
  1904.               This default value attribute describes what will be done when no
  1905.               other job processing information is supplied by the client
  1906.  
  1907.          deBry, Hastings, Herriot, Isaacson, Powell
  1908.                                        [Page 33]
  1909.                                Expires February xx, 1998
  1910.  
  1911.  
  1912.  
  1913.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  1914.  
  1915.  
  1916.               (either explicitly as an IPP attribute in the create request or
  1917.               implicitly as an embedded instruction within the job data).
  1918.               However, if the Printer supports either the "foo" default value
  1919.               attribute or the "foo-supported" attribute, the Printer MUST
  1920.               support both.
  1921.  
  1922.            3. "foo" is also optionally supplied by the client in a create
  1923.               request.  If "foo" is supplied, the client is specifying that the
  1924.               Printer SHALL apply thecorresponding job processing behavior to
  1925.               this Job while processing the Job.  When "foo" is not supplied,
  1926.               the client is specifying that the Printer apply the default job
  1927.               processing behavior.  Since an administrator could change the
  1928.               default value after the Job has been submitted (while it is
  1929.               waiting to be processed), the default value in affect a job
  1930.               processing time is used for processing a Job with no client
  1931.               supplied attribute.
  1932.  
  1933.          If an application wishes to present an end user with a list of
  1934.          supported values from which to choose, the application SHOULD query
  1935.          the Printer for the supported values.  The application SHOULD also
  1936.          query the default value attributes. If the application then limits
  1937.          selectable values to only those value that are supported, application
  1938.          guarantees that the values supplied by the client in the  create
  1939.          request all fall within the set of supported values at the Printer.
  1940.          When querying the Printer, the client MAY enumerate each attribute by
  1941.          name in the Get-Attributes Request, or the client MAY just name the
  1942.          "job-template" group in order to get the complete set supported
  1943.          attributes (both supported value and default value attributes).
  1944.  
  1945.  
  1946.          The "job-priority" attribute is an example of a Job Template
  1947.          attribute.  It is an integer in the range from 1 to 100.  A client can
  1948.          query the Printer for the "job-priority-supported" attribute and the
  1949.          "job-priority" default value attribute.  The supported attribute
  1950.          contains a range of supported priority values which is equal to or
  1951.          smaller than the maximum range of 1 to 100.  The default value
  1952.          attribute contains the job priority value that will be used for a new
  1953.          job if the client does not supply a value in the create request.  If
  1954.          the client does supply the "job-priority" attribute, the Printer
  1955.          validates the value to make sure that it falls within the range of
  1956.          supported values.  If the client-supplied value is supported, the Job
  1957.          object is created and the "job-priority" attribute is populated with
  1958.          that value.  The Job object, when queried, returns the value supplied
  1959.          by the client.  If the client does not supply a "job-priority" value
  1960.          in the create request, the Job object is created, but no "job-
  1961.          priority" attribute is associated with the Job.  The client queries
  1962.          the Printer's default value "job-priority" value to find out at what
  1963.          priority the job will be processed.
  1964.  
  1965.          deBry, Hastings, Herriot, Isaacson, Powell
  1966.                                        [Page 34]
  1967.                                Expires February xx, 1998
  1968.  
  1969.  
  1970.  
  1971.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  1972.  
  1973.  
  1974.          The table below summarizes the names and relationships for all Job
  1975.          Template attributes. The first column of the table (labled "Job")
  1976.          shows the name and syntax for each Job Template attribute in the Job
  1977.          object. These are the attributes that can optionally be supplied by
  1978.          the client in a create request.   The last two columns (labled
  1979.          "Printer: Default Value" and "Printer: Supported Values") shows the
  1980.          name and syntax for each Job Template attribute in the Printer object
  1981.          (the default value attribute and the supported values attribute).  A
  1982.          "No" in the table means the Printer SHALL NOT support the attribute
  1983.          (the attribute is simply not applicable).    The second part of the
  1984.          table lists Document level attributes.  Document level attributes have
  1985.          the same semantics as Job Template
  1986.  
  1987.  
  1988.  
  1989.  
  1990.  
  1991.  
  1992.  
  1993.  
  1994.  
  1995.  
  1996.  
  1997.  
  1998.  
  1999.  
  2000.  
  2001.  
  2002.  
  2003.  
  2004.  
  2005.  
  2006.  
  2007.  
  2008.  
  2009.  
  2010.  
  2011.  
  2012.  
  2013.  
  2014.  
  2015.  
  2016.  
  2017.  
  2018.  
  2019.  
  2020.  
  2021.  
  2022.  
  2023.          deBry, Hastings, Herriot, Isaacson, Powell
  2024.                                        [Page 35]
  2025.                                Expires February xx, 1998
  2026.  
  2027.  
  2028.  
  2029.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  2030.  
  2031.  
  2032.  
  2033.            +===================+======================+======================+
  2034.            | Job Attribute     |Printer: Default Value|  Printer: Supported  |
  2035.            |                   |   Attribute          |   Values Attribute   |
  2036.            +===================+======================+======================+
  2037.            | job-sheets        | job-sheets           |job-sheets-supported  |
  2038.            | (type4 keyword)   | (type4 keyword)      |(1setOf type4 keyword)|
  2039.            |                   |                      |                      |
  2040.            +-------------------+----------------------+----------------------+
  2041.            | notify-events     | notify-events        | notify-events-       |
  2042.            |(1setOf            |(1setOf type2 keyword)| supported            |
  2043.            | type2 keyword)    |                      |(1setOf type2 keyword)|
  2044.            +-------------------+----------------------+----------------------+
  2045.            |notify-addresses   | No                   |notify-addresses      |
  2046.            |(1setOf uri)       |                      |-supported            |
  2047.            |                   |                      |(1setOf uriScheme)    |
  2048.            +-------------------+----------------------+----------------------+
  2049.            | job-priority      | job-priority         |job-priority-supported|
  2050.            | (integer 1-100)   | (integer 1-100)      |(rangeOf integer      |
  2051.            |                   |                      | 1-100)               |
  2052.            +-------------------+----------------------+----------------------+
  2053.            | job-hold-until    | job-hold-until       | job-hold-until-      |
  2054.            | (type4 keyword)   | (type4 keyword)      | supported            |
  2055.            |                   |                      |(1setOf type4 keyword)|
  2056.            +-------------------+----------------------+----------------------+
  2057.            |multiple-document- |multiple-document-    |multiple-document-    |
  2058.            | handling          | handling             |handling-supported    |
  2059.            | (type2 keyword)   | (type2 keyword)      |(1setOf type2 keyword)|
  2060.            +-------------------+----------------------+----------------------+
  2061.            | media             | media                | media-supported      |
  2062.            | (type4 keyword)   | (type4 keyword)      |(1setOf type4 keyword)|
  2063.            |                   |                      |                      |
  2064.            +-------------------+----------------------+----------------------+
  2065.            | number-up         | number-up            | number-up-supported  |
  2066.            | (type3 keyword)   | (type3 keyword)      |(1setOf type3 keyword)|
  2067.            |                   |                      |                      |
  2068.            +-------------------+----------------------+----------------------+
  2069.            | sides             | sides                | sides-supported      |
  2070.            | (type2 keyword)   | (type2 keyword)      |(1setOf type2 keyword)|
  2071.            |                   |                      |                      |
  2072.            +-------------------+----------------------+----------------------+
  2073.            | printer-resolution| printer-resolution   | printer-resolution-  |
  2074.            | (type2 enum)      | (type2 enum)         | supported            |
  2075.            |                   |                      |(1setOf type2 enum)   |
  2076.            +-------------------+----------------------+----------------------+
  2077.            | print-quality     | print-quality        | print-quality-       |
  2078.            | (type2 enum)      | (type2 enum)         | supported            |
  2079.            |                   |                      |(1setOf type2 enum)   |
  2080.  
  2081.          deBry, Hastings, Herriot, Isaacson, Powell
  2082.                                        [Page 36]
  2083.                                Expires February xx, 1998
  2084.  
  2085.  
  2086.  
  2087.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  2088.  
  2089.  
  2090.            +-------------------+----------------------+----------------------+
  2091.            | finishings        | finishings           | finishings-supported |
  2092.            |(1setOf type2 enum)|(1setOf type2 enum)   |(1setOf type2 enum)   |
  2093.            |                   |                      |                      |
  2094.            +-------------------+----------------------+----------------------+
  2095.            | copies            | copies               | copies-supported     |
  2096.            | (integer: 1 - MAX)| (2setOf integer      | (2rangeOf integer    |
  2097.            |                   |     1 - MAX)         |     1- MAX)          |
  2098.            +-------------------+----------------------+----------------------+
  2099.            | page-range        | No                   | page-range-          |
  2100.            | (rangeOf integer) |                      | supported (boolean)  |
  2101.            |                   |                      |                      |
  2102.            +===================+======================+======================+
  2103.            |                                                                 |
  2104.            | Note: The following attributes are Document attributes, they    |
  2105.            |       have the same semantics a Job Template attributes,        |
  2106.            |       however they apply to each Document object rather than    |
  2107.            |       at the Job level as Job object attributes.                |
  2108.            |                                                                 |
  2109.            +===================+======================+======================+
  2110.            | Document          |Printer: Default Value|  Printer: Supported  |
  2111.            | Attribute         |   Attribute          |   Values Attribute   |
  2112.            +===================+======================+======================+
  2113.            | document-format   | document-format      | document-format-     |
  2114.            | (mimeType)        | (mimeType)           | supported            |
  2115.            |                   |                      |(1setOf mimeType)     |
  2116.            +-------------------+----------------------+----------------------+
  2117.            | compression       | No                   | compression-supported|
  2118.            | (type3 keyword)   |                      |(1setOf type3 keyword)|
  2119.            |                   |                      |                      |
  2120.            +-------------------+----------------------+----------------------+
  2121.            | document-k-octets | No                   |job-k-octets-supported|
  2122.            | (integer)         |                      | (rangeOf integer)    |
  2123.            |                   |                      |                      |
  2124.            +-------------------+----------------------+----------------------+
  2125.            | document-         | No                   | job-impressions-     |
  2126.            | impressions       |                      | supported            |
  2127.            | (integer)         |                      | (rangeOf integer)    |
  2128.            +-------------------+----------------------+----------------------+
  2129.            | document-media-   | No                   | job-media-sheets-    |
  2130.            | sheets            |                      | supported            |
  2131.            | (integer)         |                      | (rangeOf integer)    |
  2132.            +-------------------+----------------------+----------------------+
  2133.  
  2134.          4.2.1 job-sheets (type4 keyword)
  2135.  
  2136.          This attribute determines which if any banner page(s) SHALL be printed
  2137.          with a job.
  2138.  
  2139.          deBry, Hastings, Herriot, Isaacson, Powell
  2140.                                        [Page 37]
  2141.                                Expires February xx, 1998
  2142.  
  2143.  
  2144.  
  2145.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  2146.  
  2147.  
  2148.          Standard values are:
  2149.  
  2150.            'none': no job sheet is printed
  2151.            'standard': one or more site specific standard job sheets are
  2152.               printed, e.g. a single start sheet or both start and end sheet is
  2153.               printed
  2154.  
  2155.          To force no job sheets, the system administrator SHALL set the
  2156.          supported value to only 'none'.  To force the use of banner pages, the
  2157.          supported values SHALL not include 'none'.  In this case, if a client
  2158.          requests 'none', the create request is rejected.
  2159.  
  2160.          Note: The effect of this attribute on jobs with multiple documents is
  2161.          controlled by the "multiple-document-handling" job attribute (section
  2162.          4.2.6).
  2163.  
  2164.          4.2.2 notify-events (1setOf type2 keyword)
  2165.  
  2166.          This attribute specifies the events for which the end user desires
  2167.          some sort of notification.  The "notify-addresses" attribute is used
  2168.          to describe the destination addresses for these events.
  2169.  
  2170.          Standard values are:
  2171.  
  2172.            'none': the Printer SHALL not notify.
  2173.            'all': the Printer SHALL notify when any of the events occur.
  2174.            'job-completion':  the Printer SHALL notify when the job containing
  2175.               this value completes (i.e., enters the 'completed', 'canceled',
  2176.               or 'aborted' state) with or without errors.
  2177.            'job-problems':  the Printer SHALL notify when this job has a
  2178.               problem (i.e., when the job leaves the 'processing' state and
  2179.               enters the 'processing-stopped' state).
  2180.            'job-started-processing':  the Printer SHALL notify when the
  2181.               Printer starts processing the Job (i.e., when the job leaves the
  2182.               'pending' state and enters the 'processing' state).
  2183.            'printer-problems': the Printer SHALL notify when this job is
  2184.               affected by a Printer problem.  This happens when the printer
  2185.               enters the 'stopped' state while this job is in the 'pending',
  2186.               'pending-held', 'processing', or 'processing-stopped' state.
  2187.  
  2188.            ISSUE: Need to add generic alerts from the Printer MIB.
  2189.  
  2190.          4.2.2.1 Event Notification Content
  2191.  
  2192.          The content of each event notification is:
  2193.  
  2194.  
  2195.  
  2196.  
  2197.          deBry, Hastings, Herriot, Isaacson, Powell
  2198.                                        [Page 38]
  2199.                                Expires February xx, 1998
  2200.  
  2201.  
  2202.  
  2203.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  2204.  
  2205.  
  2206.               *time: <US ASCII string representing the absolute time
  2207.                            of the event>CRLF
  2208.               event: <keyword for the event>CRLF
  2209.               printer-uri: <Printer's URI>CRLF
  2210.               printer-state: <keyword for printer state>CRLF
  2211.               *printer-state-reason: <set of comma separated keywords>CRLF
  2212.               *job-id: <US ASCII string representing the Job Id>CRLF
  2213.               *job-state: <keyword for job state>CRLF
  2214.               *job-state-reason: <set of comma separated keywords>CRLF
  2215.               *message: <US ASCII string>CRLF
  2216.  
  2217.          The contents of the event notification are intended for machine
  2218.          consumption more than human consumption, however the use of US ASCII
  2219.          enables humans to retrieve some semantics from the event report
  2220.          itself.  Items above marked with and asterisk ('*') are optional.  If
  2221.          the implementation does not support any notion of time, then field is
  2222.          not present in the notification body.  If the event is Printer
  2223.          related, only the Printer related fields are included.  If the event
  2224.          is Job related, all of the Job fields SHOULD be included.
  2225.  
  2226.          4.2.3 notify-addresses (1setOf uri)
  2227.  
  2228.          This attribute describes both where (the address) and how (the
  2229.          mechanism for delivery ) events are to be delivered. The Printer SHALL
  2230.          use this attribute as the set of addresses and methods for sending
  2231.          messages when an event occurs that the end user (job submitter) has
  2232.          registered an interest in.
  2233.  
  2234.          Standard uriScheme values are:
  2235.  
  2236.            'mailto': the Printer sends a  text message via email to the
  2237.               specified email address
  2238.            'http': the Printer sends an HTML formatted message via an HTTP
  2239.               POST method to the specified URI
  2240.            'ftp': the Printer sends a text message via an FTP `append' command
  2241.            to the specified remote file.
  2242.  
  2243.          4.2.4 job-priority (integer(1:100))
  2244.  
  2245.          This attribute specifies a priority for scheduling the Job. A higher
  2246.          value specifies a higher priority. The value 1 indicates the lowest
  2247.          possible priority. The value 100 indicates the highest possible
  2248.          priority.  Among those jobs that are ready to print, a Printer SHALL
  2249.          print all jobs with a priority value of n before printing those with a
  2250.          priority value of n-1 for all n.  The mapping of vendor-defined
  2251.          priority over this range is implementation-specific.
  2252.  
  2253.  
  2254.  
  2255.          deBry, Hastings, Herriot, Isaacson, Powell
  2256.                                        [Page 39]
  2257.                                Expires February xx, 1998
  2258.  
  2259.  
  2260.  
  2261.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  2262.  
  2263.  
  2264.          4.2.5 job-hold-until (type4 keyword)
  2265.  
  2266.          This job attribute specifies the named time period during which the
  2267.          Job print job SHALL become a candidate for printing.
  2268.  
  2269.          Standard values for named time periods are:
  2270.  
  2271.            'no-hold': immediately, if there are not other reasons to hold the
  2272.               job.
  2273.            'day-time': during the day.
  2274.            'evening': evening
  2275.            'night': night
  2276.            'weekend': weekend
  2277.            'second-shift': second-shift
  2278.            'third-shift': third-shift (after midnight)
  2279.  
  2280.  
  2281.          An administrator SHALL associate allowable print times with a named
  2282.          time period (by means outside IPP 1.0).  An administrator is
  2283.          encouraged to pick names that suggest the type of time period.
  2284.  
  2285.          If the value of this attribute specifies a time period that is in the
  2286.          future, the Printer SHALL add the 'job-hold-until-specified' value to
  2287.          the job's "job-state-reasons" attribute, move the job to the 'pending-
  2288.          held' state, and SHALL NOT schedule the job for printing until the
  2289.          specified time-period arrives.  When the specified time period
  2290.          arrives, the Printer SHALL remove the 'job-hold-until-specified' value
  2291.          from the job's "job-state-reason" attribute and, if no other job
  2292.          reasons that keep it in the 'pending-held' state remain, the Printer
  2293.          SHALL consider the job as a candidate for processing by moving the job
  2294.          to the 'pending' state.
  2295.  
  2296.          If this job attribute value is the named value 'no-hold', or specified
  2297.          time period is in effect has already started , the job SHALL be a
  2298.          candidate for processing immediately.
  2299.  
  2300.          4.2.6 multiple-document-handling (type2 keyword)
  2301.  
  2302.          This job attribute is relevant only if a job consists of two or more
  2303.          documents. It controls finishing operations, and job-sheet placement.
  2304.          When the copies attribute exceeds 1, it also controls the order of
  2305.          documents..
  2306.  
  2307.          Standard values are:
  2308.  
  2309.            'single-document': If the files for the job are a and b, then files
  2310.               a and b SHALL be treated as a single document for finishing
  2311.               operations. Also, there SHALL be no slip sheets between files a
  2312.  
  2313.          deBry, Hastings, Herriot, Isaacson, Powell
  2314.                                        [Page 40]
  2315.                                Expires February xx, 1998
  2316.  
  2317.  
  2318.  
  2319.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  2320.  
  2321.  
  2322.               and b and the Printer SHALL NOT force each document to start on a
  2323.               new page or new media sheet.  If more than one copy is made, the
  2324.               ordering SHALL be a, b, a, b, ...., and the Printer SHALL force
  2325.               each copy to start on a new sheet.
  2326.            'separate-documents-uncollated-copies': If the files for the job
  2327.               are a and b, then each file SHALL be treated as a single document
  2328.               for finishing operations. Also, a client may specify that a slip
  2329.               sheet be placed between files a and b and the Printer shall force
  2330.               each document copy to start on a new sheet.  If more than one
  2331.               copy is made, the ordering SHALL be a, a, b, b, ....
  2332.            'separate-documents-collated-copies': If the files for the job are
  2333.               a and b, then each file SHALL be treated as a single document for
  2334.               finishing operations. Also, a client may specify that a slip
  2335.               sheet be placed between files a and b. If more than one copy is
  2336.               made, the ordering SHALL be a, b, a, b, ...., and the Printer
  2337.               shall force each document copy to start on a new sheet
  2338.  
  2339.  
  2340.          4.2.7 media (type4 keyword)
  2341.  
  2342.          This job attribute identifies the medium that the Printer uses for all
  2343.          pages of the Job.
  2344.  
  2345.          The values for "media" include medium-names, medium-sizes, input-trays
  2346.          and electronic forms so that one attribute specifies the media. If a
  2347.          printer allows a client to specify a medium name as the value of this
  2348.          attribute, such a medium name implicitly selects an input-tray that
  2349.          contains the specified medium.  If a printer allows a client to
  2350.          specify a medium size as the value of this attribute, such a medium
  2351.          size implicitly selects a medium name that in turn implicitly selects
  2352.          an input-tray that contains the medium with the specified size.  If a
  2353.          printer allows a client to specify an input-tray as the value of this
  2354.          attribute, such an input-tray implicitly selects the medium that is in
  2355.          that input-tray at the time the job prints. This case includes manual-
  2356.          feed input-trays.  If a printer allows a client to specify an
  2357.          electronic form as the value of this attribute, such an electronic
  2358.          form implicitly selects a medium-name that in turn implicitly selects
  2359.          an input-tray that contains the medium specified by the electronic
  2360.          form. The electronic form also implicitly selects an image that the
  2361.          Printer SHALL merge with the data from the document as its prints each
  2362.          page.
  2363.  
  2364.          ISSUE: What should we do about "media-ready"?
  2365.  
  2366.          Standard values are (taken from ISO DPA and the Printer MIB) and are
  2367.          listed in section 14.
  2368.  
  2369.  
  2370.  
  2371.          deBry, Hastings, Herriot, Isaacson, Powell
  2372.                                        [Page 41]
  2373.                                Expires February xx, 1998
  2374.  
  2375.  
  2376.  
  2377.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  2378.  
  2379.  
  2380.          4.2.8 number-up (type3 keyword)
  2381.  
  2382.          This job attribute specifies the number of source page-images to
  2383.          impose upon a single side of an instance of a selected medium.
  2384.  
  2385.          Standard values are:
  2386.  
  2387.            'none': The Printer SHALL not include any embellishments and SHALL
  2388.               place one logical page on a single side of an instance of the
  2389.               selected medium without any translation, scaling, or rotation.
  2390.            'one': The Printer SHALL place one logical page on a single side of
  2391.               an instance of the selected medium (MAY add some sort of
  2392.               translation, scaling, or rotation).
  2393.            'two': The Printer SHALL place two logical pages on a single side
  2394.               of an instance of the selected medium (MAY add some sort of
  2395.               translation, scaling, or rotation).
  2396.            'four': The Printer SHALL place four logical pages on a single side
  2397.               of an instance of the selected medium (MAY add some sort of
  2398.               translation, scaling, or rotation).
  2399.  
  2400.          This attribute primarily controls the translation, scaling and
  2401.          rotation of page images, but a site may choose to add embellishments,
  2402.          such as borders to each logical page.
  2403.  
  2404.          4.2.9 sides (type2 keyword)
  2405.  
  2406.          This attribute specifies how source page-images are to be imposed upon
  2407.          the sides of an instance of a selected medium.
  2408.  
  2409.          The standard values are:
  2410.  
  2411.            'one-sided': imposes each consecutive source page-image upon the
  2412.               same side of consecutive media sheets.
  2413.            'two-sided-long-edge': imposes each consecutive pair of source
  2414.               page-image upon front and back sides of consecutive media sheets,
  2415.               such that the orientation of each pair of source-pages on the
  2416.               medium would be correct for the reader as if for binding on the
  2417.               long edge.  This imposition is sometimes called 'duplex'.
  2418.            'two-sided-short-edge': imposes each consecutive pair of source
  2419.               page-image upon front and back sides of consecutive media sheets,
  2420.               such that the orientation of each pair of source-pages on the
  2421.               medium would be correct for the reader as if for binding on the
  2422.               short edge.  This imposition is sometimes called 'tumble' or
  2423.               'head-to-toe'.
  2424.  
  2425.          'two-sided-long-edge', 'two-sided-short-edge', 'tumble', and 'duplex'
  2426.          all work the same for portrait or landscape.  However 'head-to-toe' is
  2427.          'tumble' in portrait but 'duplex' in landscape.  'head-to-head' also
  2428.  
  2429.          deBry, Hastings, Herriot, Isaacson, Powell
  2430.                                        [Page 42]
  2431.                                Expires February xx, 1998
  2432.  
  2433.  
  2434.  
  2435.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  2436.  
  2437.  
  2438.          switches between 'duplex' and 'tumble' when using portrait and
  2439.          landscape modes.
  2440.  
  2441.          4.2.10 printer-resolution (resoultion)
  2442.  
  2443.          This attribute identifies the resolution that Printer uses for a
  2444.          certain Job.
  2445.  
  2446.            The value is a special type consisting of a pair of integers and a
  2447.               value which specifies the units for the two integers. The three
  2448.               values are the same as those specified in the draft-ietf-
  2449.               printmib-mib-info-02.txt as prtMarkerAddressabilityFeedDir (the
  2450.               resolution in the feed direction),
  2451.               prtMarkerAddressabilityXFeedDir (the resolution in the cross feed
  2452.               direction), and prtMarkerAddressabilityUnit (the units of the
  2453.               first two values, namely dots per inch and dots per centimeter).
  2454.          4.2.11 print-quality (type2 enum)
  2455.  
  2456.          This attribute specifies the print quality that the Printer uses for a
  2457.          certain Job.
  2458.  
  2459.          The standard values are:
  2460.  
  2461.            '3'     'draft': lowest quality available on the printer
  2462.            '4'     'normal': normal or intermediate quality on the printer
  2463.            '5'     'high': highest quality available on the printer
  2464.  
  2465.  
  2466.          4.2.12 finishings (1setOf type2 enum)
  2467.  
  2468.          This attribute identifies the finishing operations that the Printer
  2469.          uses for each copy of each printed document in a particular Job. For
  2470.          Jobs with multiple documents, the "multiple-document-handling"
  2471.          attribute determines what constitutes a _copy_ for purposes of
  2472.          finishing.
  2473.  
  2474.          Standard values are:
  2475.  
  2476.            '3'     'none':  Perform no finishing
  2477.            '4'     'staple':  Bind the document(s) with one or more staples.
  2478.                         The exact number and placement of the staples is site-
  2479.                         defined.
  2480.            '5'     'staple-top-left':  Place one or more staples on the top
  2481.                         left corner of the document(s).
  2482.            '6'     'staple-bottom-left':  Place one or more staples on the
  2483.                         bottom left corner of the document(s).
  2484.            '7'     'staple-top-right':  Place one or more staples on the top
  2485.                         right corner of the document(s).
  2486.  
  2487.          deBry, Hastings, Herriot, Isaacson, Powell
  2488.                                        [Page 43]
  2489.                                Expires February xx, 1998
  2490.  
  2491.  
  2492.  
  2493.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  2494.  
  2495.  
  2496.            '8'     'staple-bottom-right':  Place one or more staples on the
  2497.                         bottom right corner of the document(s).
  2498.            '9'     'saddle-stitch':  Bind the document(s) with one or more
  2499.                         staples (wire stitches) along the middle fold.  The
  2500.                         exact number and placement of the stitches is site-
  2501.                         defined.
  2502.            '10'    'edge-stitch':  Bind the document(s) with one or more
  2503.                         staples (wire stitches) along one edge.  The exact
  2504.                         number and placement of the staples is site-defined.
  2505.            '11'    'punch':  This value indicates that holes are required in
  2506.                         the finished document. The exact number and placement
  2507.                         of the holes is site-defined  The punch specification
  2508.                         MAY be satisfied (in a site- and implementation-
  2509.                         specific manner) either by drilling/punching, or by
  2510.                         substituting pre-drilled media.
  2511.            '12'    'cover':  This value is specified when it is desired to
  2512.                         select a non-printed (or pre-printed) cover for the
  2513.                         document. This does not supplant the specification of a
  2514.                         printed cover (on cover stock medium) by the document
  2515.                         itself.
  2516.            '13'    'bind':  This value indicates that a binding is to be
  2517.                         applied to the document; the type and placement of the
  2518.                         binding is site-defined."
  2519.  
  2520.          4.2.13 copies (integer(1:2**31 - 1))
  2521.  
  2522.          This attribute specifies the number of copies to be printed.  On many
  2523.          devices the supported number of collated copies will be limited by the
  2524.          number of  physical output bins on the device, and may be different
  2525.          from the number of uncollated copies which can be supported. Therefore
  2526.          the copies-supported attribute specifies a set of ranges; the first
  2527.          defines the supported range of values for uncollated copies, and the
  2528.          second the supported range of values for collated printing.  The set
  2529.          of default values for copies specify the default number of uncollated
  2530.          copies followed by the default number of collated copies.
  2531.  
  2532.          The effect of this attribute is controlled by the "multiple-documents-
  2533.          handling" attribute (section 4.2.6).This attribute specifies the
  2534.          number of copies of the job to be printed.
  2535.  
  2536.          4.2.14 page-range (rangeOf integer)
  2537.  
  2538.          This attribute specifies the pages of a document which are to be
  2539.          printed. In most cases, the exact pages to be printed will be
  2540.          generated by a device driver and this attribute would not be required.
  2541.          However, when printing an archived document which has already been
  2542.          formatted, the end user may elect to print just a subset of the pages
  2543.          contained in the document. In this case, if page-range = n.m is
  2544.  
  2545.          deBry, Hastings, Herriot, Isaacson, Powell
  2546.                                        [Page 44]
  2547.                                Expires February xx, 1998
  2548.  
  2549.  
  2550.  
  2551.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  2552.  
  2553.  
  2554.          specified, the first page to be printed will be page n. All subsequent
  2555.          pages of the document will be printed through and including page m.
  2556.  
  2557.          Page-range supported is a boolean value indicating whether or not the
  2558.          printer is capable of supporting the printing of page ranges.  This
  2559.          capability may differ from one PDL to another. The page-range default
  2560.          value is always zero (0) and indicates that all pages of the document
  2561.          will be printed if a page-range is not specified.
  2562.  
  2563.          4.2.15 orientation (type2 enum)
  2564.  
  2565.          This attribute specifies the orientation of the content on the output
  2566.          pages to be printed.  In most cases, the orientation of the content is
  2567.          specified within the document format generated by the device driver at
  2568.          print time. However, some document formats (such as "text") do not
  2569.          support the notion of page orientation, and it is possible to bind the
  2570.          orientation after the document content has been generated.  This
  2571.          attribute provides an end user with the means to specify orientation
  2572.          for such documents.
  2573.  
  2574.          Standard values are:
  2575.  
  2576.            '1'     'portrait': The content will be printed across the short
  2577.                         edge of the media.
  2578.            '2'     'landscape': The content will be printed across the long
  2579.                         edge of the media.
  2580.  
  2581.          4.2.16 document-format (mimeType)
  2582.  
  2583.          This attribute defines the document format of the data to be printed.
  2584.          The standard values for this attribute are MIME types.  Since the
  2585.          complete list is rather long, the full enumeration of standard values
  2586.          is found in section 13 APPENDIX C: "document-format" values.
  2587.  
  2588.          If the "document-format" is unknown for a certain document, the client
  2589.          does not supply the attribute in the create request or the Send-
  2590.          Document Request.
  2591.  
  2592.          4.2.17 compression (type3 keyword)
  2593.  
  2594.          This attribute identifies compression algorithms used for compressed
  2595.          document data (not the operation data).
  2596.  
  2597.          Standard values are :
  2598.  
  2599.            'none': no compression is used.
  2600.            'zip':ZIP (inflate/deflate) compression technology
  2601.            `gzip' GNU zip compression technology described in RFC 1952.
  2602.  
  2603.          deBry, Hastings, Herriot, Isaacson, Powell
  2604.                                        [Page 45]
  2605.                                Expires February xx, 1998
  2606.  
  2607.  
  2608.  
  2609.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  2610.  
  2611.  
  2612.            'compress': UNIX compression technology
  2613.  
  2614.            ISSUE: Look what HTTP defines.
  2615.  
  2616.  
  2617.          4.2.18 job-k-octets (integer(0:2**31 - 1))
  2618.  
  2619.          This attribute specifies the total size of the job in K octets, i.e.,
  2620.          in units of 1024 octets.  The value SHALL be rounded up, so that a job
  2621.          between 1 and 1024 octets SHALL be indicated as being 1, 1025 to 2048
  2622.          SHALL be 2, etc.
  2623.  
  2624.          Note:  This attribute and the following two attributes ("job-
  2625.          impressions" and "job-media-sheets") are not intended to be counters;
  2626.          they are intended to be useful routing and scheduling information if
  2627.          known. For these three attributes,  the Printer may try to compute the
  2628.          value if it is not supplied in the create request.  Even if the client
  2629.          does supply a value for this attribute in the create request, the
  2630.          Printer may choose to change the value if the Printer is able to
  2631.          compute a value which is more accurate than the client supplied value.
  2632.          The Printer may be able to determine the correct value for this
  2633.          attribute either right at job submission time or at any later point in
  2634.          time.  If the value of this attribute is unknown, the Printer may
  2635.          choose to respond with a value of '-2' (which signifies "unknown")
  2636.          rather than choose to not support the attribute at all.
  2637.  
  2638.          4.2.19 job-impressions (integer(0:2**31 - 1))
  2639.  
  2640.          This attribute specifies the total number of impressions for this job.
  2641.  
  2642.          4.2.20 job-media-sheets (integer(0:2**31 - 1))
  2643.  
  2644.          This attribute specifies the total number of media sheets used by this
  2645.          job.
  2646.  
  2647.  
  2648.          4.3 Job Description Attributes
  2649.  
  2650.          The attributes in this section form the attribute group called "job-
  2651.          description".  The following table summarizes these attributes.  The
  2652.          third column indicates whether the attribute is a MANDATORY attribute.
  2653.          If it is not MANDATORY, then it is OPTIONAL.
  2654.  
  2655.  
  2656.  
  2657.  
  2658.  
  2659.  
  2660.  
  2661.          deBry, Hastings, Herriot, Isaacson, Powell
  2662.                                        [Page 46]
  2663.                                Expires February xx, 1998
  2664.  
  2665.  
  2666.  
  2667.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  2668.  
  2669.  
  2670.          +----------------------------+----------------------+----------------+
  2671.          |      Attribute             |     Syntax           |   MANDATORY?   |
  2672.          +----------------------------+----------------------+----------------+
  2673.          | job-uri                    | uri                  |  MANDATORY     |
  2674.          +----------------------------+----------------------+----------------+
  2675.          | job-id                     | 32bit unsigned       |  MANDATORY     |
  2676.          |   (this or job-uri)        |                      |                |
  2677.          +----------------------------+----------------------+----------------+
  2678.          | job-more-info              | uri                  |                |
  2679.          +----------------------------+----------------------+----------------+
  2680.          | job-name                   | name                 |  MANDATORY     |
  2681.          +----------------------------+----------------------+----------------+
  2682.          | job-originating-user       | name                 |  MANDATORY     |
  2683.          +----------------------------+----------------------+----------------+
  2684.          | job-originating-host       | name                 |                |
  2685.          +----------------------------+----------------------+----------------+
  2686.          | user-human-language        | human-language       |                |
  2687.          +----------------------------+----------------------+----------------+
  2688.          | job-state                  | type1 enum           |  MANDATORY     |
  2689.          +----------------------------+----------------------+----------------+
  2690.          | job-state-reasons          | 1setOf type2 keyword |                |
  2691.          +----------------------------+----------------------+----------------+
  2692.          | job-state-message          | text                 |                |
  2693.          +----------------------------+----------------------+----------------+
  2694.          | output-device-assigned     | name                 |                |
  2695.          +----------------------------+----------------------+----------------+
  2696.          | time-at-pending            | seconds              |                |
  2697.          +----------------------------+----------------------+----------------+
  2698.          | time-at-processing         | seconds              |                |
  2699.          +----------------------------+----------------------+----------------+
  2700.          | time-at-completed          | seconds              |                |
  2701.          +----------------------------+----------------------+----------------+
  2702.          | number-of-intervening-jobs | integer              |                |
  2703.          +----------------------------+----------------------+----------------+
  2704.          | job-message-from-operator  | text                 |                |
  2705.          +----------------------------+----------------------+----------------+
  2706.          | job-k-octets-processed     | integer              |                |
  2707.          +----------------------------+----------------------+----------------+
  2708.          | job-impressions-completed  | integer              |                |
  2709.          +----------------------------+----------------------+----------------+
  2710.          | job-media-sheets-completed | integer              |                |
  2711.          +----------------------------+----------------------+----------------+
  2712.  
  2713.          4.3.1 job-uri (uri)
  2714.  
  2715.          This attribute contains the URI for the job.  The Printer, on receipt
  2716.          of a new job, generates a URI which identifies the new Job on that
  2717.          Printer. The Printer returns the value of the "job-uri" attribute as
  2718.  
  2719.          deBry, Hastings, Herriot, Isaacson, Powell
  2720.                                        [Page 47]
  2721.                                Expires February xx, 1998
  2722.  
  2723.  
  2724.  
  2725.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  2726.  
  2727.  
  2728.          part of the response to a create request.   The precise format of a
  2729.          job URI is implementation dependent.
  2730.  
  2731.          4.3.2 job-id (32bit unsigned integer)
  2732.  
  2733.          This attribute contains the ID of the job.  The Printer, on receipt of
  2734.          a new job, generates an ID which identifies the new Job on that
  2735.          Printer. The Printer returns the value of the "job-id" attribute as
  2736.          part of the response to a create request.
  2737.  
  2738.          ISSUE: job-uri or job-id?
  2739.  
  2740.          4.3.3 job-uri-user (uri)
  2741.  
  2742.          Similar to "job-uri", this attribute contains the URI referencing an
  2743.          HTML page containing information about the Job.
  2744.  
  2745.          4.3.4 job-name (name)
  2746.  
  2747.          This attribute is the name of the job.  It is a name that is more user
  2748.          friendly than the "job-uri" attribute value.  It does not need to be
  2749.          unique.  The Job's "job-name" attribute is set to the value supplied
  2750.          by the client in the "job-name" operation attribute in the create
  2751.          request.   If, however, if it is not supplied by the client in the
  2752.          create request, the Printer, on creation of the Job, SHALL generate a
  2753.          name.  The Printer can generate the name using any method convenient
  2754.          to the application.  The Printer MAY choose to use the value of the
  2755.          "document-name" attribute of the first (or only) Document (or any
  2756.          other piece of Job specific information) as a basis for generating a
  2757.          Job name.
  2758.  
  2759.          ISSUE: There has been some suggestion to add a "job-user-label".  The
  2760.          idea for this attribute was to allow a client to supply some
  2761.          meaningful label to be applied to the Job independent of the Job URI
  2762.          or the Job ID.  However, after reviewing the semantics of "job-name",
  2763.          the two sound identical.
  2764.  
  2765.          4.3.5 job-originating-user (name)
  2766.  
  2767.          This attribute specifies the user name of the person submitting the
  2768.          print job.  The Printer sets this attribute to the most authenticated
  2769.          name that it can obtain from the protocol over which the operation was
  2770.          received from the client.
  2771.  
  2772.          4.3.6 job-originating-host (name)
  2773.  
  2774.          This attribute identifies the originating host of the job. The Printer
  2775.          sets this attribute to the most authenticated host name it can obtain
  2776.  
  2777.          deBry, Hastings, Herriot, Isaacson, Powell
  2778.                                        [Page 48]
  2779.                                Expires February xx, 1998
  2780.  
  2781.  
  2782.  
  2783.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  2784.  
  2785.  
  2786.          from the protocol over which the operation was received from  the
  2787.          client.
  2788.  
  2789.          4.3.7 user-human-language (human-language)
  2790.  
  2791.          This attribute identifies the human language and optionally the
  2792.          country of the end user.  The Printer sets this attribute to the most
  2793.          reliable value it can obtain from the protocol over which the Print
  2794.          operation was received from the client.
  2795.  
  2796.          The Printer uses this attribute to determine the human language it
  2797.          SHOULD use for translating ALL text strings that it sends back to the
  2798.          end user.  The Printer has a "human-languages-supported" supported
  2799.          values attribute and a "human-language" default value attribute.
  2800.  
  2801.          ISSUE: This should be a Job Template attribute.
  2802.  
  2803.          4.3.8 job-state (type1 enum)
  2804.  
  2805.          This attribute identifies the current state of the job.  Even though
  2806.          the IPP protocol defines eight values for job states, implementations
  2807.          only need to support those states which are appropriate for the
  2808.          particular implementation.  In other words, a Printer supports only
  2809.          those job states implemented by the output device and available to the
  2810.          Printer object implementation.
  2811.  
  2812.          Standard values are:
  2813.  
  2814.            'unknown'(2):  The job state is not known, or its state is
  2815.               indeterminate.
  2816.            'pending'(3):  The job is a candidate to start processing, but is
  2817.               not yet processing.
  2818.            'pending-held'(4):  The job is not a candidate for processing for
  2819.               any number of reasons but will return to the 'pending' state as
  2820.               soon as the reasons are no longer present.  The job's "job-state-
  2821.               reason" attribute SHALL indicate why the job is no longer a
  2822.               candidate for processing.
  2823.            'processing'(5):  Either:
  2824.               1.  the job is using, or is attempting to use, one or more
  2825.                 document transforms which include (1) purely software
  2826.                 processes that are interpreting a PDL, and (2) hardware
  2827.                 devices that are interpreting a PDL, making marks on a medium,
  2828.                 and/or performing finishing, such as stapling OR
  2829.               2.  the server has made the job ready for printing, but the
  2830.                 output device is not yet printing it, either because the job
  2831.                 hasn't reached the output device or because the job is queued
  2832.                 in the output device or some other spooler, awaiting the
  2833.                 output device to print it.
  2834.  
  2835.          deBry, Hastings, Herriot, Isaacson, Powell
  2836.                                        [Page 49]
  2837.                                Expires February xx, 1998
  2838.  
  2839.  
  2840.  
  2841.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  2842.  
  2843.  
  2844.  
  2845.  
  2846.          ISSUE:  Suggested change to (but this must be synchronized with JMP)
  2847.  
  2848.            'processing'(5): One of:
  2849.               1. the job is using, or is attempting to use hardware devices
  2850.                 that are making marks on a medium, and/or performing
  2851.                 finishing, such as stapling OR
  2852.               2. the job is using, or is attempting to use software processes
  2853.                 that are analyzing or interpreting a PDL without making marks
  2854.                 on a medium.
  2855.               3. the server has made the job ready for printing, but the output
  2856.                 device is not yet printing it, either because the job hasn't
  2857.                 reached the output device or because the job is queued in the
  2858.                 output device or some other spooler, awaiting the output
  2859.                 device to print it.
  2860.  
  2861.               When the job is in the 'processing' state, the entire job state
  2862.               includes the detailed status represented in the printer's
  2863.               "printer-state", "printer-state-reasons", and "printer-state-
  2864.               message" attributes.
  2865.               Implementations MAY include additional values in the job's "job-
  2866.               state-reasons" attribute to indicate the progress of the job,
  2867.               such as adding the 'job-printing' value to indicate when the
  2868.               output device is actually making marks on paper.  Most
  2869.               implementations won't bother with this nuance.
  2870.  
  2871.            'processing-stopped'(6):  The job has stopped while processing for
  2872.               any number of reasons and will return to the 'processing' state
  2873.               as soon as the reasons are no longer present.
  2874.               The job's "job-state-reason" attribute MAY indicate why the job
  2875.               has stopped processing.  For example, if the output device is
  2876.               stopped, the 'printer-stopped' value MAY be included in the job's
  2877.               "job-state-reasons" attribute.
  2878.               NOTE - When an output device is stopped, the device usually
  2879.               indicates its condition in human readable form locally at the
  2880.               device.  A client can obtain more complete device status remotely
  2881.               by querying the printer's "printer-state", "printer-state-
  2882.               reasons" and "printer-state-message" attributes.
  2883.            'canceled'(7):  The job has been canceled by a Cancel-Job operation
  2884.               and is either (1) in the process of terminating or (2) has
  2885.               completed terminating.  The job's "job-state-reasons" attribute
  2886.               SHOULD contain either the 'canceled-by-user' or 'canceled-by-
  2887.               operator' value.
  2888.            'aborted'(8):  The job has been aborted by the system, usually
  2889.               while the job was in the 'processing' or 'processing-stopped'
  2890.               state.
  2891.  
  2892.  
  2893.          deBry, Hastings, Herriot, Isaacson, Powell
  2894.                                        [Page 50]
  2895.                                Expires February xx, 1998
  2896.  
  2897.  
  2898.  
  2899.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  2900.  
  2901.  
  2902.            'completed'(9):  The job has completed successfully or with
  2903.               warnings or errors after processing and all of the job media
  2904.               sheets have been successfully stacked in the appropriate output
  2905.               bin(s).  The job's "job-state-reasons" attribute SHOULD contain
  2906.               one of: 'completed-successfully', 'completed-with-warnings', or
  2907.               'completed-with-errors' values.
  2908.  
  2909.          The final value for this attribute SHALL be one of: 'completed',
  2910.          'canceled', or 'aborted' before the Printer removes the job
  2911.          altogether.  The length of time that jobs remain in the 'canceled',
  2912.          'aborted', and 'completed' states depends on implementation.
  2913.  
  2914.          The following figure shows the normal job state transitions.
  2915.  
  2916.                                                              +----> canceled
  2917.                                                             /
  2918.              +----> pending --------> processing ---------+------> completed
  2919.              |         ^                   ^                \
  2920.          --->+         |                   |                 +----> aborted
  2921.              |         v                   v                /
  2922.              +----> pending-held    processing-stopped ----+
  2923.  
  2924.  
  2925.          Normally a job progresses from left to right.  Other state transitions
  2926.          are unlikely, but are not forbidden.  Not shown are the transitions to
  2927.          the 'canceled' state from the 'pending', 'pending-held', 'processing',
  2928.          and 'processing-stopped' states.
  2929.  
  2930.          4.3.9 job-state-reasons (1setOf  type2 keyword)
  2931.  
  2932.          This attribute provides additional information about the job's current
  2933.          state, i.e., information that augments the value of the job's "job-
  2934.          state" attribute.
  2935.  
  2936.          Implementation of these values is OPTIONAL, i.e., a Printer NEED NOT
  2937.          implement them, even if (1) the output device supports the
  2938.          functionality represented by the reason and (2) is available to the
  2939.          Printer object implementation.  These values MAY be used with any job
  2940.          state or states for which the reason makes sense.  Furthermore, when
  2941.          implemented, the Printer SHALL return these values when the reason
  2942.          applies and SHALL NOT return them when the reason no longer applies
  2943.          whether the value of the job's "job-state" attribute changed or not.
  2944.          When the job does not have any reasons for being in its current state,
  2945.          the Printer shall set the value of the job's "job-state-reasons"
  2946.          attribute to 'none'.
  2947.  
  2948.          NOTE - While values cannot be added to the 'job-state' attribute
  2949.          without impacting deployed clients that take actions upon receiving
  2950.  
  2951.          deBry, Hastings, Herriot, Isaacson, Powell
  2952.                                        [Page 51]
  2953.                                Expires February xx, 1998
  2954.  
  2955.  
  2956.  
  2957.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  2958.  
  2959.  
  2960.          "job-state" values, it is the intent that additional "job-state-
  2961.          reasons" values can be defined and registered without impacting such
  2962.          deployed clients.  In other words, the "job-state-reasons" attribute
  2963.          is intended to be extensible.
  2964.  
  2965.          The following standard values are defined:
  2966.  
  2967.            'none':  There are no reasons for the job's current state.
  2968.            'job-incoming':  The CreateJob operation has been accepted by the
  2969.               Printer, but the Printer is expecting additional SendDocument
  2970.               operations and/or is accessing/accepting document data.
  2971.            'job-outgoing':  The Printer is transmitting the job to the output
  2972.               device.
  2973.            'job-hold-until-specified-time':  The value of the job's "job-hold-
  2974.               until" attribute specifies a time period that is still in the
  2975.               future.  The job SHALL NOT be a candidate for processing until
  2976.               this reason is removed and there are no other reasons to hold the
  2977.               job.
  2978.            'job-hold-until-resources-are -ready':  At least one of the
  2979.               resources needed by the job, such as media, fonts, resource
  2980.               objects, etc., is not ready on any of the physical printer's for
  2981.               which the job is a candidate.  This condition MAY be detected
  2982.               when the job is accepted, or subsequently while the job is
  2983.               pending or processing, depending on implementation.
  2984.            'printer-stopped-partly':  The value of the Printer's "printer-
  2985.               state-reasons" attribute contains the value 'stopped-partly'.
  2986.            'printer-stopped':  The value of the Printer's "printer-state"
  2987.               attribute is 'stopped'.
  2988.            'job-printing':  The output device is marking media. This value is
  2989.               useful for Printers which spend a great deal of time processing
  2990.               when no marking is happening and then want to show that marking
  2991.               is now happening.
  2992.            'job-cancelled-by-user':  The job was cancelled by the user using
  2993.               the CancelJob request, i.e., by a user whose name is the same as
  2994.               the value of the job's "job-originating-user" attribute.
  2995.            'job-cancelled-by-operator':  The job was cancelled by the operator
  2996.               using the CancelJob request, i.e., by a user whose name is
  2997.               different than the value of the job's "job-originating-user"
  2998.               attribute.
  2999.            'job-completed-successfully':  The job completed successfully.
  3000.            'job-completed-with-warnings':  The job completed with warnings.
  3001.            'job-completed-with-errors':  The job completed with errors (and
  3002.               possibly warnings too).
  3003.            'job-interpreting': Job is in the 'processing' state, but more
  3004.               specifically, the Printer is interpreting the data.
  3005.            'job-printing': Job is in the 'processing' state, but more
  3006.               specifically, the Printer is actually printing (making marks on
  3007.               the media).
  3008.  
  3009.          deBry, Hastings, Herriot, Isaacson, Powell
  3010.                                        [Page 52]
  3011.                                Expires February xx, 1998
  3012.  
  3013.  
  3014.  
  3015.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  3016.  
  3017.  
  3018.            'job-queued': Job is in the 'processing' state, but more
  3019.               specifically, the Printer is queuing the data.
  3020.            'job-transforming': Job is in the 'processing' state, but more
  3021.               specifically, the Printer is transforming the data.
  3022.  
  3023.  
  3024.          ISSUE: Show a partitioning of which "job-state-reasons" are valid or
  3025.          expected for each "job-state" value.
  3026.  
  3027.          4.3.10 job-state-message (text)
  3028.  
  3029.          This attributes specifies supplemental information about the Job State
  3030.          in human readable text.
  3031.  
  3032.          4.3.11 output-device-assigned (name)
  3033.  
  3034.          This attribute identifies the Output Device to which the Printer has
  3035.          assigned this job.  If an output device implements an embedded IPP
  3036.          Printer, the Printer NEED NOT set this attribute.  If a Print Server
  3037.          implements a Printer, the value MAY be empty until the Printer assigns
  3038.          an output device to the job.
  3039.  
  3040.          4.3.12 time-since-pending (integer)
  3041.  
  3042.          This attribute indicates the amount of time in milliseconds that has
  3043.          passed since the Job was first put into the pending state..
  3044.  
  3045.          4.3.13 time-since-processing (integer)
  3046.  
  3047.          This attribute indicates the amount of time in milliseconds that has
  3048.          passed since the Job first entered the processing state.
  3049.  
  3050.          4.3.14 time-since-completed (integer)
  3051.  
  3052.          This attribute indicates the amount of time in milliseconds that has
  3053.          passed since the Job was completed.
  3054.  
  3055.          4.3.15 number-of-intervening-jobs (integer(0:2**31 - 1))
  3056.  
  3057.          This attribute indicates the number of jobs that are "ahead" of this
  3058.          job in the current scheduled order.  For efficiency, it is only
  3059.          necessary to calculate this value when an operation is performed that
  3060.          requests this attribute.
  3061.  
  3062.          Note: This attribute is necessary since an end user may request just
  3063.          their own jobs and they need some relative position indicator if there
  3064.          are other jobs interspersed in the waiting list which are not returned
  3065.  
  3066.  
  3067.          deBry, Hastings, Herriot, Isaacson, Powell
  3068.                                        [Page 53]
  3069.                                Expires February xx, 1998
  3070.  
  3071.  
  3072.  
  3073.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  3074.  
  3075.  
  3076.          in the response or cannot be because of site security policy
  3077.          restrictions.
  3078.  
  3079.          4.3.16 job-message-from-operator (text)
  3080.  
  3081.          This attribute provides a message from an operator, system
  3082.          administrator or "intelligent" process to indicate to the end user the
  3083.          reasons for modification or other management action taken on a job.
  3084.  
  3085.          4.3.17 job-k-octets-processed (integer(0:2**31 - 1))
  3086.  
  3087.          This attribute specifies the number of octets completed in K octets,
  3088.          i.e., in units of 1024 octets.  The value SHALL be rounded up, so that
  3089.          a job between 1 and 1024 octets SHALL be indicated as being 1, 1025 to
  3090.          2048 SHALL be 2, etc.
  3091.  
  3092.          Note: This attribute and the following two attributes ("job-
  3093.          impressions-completed" and "job-sheets-completed") are intended to be
  3094.          counters (as described in the Job Monitoring MIB [27]). That is, if
  3095.          the "job-state" is 'processing' or 'processing-stopped', this value is
  3096.          intended to contain the amount of the job that has been processed to
  3097.          the time at which the attributes are requested.  For any of these
  3098.          three attributes, the Printer may choose to return the value '-2'
  3099.          (which represents "unknown") rather than choose to not support the
  3100.          attribute at all.
  3101.  
  3102.          4.3.18 job-impressions-completed  (integer(0:2**31 - 1))
  3103.  
  3104.          This job attribute specifies the number of impressions completed. This
  3105.          attribute is intended to be a counter as in the Job Monitoring MIB.
  3106.  
  3107.          4.3.19 job-media-sheets-completed (integer(0:2**31 - 1))
  3108.  
  3109.          This job attribute specifies the media-sheets completed. This
  3110.          attribute is intended to be a counter as in the Job Monitoring MIB.
  3111.  
  3112.  
  3113.          4.4 Document Attributes
  3114.  
  3115.          This group of attributes applies to Document objects.  If there are
  3116.          multiple Documents in a Job, then there is a different set of Document
  3117.          attributes associated with Document in the Job.
  3118.  
  3119.          When using the Get-Attributes or Get-Jobs operations, the group named
  3120.          "document-attributes" includes all of the attributes in this section,
  3121.          including the Document level Job Template attributes (attributes that
  3122.          have the same characteristics as Job Template attribute, yet apply to
  3123.  
  3124.  
  3125.          deBry, Hastings, Herriot, Isaacson, Powell
  3126.                                        [Page 54]
  3127.                                Expires February xx, 1998
  3128.  
  3129.  
  3130.  
  3131.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  3132.  
  3133.  
  3134.          Documents, not Jobs).  These are identified in the second part of the
  3135.          table in section 4.2.  Specifically they are:
  3136.  
  3137.            "document-format"
  3138.            "compression"
  3139.            "document-k-octets"
  3140.            "document-impressions"
  3141.            "document-media-sheets"
  3142.  
  3143.  
  3144.  
  3145.          Other Document attributes include:
  3146.  
  3147.  
  3148.          +-----------------+-------------+----------------+
  3149.          |    Document     |  Syntax     |   MANDATORY?   |
  3150.          |    Attribute    |             |                |
  3151.          +-----------------+-------------+----------------+
  3152.          | document-name   | name        |  NO            |
  3153.          +-----------------+-------------+----------------+
  3154.          | document-uri    | uri         |  NO            |
  3155.          +-----------------+-------------+----------------+
  3156.  
  3157.          4.4.1 document-name (name)
  3158.  
  3159.          This attribute contains the name of the document.  The name is
  3160.          optionally supplied by the client in the "document-name" operation
  3161.          attribute in the create request.  If it is not supplied by the client
  3162.          in the create request, the Printer MAY generate a Document name.  The
  3163.          "document-name" attribute contains the name whether supplied or
  3164.          generated.
  3165.  
  3166.          4.4.2 document-uri (uri)
  3167.  
  3168.          If a "pull" operations is used to create the Document object (such as
  3169.          the Print-URI or Send-URI operations which include only a URI
  3170.          reference to the document data, not the document data itself), then
  3171.          this "document-uri" attribute contains the URI reference.  This
  3172.          attribute is populated from the "document-uri" operation attribute
  3173.          supplied by the client in the Print-URI or Send-URI operation.
  3174.  
  3175.          If a "push" operation is used to create the Document object (such as
  3176.          the Print-Job or Send-Document operations which include the document
  3177.          data rather than just a reference to the data) then this "document-
  3178.          uri" attribute is not associated with the Document object.
  3179.  
  3180.  
  3181.  
  3182.  
  3183.          deBry, Hastings, Herriot, Isaacson, Powell
  3184.                                        [Page 55]
  3185.                                Expires February xx, 1998
  3186.  
  3187.  
  3188.  
  3189.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  3190.  
  3191.  
  3192.          4.5 Printer Description Attributes
  3193.  
  3194.          These attributes form the attribute group called "printer-
  3195.          description".  A Printer object may be realized in either a print
  3196.          server or output device.  Note: How these attributes are set by an
  3197.          Administrator is outside the scope of this specification.  The
  3198.          following table summarizes these attributes, their syntax, and whether
  3199.          or not they are MANDATORY.  If they are not MANDATORY, they are
  3200.          OPTIONAL.
  3201.  
  3202.  
  3203.  
  3204.  
  3205.  
  3206.  
  3207.  
  3208.  
  3209.  
  3210.  
  3211.  
  3212.  
  3213.  
  3214.  
  3215.  
  3216.  
  3217.  
  3218.  
  3219.  
  3220.  
  3221.  
  3222.  
  3223.  
  3224.  
  3225.  
  3226.  
  3227.  
  3228.  
  3229.  
  3230.  
  3231.  
  3232.  
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238.  
  3239.  
  3240.  
  3241.          deBry, Hastings, Herriot, Isaacson, Powell
  3242.                                        [Page 56]
  3243.                                Expires February xx, 1998
  3244.  
  3245.  
  3246.  
  3247.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  3248.  
  3249.  
  3250.          +----------------------------+----------------------+----------------+
  3251.          |      Attribute             |     Syntax           |   MANDATORY?   |
  3252.          +----------------------------+----------------------+----------------+
  3253.          | printer-uri                | uri                  |  MANDATORY     |
  3254.          +----------------------------+----------------------+----------------+
  3255.          | printer-name               | name                 |  MANDATORY     |
  3256.          +----------------------------+----------------------+----------------+
  3257.          | printer-location           | text                 |                |
  3258.          +----------------------------+----------------------+----------------+
  3259.          | printer-description        | text                 |                |
  3260.          +----------------------------+----------------------+----------------+
  3261.          | printer-more-info          | uri                  |                |
  3262.          +----------------------------+----------------------+----------------+
  3263.          | printer-driver-installer   | uri                  |                |
  3264.          +----------------------------+----------------------+----------------+
  3265.          | printer-make-and-model     | text                 |                |
  3266.          +----------------------------+----------------------+----------------+
  3267.          | printer-more-info-         | uri                  |                |
  3268.          | manufacturer               |                      |                |
  3269.          +----------------------------+----------------------+----------------+
  3270.          | printer-state              | type1 enum           |  MANDATORY     |
  3271.          +----------------------------+----------------------+----------------+
  3272.          | printer-state-reasons      | 1setOf type2 keyword |                |
  3273.          +----------------------------+----------------------+----------------+
  3274.          | printer-state-message      | text                 |                |
  3275.          +----------------------------+----------------------+----------------+
  3276.          | operations-supported       | 1setOf type2 enum    |  MANDATORY     |
  3277.          +----------------------------+----------------------+----------------+
  3278.          | printer-is-accepting-jobs  | boolean              |  MANDATORY     |
  3279.          +----------------------------+----------------------+----------------+
  3280.          | queued-job-count           | integer              |                |
  3281.          +----------------------------+----------------------+----------------+
  3282.          | printer-message-from-      | text                 |                |
  3283.          | operator                   |                      |                |
  3284.          +----------------------------+----------------------+----------------+
  3285.          | printer-language           | human-language       |  MANDATORY     |
  3286.          +----------------------------+----------------------+----------------+
  3287.          | printer-language-supported | 1setOf human-language|  MANDATORY     |
  3288.          +----------------------------+----------------------+----------------+
  3289.          | color-supported            | boolean              |                |
  3290.          +----------------------------+----------------------+----------------+
  3291.          | pdl-override               | type2 keyword        |                |
  3292.          +----------------------------+----------------------+----------------+
  3293.          | message-protection-        | keyword              |                |
  3294.          | supported                  |                      |                |
  3295.          +----------------------------+----------------------+----------------+
  3296.          | authentication-author      | keyword              |                |
  3297.          | ization-supported          |                      |                |
  3298.  
  3299.          deBry, Hastings, Herriot, Isaacson, Powell
  3300.                                        [Page 57]
  3301.                                Expires February xx, 1998
  3302.  
  3303.  
  3304.  
  3305.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  3306.  
  3307.  
  3308.          +----------------------------+----------------------+----------------+
  3309.          | printer-up-time            | seconds              |  MANDATORY     |
  3310.          +----------------------------+----------------------+----------------+
  3311.          | printer-current-time       | dateTime             |                |
  3312.          +----------------------------+----------------------+----------------+
  3313.  
  3314.          4.5.1 printer-uri (uri)
  3315.  
  3316.          This attribute contains the URI for the printer.  An administrator
  3317.          determines a printer's URI and sets this attribute to that URI. The
  3318.          precise format of a printer URI is implementation dependent.
  3319.  
  3320.          4.5.2 printer-name (name)
  3321.  
  3322.          This attribute contains the name of the printer. It is a name that is
  3323.          more user friendly than the printer-URI. An administrator determines a
  3324.          printer's name and sets this attribute to that name. This name may be
  3325.          the last part of the printer's URI or it may be unrelated. In non-US-
  3326.          English locales, a name may contain characters that are not allowed in
  3327.          a URI.
  3328.  
  3329.          4.5.3 printer-location (text)
  3330.  
  3331.          This attribute identifies the location of this printer. This could
  3332.          include things like: _in Room 123A, second floor of building XYZ_.
  3333.  
  3334.          4.5.4 printer-description (text)
  3335.  
  3336.          This attribute identifies the descriptive information about this
  3337.          Printer.  This could include things like: "This printer can be used
  3338.          for printing color transparencies for HR presentations", or "Out of
  3339.          courtesy for others, please print only small (1-5 page) jobs at this
  3340.          printer", or even "This printer is going away on July 1, 1997, please
  3341.          find a new printer".
  3342.  
  3343.          4.5.5 printer-more-info (uri)
  3344.  
  3345.          This attribute contains a URI used to obtain more information about
  3346.          this specific printer.  For example, this could be an HTTP type URI
  3347.          referencing an HTML page accessible to a Web Browser.  The information
  3348.          obtained from this URI is intended for end user consumption. Features
  3349.          outside the scope of IPP can be accessed from this URI.  The
  3350.          information is intended to be specific to this printer instance and
  3351.          site specific services (e.g. job pricing, services offered, end user
  3352.          assistance).
  3353.  
  3354.  
  3355.  
  3356.  
  3357.          deBry, Hastings, Herriot, Isaacson, Powell
  3358.                                        [Page 58]
  3359.                                Expires February xx, 1998
  3360.  
  3361.  
  3362.  
  3363.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  3364.  
  3365.  
  3366.          4.5.6 printer-driver-installer (uri)
  3367.  
  3368.          This attribute contains a URI to use to locate the driver installer
  3369.          for this printer.   This attribute is intended for consumption by
  3370.          automata. The mechanics of print driver installation is outside the
  3371.          scope of IPP.  The printer manufacturer may initially populate this
  3372.          attribute.
  3373.  
  3374.          4.5.7 printer-make-and-model (text)
  3375.  
  3376.          This attribute identifies the make and model of the printer.
  3377.  
  3378.          4.5.8 printer-more-info-manufacturer (uri)
  3379.  
  3380.          This attribute contains a URI used to obtain more information about
  3381.          this type of printer.  The information obtained from this URI is
  3382.          intended for end user consumption.  Features outside the scope of IPP
  3383.          can be accessed from this URI (e.g., latest firmware, upgrades, print
  3384.          drivers, optional features available).  The information is intended to
  3385.          be germane to this printer without regard to site specific
  3386.          modifications or services.
  3387.  
  3388.          4.5.9 printer-state (type1 enum)
  3389.  
  3390.          This attribute identifies the current state of the printer.  The
  3391.          "printer-state reasons" attribute augments the "printer-state"
  3392.          attribute to give more detailed information about the Printer in the
  3393.          given printer state.
  3394.  
  3395.          A Printer SHALL keep this attribute set in a timely manner to the
  3396.          value in the table below which most accurately reflects the state of
  3397.          the Printer. If the printer has jobs that are requesting notification
  3398.          of printer-problems or job-problems, then _timely manner_ means
  3399.          continually..  Otherwise, _timely manner_ means whether the Printer
  3400.          receives a query for this attribute. A Printer NEED NOT implement all
  3401.          values if they are not applicable to a given implementation.
  3402.  
  3403.          The following standard values are defined:
  3404.  
  3405.            'unknown'(2):  The Printer state is not known, or is indeterminate.
  3406.               A Printer SHALL use this state only if it cannot determine its
  3407.               actual state.
  3408.  
  3409.            'idle'(3):  If a Printer receives a job (whose required resources
  3410.               are ready) while in this state, such a job SHALL transit into the
  3411.               processing state immediately.  If the printer-state-reasons
  3412.               attribute contains any reasons, they SHALL be reasons that would
  3413.               not prevent a job from transiting into the processing state
  3414.  
  3415.          deBry, Hastings, Herriot, Isaacson, Powell
  3416.                                        [Page 59]
  3417.                                Expires February xx, 1998
  3418.  
  3419.  
  3420.  
  3421.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  3422.  
  3423.  
  3424.               immediately, e.g., toner-low. Note: if a Printer controls more
  3425.               than one output device, the above definition implies that a
  3426.               Printer is idle if at least one output device is idle.
  3427.  
  3428.            'processing'(4):  If a Printer receives a job (whose required
  3429.               resources are ready) while in this state, such a job SHALL
  3430.               transit into the pending state immediately. Such a job SHALL
  3431.               transit into the processing state only after jobs ahead of it
  3432.               complete.  If the printer-state-reasons attribute contains any
  3433.               reasons, they SHALL be reasons that do not prevent the current
  3434.               job from printing, e.g. toner-low.  Note: if a Printer controls
  3435.               more than one output device, the above definition implies that a
  3436.               Printer is processing if at least one output device is
  3437.               processing, and none is idle.
  3438.  
  3439.            'stopped'(5):  If a Printer receives a job (whose required
  3440.               resources are ready) while in this state, such a job SHALL
  3441.               transit into the pending state immediately. Such a job SHALL
  3442.               transit into the processing state only after some human fixes the
  3443.               problem that stopped the printer and after jobs ahead of it
  3444.               complete printing.  The "printer-state-reasons" attribute SHALL
  3445.               contain at least one reason, e.g. media-jam, which prevents it
  3446.               from either processing the current job or transiting a pending
  3447.               job to the processing state.
  3448.  
  3449.               Note: if a Printer controls more than one output device, the
  3450.               above definition implies that a Printer is stopped only if all
  3451.               output devices are stopped.  Also, it is tempting to define
  3452.               stopped as when a sufficient number of output devices are stopped
  3453.               and leave it to an implementation to define the sufficient
  3454.               number.  But such a rule complicates the definition of stopped
  3455.               and processing. For example, with this alternate definition of
  3456.               stopped, a job can move from idle to processing without human
  3457.               intervention, even though the Printer is stopped.
  3458.  
  3459.          4.5.10 printer-state-reasons (1setOf type2 keyword)
  3460.  
  3461.          This attribute supplies additional detail about the printer's state.
  3462.  
  3463.          Each MAY have asuffix to indicate its level of severity.  The three
  3464.          levels are: report (least severe), warning, and error (most severe).
  3465.  
  3466.            - '-report':  This suffix indicates that the reason is a "report".
  3467.               An implementation may choose to omit some or all reports. Some
  3468.               reports specify finer granularity about the printer state; others
  3469.               serve as a precursor to a warning. A report SHALL contain nothing
  3470.               that could affect the printed output.
  3471.  
  3472.  
  3473.          deBry, Hastings, Herriot, Isaacson, Powell
  3474.                                        [Page 60]
  3475.                                Expires February xx, 1998
  3476.  
  3477.  
  3478.  
  3479.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  3480.  
  3481.  
  3482.            - '-warning': This suffix indicates that the reason is a "warning".
  3483.               An implementation may choose to omit some or all warnings.
  3484.               Warnings serve as a precursor to an error. A warning SHALL
  3485.               contain nothing that prevents a job from completing, though in
  3486.               some cases the output may be of lower quality.
  3487.            - '-error': This suffix indicates that the reason is an "error". .
  3488.               An implementation SHALL include all errors. If this attribute
  3489.               contains one or more errors, printer SHALL be in the stopped
  3490.               state.
  3491.  
  3492.          If the implementation does not add any one of the three suffixes, all
  3493.          parties SHALL assume that the reason is an "error".
  3494.  
  3495.          If a logical Printer controls more than one output device, each value
  3496.          of this attribute MAY apply to one or more of the output devices.  An
  3497.          error on one output device that does not stop the logical Printer as a
  3498.          whole MAY appear as a warning in the Printer's "printer-state-reasons
  3499.          attribute".  The "printer-state" for such a Printer may have a value
  3500.          of 'stopped' even though there are with no "printer-state-reasons"
  3501.          values that are "errors".
  3502.  
  3503.          The following standard values are defined:
  3504.  
  3505.            'media-needed': A tray has run out of media.
  3506.            'media-jam': The printer has a media jam.
  3507.            'paused': Someone has paused the Printer. In this state, a Printer
  3508.               SHALL not produce printed output, but it SHALL perform other
  3509.               operations requested by a client. If a Printer had been printing
  3510.               a job when the Printer was paused, the Printer SHALL resume
  3511.               printing that job when the Printer is no longer paused and leave
  3512.               no evidence in the printed output of such a pause.
  3513.            'shutdown': Someone has removed a Printer from service, and it may
  3514.               be powered down or physical removed. In this state, a Printer
  3515.               SHALL not produce printed output, and unless the Printer is
  3516.               realized by a print server that is still active, the Printer
  3517.               SHALL perform no other operations requested by a client,
  3518.               including returning this value. If a Printer had been printing a
  3519.               job when it was shutdown, the Printer need not resume printing
  3520.               that job when the Printer is no longer shutdown. If the Printer
  3521.               resumes printing such a job, it may leave evidence in the printed
  3522.               output of such a shutdown, e.g. the part printed before the
  3523.               shutdown may be printed a second time after the shutdown.
  3524.            'connecting-to-device': The server has scheduled a job on the
  3525.               Printer and is in the process of connecting to a shared network
  3526.               output device (and might not be able to actually start printing
  3527.               the job for an arbitrarily long time depending on the usage of
  3528.               the output device by other servers on the network).
  3529.  
  3530.  
  3531.          deBry, Hastings, Herriot, Isaacson, Powell
  3532.                                        [Page 61]
  3533.                                Expires February xx, 1998
  3534.  
  3535.  
  3536.  
  3537.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  3538.  
  3539.  
  3540.            'timed-out': The server was able to connect to the output device
  3541.               (or is always connected), but was unable to get a response from
  3542.               the output device.
  3543.            'stopping': The printer will be stopping in a while and will change
  3544.               its reason to printer-stopped. This reason is a non-critical,
  3545.               even for a Printer with a single output device. When an output-
  3546.               device ceases accepting jobs, the Printer will have this state
  3547.               while the output device completes printing.
  3548.            'stopped-partly': When a Printer controls more than one output
  3549.               device, this reason indicates that one or more output devices are
  3550.               stopped. If the reason is a report, fewer than half of the output
  3551.               devices are stopped. If the reason is a warning, fewer than all
  3552.               of the output devices are stopped.
  3553.            'toner-low': The Printer is low on toner.
  3554.            'marker-supply-low': The Printer is low on marker supply.
  3555.            'spool-area-full': The limit of persistent storage allocated for
  3556.               spooling has been reached.
  3557.  
  3558.          ISSUE: Show a partitioning of which "printer-state-reasons" are valid
  3559.          or expected for each "printer-state" value.
  3560.  
  3561.  
  3562.  
  3563.          4.5.11 printer-state-message (text)
  3564.  
  3565.          This attribute specifies the additional information about the printer
  3566.          state and printer state reasons in human readable text.
  3567.  
  3568.  
  3569.  
  3570.          4.5.12 operations-supported (1setOf type2 enum)
  3571.  
  3572.          This attribute specifies the set of supported operations for this
  3573.          Printer.
  3574.  
  3575.          The following standard values are defined:
  3576.  
  3577.            0x00    reserved, not used
  3578.            0x01    Print-Job
  3579.            0x02    Print-URI
  3580.            0x03    Validate-Job
  3581.            0x04    Create-Job
  3582.            0x05    Get-Jobs
  3583.            0x06    Get-Attributes
  3584.            0x07    Send-Document
  3585.            0x08    Send-URI
  3586.            0x09    Cancel-Job
  3587.            0x0A-0x3FFF       reserved for future operations
  3588.  
  3589.          deBry, Hastings, Herriot, Isaacson, Powell
  3590.                                        [Page 62]
  3591.                                Expires February xx, 1998
  3592.  
  3593.  
  3594.  
  3595.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  3596.  
  3597.  
  3598.            0x4000-0xFFFF          reserved for private extensions
  3599.  
  3600.          In order for IPP to be extensible, this set of operations is defined
  3601.          to be a 1setOf  type2 enum (see section 6.1 for a description of typed
  3602.          extensions).  Since the base type is enum, the possible full range of
  3603.          values is 0x0000-0xFFFF, however a special range of 0x4000-0xFFFF has
  3604.          been reserved for private extensions.  This allows for certain vendors
  3605.          to implement private extensions that are guaranteed to not conflict
  3606.          with future registered extensions.  However, there is no guarantee
  3607.          that two or more private extensions will not conflict.
  3608.  
  3609.          4.5.13 printer-is-accepting-jobs (boolean)
  3610.  
  3611.          This attribute determines whether the printer is currently accepting
  3612.          job.  If the value is true, the printer is accepting jobs. If the
  3613.          value is false, the printer is currently rejecting any jobs submitted
  3614.          to it.
  3615.  
  3616.          Note: This value is independent of the printer state and printer-
  3617.          state-reasons because its value does not affect the current job;
  3618.          rather it affects future jobs. This attribute may cause the Printer to
  3619.          reject jobs when the printer-state is idle or it may cause the Printer
  3620.          to accepts jobs when the printer-state is stopped.
  3621.  
  3622.          4.5.14 queued-job-count (integer(0:2**31 - 1))
  3623.  
  3624.          This attribute contains a count of the number of jobs that are either
  3625.          pending and/or processing and is set by the Printer.
  3626.  
  3627.          4.5.15 printer-message-from-operator (text)
  3628.  
  3629.          This attribute provides a message from an operator, system
  3630.          administrator or "intelligent" process to indicate to the end user
  3631.          information or status of the printer, such as why it is unavailable or
  3632.          when it is expected to be available.
  3633.  
  3634.          4.5.16 printer-human-language (human-language)
  3635.  
  3636.          This attribute specifies the current human-language that the Printer
  3637.          is operating in.
  3638.  
  3639.          4.5.17 printer-human-language-supported (1setOf human-language)
  3640.  
  3641.          This attribute specifies the supported human languages that the
  3642.          Printer operates in.
  3643.  
  3644.  
  3645.  
  3646.  
  3647.          deBry, Hastings, Herriot, Isaacson, Powell
  3648.                                        [Page 63]
  3649.                                Expires February xx, 1998
  3650.  
  3651.  
  3652.  
  3653.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  3654.  
  3655.  
  3656.          4.5.18 color-supported (boolean)
  3657.  
  3658.          This attribute identifies whether the Printer is capable of any type
  3659.          of color printing at all.  All document instructions having to do with
  3660.          color are embedded within the document PDL (none are external IPP
  3661.          attributes).
  3662.  
  3663.          4.5.19 pdl-override (type2 keyword)
  3664.  
  3665.          This attribute expresses the ability for a particular Printer
  3666.          implementation to either attempt to override print data instructions
  3667.          with IPP attributes or not.
  3668.  
  3669.          This attribute takes on the following values:
  3670.  
  3671.            - 'attempted': This value indicates that the Printer attempts to
  3672.               make sure that IPP attribute values take precedence over embedded
  3673.               instructions in the Print data, however there is no guarantee.
  3674.            - 'not-attempted': This value indicates that the Printer makes not
  3675.               attempt to ensure that IPP attribute values take precedence over
  3676.               embedded instructions in the print data.
  3677.  
  3678.          This is a MANDATORY attribute.
  3679.  
  3680.          Appendix E: Processing IPP Attributes (see Section 15) contains a full
  3681.          description of how this attribute interacts with and affects other IPP
  3682.          attributes, especially the "ipp-attribute-fidelity" attribute.
  3683.  
  3684.          4.5.20 Security Related Attributes
  3685.  
  3686.          The security document [22] describes four common usage scenarios:
  3687.  
  3688.            - no security
  3689.            - message protection
  3690.            - client authentication and authorization
  3691.            - mutual authentication, authorization, and message protection
  3692.  
  3693.          In order to let an end user know what to expect in terms of security,
  3694.          there are two attributes described below.  Since by definition an end
  3695.          user, because of security reasons, might not be allowed to query these
  3696.          two attributes, therefore, it is important that if these two
  3697.          attributes are supported, then they are also populated in the
  3698.          directory entry (see [24]).
  3699.  
  3700.          These attributes allow for minimal client/server negotiation regarding
  3701.          security features.  If the Printer requires the feature, the client
  3702.          can decide whether or not to participate.  If the client does not
  3703.  
  3704.  
  3705.          deBry, Hastings, Herriot, Isaacson, Powell
  3706.                                        [Page 64]
  3707.                                Expires February xx, 1998
  3708.  
  3709.  
  3710.  
  3711.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  3712.  
  3713.  
  3714.          support the feature, and the Printer requires it, then the client
  3715.          knows before hand that such an interaction would fail.
  3716.  
  3717.          Standard values for these two attributes include:
  3718.  
  3719.            'supported' -  means that the Printer is capable of supporting the
  3720.               security feature (somehow), but it is does not require the client
  3721.               to use it.
  3722.            'required' -  means that the Printer is capable of supporting the
  3723.               security feature (somehow) and the client is required to use it.
  3724.            'none' - means that the Printer is not capable of supporting
  3725.               message protection at all.
  3726.  
  3727.          Note:  This is a single-valued attribute, not a multi-valued
  3728.          attribute, i.e., an implementation can not support 'none' and
  3729.          'required' or any other combination of values.
  3730.  
  3731.          4.5.20.1 message-protection-supported (keyword)
  3732.  
  3733.          This attribute is used to determine whether or not a printer supports
  3734.          or requires message protection (whether it be through encryption or
  3735.          some other privacy mechanism).
  3736.  
  3737.          4.5.20.2 authentication-authorization-supported (keyword)
  3738.  
  3739.          This attribute is used to determine whether or not a printer supports
  3740.          or requires authentication and authorization.
  3741.  
  3742.  
  3743.  
  3744.  
  3745.          4.5.21 printer-up-time (seconds)
  3746.  
  3747.          This attribute is a MANDATORY attribute.  It indicates the amount of
  3748.          time (in seconds) that this instance of this Printer implementation
  3749.          has been up and running.  This value is used to populate the Job
  3750.          attributes "time-at-pending", "time-at-processing", and "time-at-
  3751.          completed".  These time values are all measured in seconds and all
  3752.          have meaning only relative to this attribute, "printer-up-time".
  3753.  
  3754.          ISSUE: Does this need to be MANDATORY?
  3755.  
  3756.          4.5.22 printer-current-time (dateTime)
  3757.  
  3758.          This attribute is an OPTIONAL attribute.  It indicates the current
  3759.          absolute wall-clock time.  If an implementation supports this
  3760.          attribute, the a client could calculate the absolute wall-clock time
  3761.          each Job's "time-at-pending", "time-at-processing", and "time-at-
  3762.  
  3763.          deBry, Hastings, Herriot, Isaacson, Powell
  3764.                                        [Page 65]
  3765.                                Expires February xx, 1998
  3766.  
  3767.  
  3768.  
  3769.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  3770.  
  3771.  
  3772.          completed" attributes by using both "printer-up-time" and this
  3773.          attribute, "printer-current-time".  If an implementation does not
  3774.          support this attribute, a client can only calculate the relative time
  3775.          of certain events based on the MANDATORY "printer-up-time" attribute.
  3776.  
  3777.  
  3778.          5. Conformance
  3779.  
  3780.          This section describes conformance issues and requirements. This
  3781.          document introduces model entities such as objects, operations,
  3782.          attributes, and attribute values.  These conformance sections describe
  3783.          the conformance requirements which apply to these model entities.
  3784.  
  3785.  
  3786.          5.1 Client Conformance Requirements
  3787.  
  3788.          A conforming client SHALL send operations that conform to the protocol
  3789.          defined in _Internet Printing Protocol/1.0: Protocol Specification_
  3790.          [23]. For each parameter or attribute included in an operation
  3791.          request, a conforming client SHALL send a value whose type and value
  3792.          syntax conforms to the requirement of this document
  3793.  
  3794.          Otherwise, there are no conformance requirements placed on the user
  3795.          interfaces provided by IPP clients or their applications.  For
  3796.          example, one application might not allow an end user to submit
  3797.          multiple documents per job, while another does.  One application might
  3798.          first query a Printer object in order to supply a graphical user
  3799.          interface (GUI) dialogue box with supported and default values whereas
  3800.          a different implementation might not.
  3801.  
  3802.          When sending a Get-Attributes or create request, an IPP client need
  3803.          not supply any attributes.
  3804.  
  3805.          A client SHALL be able to accept any of the attribute syntaxes defined
  3806.          in Section 4.1 that may be returned to it in a response from a Printer
  3807.  
  3808.          A query response may contain parameters, attributes, and values that
  3809.          the client does not expect.  Therefore, a client implementation MUST
  3810.          gracefully handle such responses and not refuse to interoperate with a
  3811.          conforming Printer that is returning extended registered or private
  3812.          attributes and/or attribute values that conform to Section 6.  Clients
  3813.          may choose to ignore any parametes, attributes, or values that it does
  3814.          not understand.
  3815.  
  3816.  
  3817.  
  3818.  
  3819.  
  3820.  
  3821.          deBry, Hastings, Herriot, Isaacson, Powell
  3822.                                        [Page 66]
  3823.                                Expires February xx, 1998
  3824.  
  3825.  
  3826.  
  3827.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  3828.  
  3829.  
  3830.          5.2 Printer Object Conformance Requirements
  3831.  
  3832.          This section specifies the conformance requirements for conforming
  3833.          Printer object implementations with respect to objects, operations,
  3834.          and attributes.
  3835.  
  3836.          5.2.1 Objects
  3837.  
  3838.          Conforming Printer implementations SHALL implement all of the model
  3839.          objects as defined in this specification in the indicated sections:
  3840.  
  3841.            Section 2.1 Printer Object
  3842.            Section 2.2 Job Object
  3843.            Section 2.3 Document Object
  3844.  
  3845.          5.2.2 Operations
  3846.  
  3847.          Conforming Printer implementations SHALL implement all of the
  3848.          MANDATORY model operations, including mandatory responses, as defined
  3849.          in this specification in the indicated sections:
  3850.  
  3851.            For a Printer object:
  3852.               Print-Job (section 3.2.1)                    MANDATORY
  3853.               Print-URI (section 3.2.2)                    OPTIONAL
  3854.               Validate-Job (section 3.2.3)            MANDATORY
  3855.               Create-Job (section 3.2.4)              OPTIONAL
  3856.               Get-Jobs (section 3.2.6)                MANDATORY
  3857.               Get-Attributes (section3.2.5)           MANDATORY
  3858.  
  3859.            For a Job object:
  3860.               Send-Document (section 3.3.1)           OPTIONAL
  3861.               Send-URI (section 3.3.2)                OPTIONAL
  3862.               Cancel-Job (section 3.3.3)                   MANDATORY
  3863.               Get-Attributes (section 3.3.4)                    MANDATORY
  3864.  
  3865.          Conforming Printer implementations SHALL support all request and
  3866.          response parameters and all values of such parameters, except for
  3867.          parameters which are collections of attributes. The following section
  3868.          on attributes specifies the support required for attributes.
  3869.  
  3870.          5.2.3 Attributes
  3871.  
  3872.          Conforming Printer implementations SHALL support all of the MANDATORY
  3873.          attributes, as defined in this specification in the indicated
  3874.          sections.
  3875.  
  3876.          If a Printer supports an attribute, it SHALL support only those values
  3877.          specified in this document or through the extension mechanism
  3878.  
  3879.          deBry, Hastings, Herriot, Isaacson, Powell
  3880.                                        [Page 67]
  3881.                                Expires February xx, 1998
  3882.  
  3883.  
  3884.  
  3885.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  3886.  
  3887.  
  3888.          described in the next section. It MAY support any non-empty subset of
  3889.          these values. That is, it SHALL support at least one of the specified
  3890.          values and at most all of them.
  3891.  
  3892.          5.2.4 Printer extensions
  3893.  
  3894.          A conforming Printer may support registered extensions and private
  3895.          extensions, as long as they meet the requirements specified in Section
  3896.          6.
  3897.  
  3898.          A conforming Printer SHALL send responses that conform to the protocol
  3899.          defined in _Internet Printing Protocol/1.0: Protocol Specification_
  3900.          [23]. For each parameter or attribute included in an operation
  3901.          response, a conforming printer SHALL send a value whose type and value
  3902.          syntax conforms to the requirement of this document
  3903.  
  3904.          5.2.5 Attribute Syntaxes
  3905.  
  3906.          A Printer SHALL be able to accept any of the attribute syntaxes
  3907.          defined in Section 4.1 in any operation in which a client may supply
  3908.          attributes or parameters.  Furthermore, a Printer SHALL return
  3909.          attributes to the client in operation responses that conform to the
  3910.          syntax specified in Section 4.1.
  3911.  
  3912.  
  3913.          5.3 Security Conformance Requirements
  3914.  
  3915.          ISSUE: The "why" and "what" needs to be moved from the Security
  3916.          document to this document.  The "how" from the Security document needs
  3917.          to be moved to the Protocol Specification document.
  3918.  
  3919.  
  3920.          6. IANA Considerations (registered and private extensions)
  3921.  
  3922.          During the development of this standard, the IPP working group
  3923.          (working with IANA) will register additional keywords and enums while
  3924.          the standard is in the proposed and draft states according to the
  3925.          procedures described in this section.  IANA will handle registration
  3926.          of additional enums after this standard is approved in cooperation
  3927.          with an IANA-appointed registration editor from the IPP working group
  3928.          according to the procedures described in this section.
  3929.  
  3930.  
  3931.          6.1 Typed Extensions
  3932.  
  3933.          This document uses prefixes to the "keyword" and "enum" basic syntax
  3934.          type in order to communicate extra information to the reader through
  3935.          its name. This extra information need not be represented in an
  3936.  
  3937.          deBry, Hastings, Herriot, Isaacson, Powell
  3938.                                        [Page 68]
  3939.                                Expires February xx, 1998
  3940.  
  3941.  
  3942.  
  3943.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  3944.  
  3945.  
  3946.          implementation because it is unimportant to a client or Printer.  The
  3947.          list below describes the prefixes and their meaning.
  3948.  
  3949.            "type1":  The IPP standard must be revised to add a new keyword or
  3950.               a new enum.  No private keywords or enums are allowed.
  3951.  
  3952.            "type2":  Implementers can, at any time, add new keyword or enum
  3953.               values by proposing them to the IPP working group for
  3954.               registration (or an IANA-appointed registry advisor after the IPP
  3955.               working group is no longer certified) where they are reviewed for
  3956.               approval.  IANA keeps the registry.
  3957.  
  3958.            "type3":  Implementers can, at any time, add new keyword and enum
  3959.               values by submitting a registration request directly to IANA, no
  3960.               IPP working group or IANA-appointed registry advisor review is
  3961.               required.
  3962.  
  3963.            "type4":  Anyone (system administrators, system integrators, site
  3964.               managers, etc.) can, at any time, add new installation-defined
  3965.               values (keywords or new enum values) to a local system. Care
  3966.               SHOULD be taken by the implementers to see that keywords do not
  3967.               conflict with other keywords defined by the standard or as
  3968.               defined by the implementing product. There is no registration or
  3969.               approval procedure for type 4 keywords.
  3970.  
  3971.          By definition, each of the four types above assert some sort of
  3972.          registry or review process in order for extensions to be considered
  3973.          valid.  Each higher level (1, 2, 3, 4) tends to be decreasingly less
  3974.          stringent than the previous level.   Therefore, any typeN value MAY be
  3975.          registered using a process for some typeM where M is less than N,
  3976.          however such registration is NOT REQUIRED.  For example, a type4 value
  3977.          MAY be registered in a type 1 manner (by being included in a future
  3978.          version of an IPP specification) however it is NOT REQUIRED.
  3979.  
  3980.          This specification defines keyword and enum values for all of the
  3981.          above types, including type4 keywords.
  3982.  
  3983.          For private (unregistered) keyword extensions, implementers SHOULD use
  3984.          keywords with a suitable distinguishing prefix, such as "xxx-" where
  3985.          xxx is the (lowercase) fully qualified company name registered with
  3986.          IANA for use in domain names [30].
  3987.  
  3988.          Note: RFC 1035 [30] indicates that while upper and lower case letters
  3989.          are allowed in domain names, no significance is attached to the case.
  3990.          That is, two names with the same spelling but different case are to be
  3991.          treated as if identical.  Also, the labels in a domain name must
  3992.          follow the rules for ARPANET host names:  They must start with a
  3993.          letter, end with a letter or digit, and have as interior characters
  3994.  
  3995.          deBry, Hastings, Herriot, Isaacson, Powell
  3996.                                        [Page 69]
  3997.                                Expires February xx, 1998
  3998.  
  3999.  
  4000.  
  4001.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  4002.  
  4003.  
  4004.          only letters, digits, and hyphen.  Labels must be 63 characters or
  4005.          less.  Labels are separated by the "." character.
  4006.  
  4007.          For private (unregistered) enum extension, implementers SHOULD use
  4008.          values in the reserved integer range (see "enum").
  4009.  
  4010.  
  4011.          6.2 Registration of MIME types/sub-types for document-formats
  4012.  
  4013.          The "document-format" attribute's syntax is "mimeType".  This means
  4014.          that valid values are MIME types.  RFC 2045 [??] defines the syntax
  4015.          for valid MIME types.  Also, IANA is the registry for all MIME types.
  4016.  
  4017.  
  4018.          6.3 Attribute Extensibility
  4019.  
  4020.          Attribute names are considered to be set of type2 keywords.  In order
  4021.          to be extended, the same rules as type2 keywords apply.
  4022.  
  4023.  
  4024.          6.4 Attribute Syntax Extensibility
  4025.  
  4026.          Attribute syntaxes are considered to be set of type2 enums.  In order
  4027.          to be extended, the same rules as type2 enums apply.
  4028.  
  4029.  
  4030.          7. Internationalization Considerations
  4031.  
  4032.          This model describes attributes whose values can be text strings
  4033.          intended for human understanding rather than machine understanding.
  4034.          These attributes are:
  4035.  
  4036.          Printer Attributes:
  4037.  
  4038.            printer-name
  4039.            printer-location
  4040.            printer-description
  4041.            printer-make-and-model
  4042.            printer-state-message
  4043.            printer-message-from-operator
  4044.  
  4045.          Job Attributes
  4046.  
  4047.            job-name
  4048.            job-state-message
  4049.            job-message-from-operator
  4050.  
  4051.          Document Attributes
  4052.  
  4053.          deBry, Hastings, Herriot, Isaacson, Powell
  4054.                                        [Page 70]
  4055.                                Expires February xx, 1998
  4056.  
  4057.  
  4058.  
  4059.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  4060.  
  4061.  
  4062.            document-name
  4063.  
  4064.          These attributes MUST contain characters for the coded character set
  4065.          defined in ISO 10646 [??] and be encoded using the UTF-8 character
  4066.          encoding rules [28].  No other coded character sets or encoding rules
  4067.          are allowed.
  4068.  
  4069.          However, since these strings are intended for human understanding, the
  4070.          strings can be in any human language identifiable with tags defined in
  4071.          RFC 1766 [??].  A client that queries the above mentioned text
  4072.          attributes needs to know what human language is being used for these
  4073.          text attributes.  A Printer optionally supports a "human-languages-
  4074.          supported" supported values attribute and a "human-language" default
  4075.          value attribute.  Since these are optional, if the printer does not
  4076.          support these attributes, the client can assume that the text strings
  4077.          are either US English "en-US" or any other language that is specific
  4078.          to a given site.  Whatever the value, the same value applies to ALL
  4079.          text based attributes for a given Printer and its contained Jobs.
  4080.  
  4081.          In the HTTP mapping for IPP/1.0, these attributes are mapped in to the
  4082.          HTTP headers that control negotiation of human language between client
  4083.          and server.
  4084.  
  4085.  
  4086.          8. Security Considerations
  4087.  
  4088.          There is another Internet-Draft called "Internet Printing
  4089.          Protocol/1.0: Security" [22].  That document is being drafted and
  4090.          reviewed in parallel with this document.  The mapping of IPP on top of
  4091.          appropriate security protocols will be described in that document.
  4092.          IPP does not introduce any new, general purpose security mechanisms
  4093.          for authentication and encryption.
  4094.  
  4095.          A Printer may choose, for security reasons, not to return all
  4096.          attributes that a client requests. It may even return none of the
  4097.          requested attributes. In such cases, the status returned is the same
  4098.          as if the Printer had returned all requested attributes. The client
  4099.          cannot tell by such a response whether the requested attribute was
  4100.          present or absent on the Printer.
  4101.  
  4102.  
  4103.          9. References
  4104.  
  4105.          [1]  Smith, R., Wright, F., Hastings, T., Zilles, S., and Gyllenskog,
  4106.               J., "Printer MIB", RFC 1759, March 1995.
  4107.  
  4108.          [2]  R Fielding, et al, _Hypertext Transfer Protocol _ HTTP/1.1_ RFC
  4109.               2068, January 1997
  4110.  
  4111.          deBry, Hastings, Herriot, Isaacson, Powell
  4112.                                        [Page 71]
  4113.                                Expires February xx, 1998
  4114.  
  4115.  
  4116.  
  4117.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  4118.  
  4119.  
  4120.          [3]  Crocker, D., "Standard for the Format of ARPA Internet Text
  4121.               Messages", RFC 822, August 1982.
  4122.  
  4123.          [4]  Postel, J., "Instructions to RFC Authors", RFC 1543, October
  4124.               1993.
  4125.  
  4126.          [5]  ISO/IEC 10175 Document Printing Application (DPA), June 1996.
  4127.  
  4128.          [6]  Herriot, R. (editor), X/Open A Printing System Interoperability
  4129.               Specification (PSIS), August 1995.
  4130.  
  4131.          [7]  Kirk, M. (editor), POSIX System Administration - Part 4: Printing
  4132.               Interfaces, POSIX 1387.4 D8, 1994.
  4133.  
  4134.          [8]  Borenstein, N., and Freed, N., "MIME (Multi-purpose Internet Mail
  4135.               Extensions) Part One: Mechanism for Specifying and Describing the
  4136.               Format of Internet Message Bodies", RFC 1521, September, 1993.
  4137.  
  4138.          [9]  Braden, S., "Requirements for Internet Hosts - Application and
  4139.               Support", RFC 1123, October, 1989,
  4140.  
  4141.          [10] McLaughlin, L. III, (editor), "Line Printer Daemon Protocol" RFC
  4142.               1179, August 1990.
  4143.  
  4144.          [11] Berners-Lee, T., Masinter, L., McCahill, M. , "Uniform Resource
  4145.               Locators (URL)", RFC 1738, December, 1994.
  4146.  
  4147.           [20]     Internet Printing Protocol: Requirements
  4148.  
  4149.          [21] Internet Printing Protocol/1.0: Model and Semantics (This
  4150.               document)
  4151.  
  4152.          [22] Internet Printing Protocol/1.0: Security
  4153.  
  4154.          [23] Internet Printing Protocol/1.0: Protocol Specification
  4155.  
  4156.          [24] Internet Printing Protocol/1.0: Directory Schema
  4157.  
  4158.          [25] S. Bradner, "Key words for use in RFCs to Indicate Requirement
  4159.               Levels", RFC 2119 , March 1997
  4160.  
  4161.          [26] H. Alvestrand, " Tags for the Identification of Languages", RFC
  4162.               1766, March 1995.
  4163.  
  4164.          [27] T. Hastings, "Job Monitoring MIB", <draft-ietf-print-mib-
  4165.               monitoring-01.txt>, June 1997.
  4166.  
  4167.  
  4168.  
  4169.          deBry, Hastings, Herriot, Isaacson, Powell
  4170.                                        [Page 72]
  4171.                                Expires February xx, 1998
  4172.  
  4173.  
  4174.  
  4175.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  4176.  
  4177.  
  4178.          [28] F. Yergeau, "UTF-8, a transformation format of Unicode and ISO
  4179.               10646, RFC 2044, October 1996.
  4180.  
  4181.          [29] Turner, R. "Printer MIB", draft-ietf-printmib-mib-info-02.txt,
  4182.               July 8, 1997.  This I-D is an update to RFC 1759, March 1995 [1].
  4183.  
  4184.          [30] P. Mockapetris, "DOMAIN NAMES - IMPLEMENTATION AND
  4185.               SPECIFICATION", RFC 1035, November 1987.
  4186.  
  4187.          [31] ?, "  ", RFC 2130, ?.
  4188.  
  4189.          [32] ?, "  ", RFC 1514, ?.
  4190.  
  4191.          [33] ?, "  ", RFC 1903, ?.
  4192.  
  4193.          [34] ?, "  ", RFC 1808, ?.
  4194.  
  4195.  
  4196.          10. Author's Address
  4197.  
  4198.               Scott A. Isaacson (Editor)
  4199.               Novell, Inc.
  4200.               122 E 1700 S
  4201.               Provo, UT   84606
  4202.  
  4203.               Phone: 801-861-7366
  4204.               Fax:   801-861-4025
  4205.               EMail: scott_isaacson@novell.com
  4206.  
  4207.               Tom Hastings
  4208.               Xerox Corporation
  4209.               701 S. Aviation Blvd.
  4210.               El Segundo, CA   90245
  4211.  
  4212.               Phone: 310-333-6413
  4213.               Fax:   310-333-5514
  4214.               EMail: hastings@cp10.es.xerox.com
  4215.  
  4216.               Robert Herriot
  4217.               Sun Microsystems Inc.
  4218.               901 San Antonio.Road, MPK-17
  4219.               Palo Alto, CA 94303
  4220.  
  4221.               Phone: 415-786-8995 (Area code change to 650 in August 1997)
  4222.               Fax:  415-786-7077 (Area code change to 650 in August 1997)
  4223.               Email: robert.herriot@eng.sun.com
  4224.  
  4225.               Roger deBry
  4226.  
  4227.          deBry, Hastings, Herriot, Isaacson, Powell
  4228.                                        [Page 73]
  4229.                                Expires February xx, 1998
  4230.  
  4231.  
  4232.  
  4233.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  4234.  
  4235.  
  4236.               HUC/003G
  4237.               IBM Corporation
  4238.               P.O. Box 1900
  4239.               Boulder, CO 80301-9191
  4240.  
  4241.               Phone: (303) 924-4080
  4242.               Fax: (303) 924-9889
  4243.               Email: debry@vnet.ibm.com
  4244.  
  4245.               Patrick Powell
  4246.               San Diego State University
  4247.               9475 Chesapeake Dr., Suite D
  4248.               San Diego, CA  95123
  4249.  
  4250.               Phone: (619) 874-6543
  4251.               Fax: (619) 279-8424
  4252.               Email: papowell@sdsu.edu
  4253.  
  4254.               IPP Mailing List:  ipp@pwg.org
  4255.               IPP Mailing List Subscription:  ipp-request@pwg.org
  4256.               IPP Web Page:  http://www.pwg.org/ipp/
  4257.  
  4258.            Other Participants:
  4259.  
  4260.               Chuck Adams - Tektronix
  4261.               Jeff Barnett - IBM
  4262.               Ron Bergman - Dataproducts Corp.
  4263.               Sylvan Butler, HP
  4264.               Keith Carter, IBM Corporation
  4265.               Jeff Copeland - QMS
  4266.               Andy Davidson - Tektronix
  4267.               Mabry Dozier - QMS
  4268.               Lee Farrell - Canon Information Systems
  4269.               Steve Gebert - IBM
  4270.               Babek Jahromi, Microsoft
  4271.               David Kellerman - Northlake Software
  4272.               Rick Landau - Digital
  4273.               Harry Lewis - IBM
  4274.               Pete Loya - HP
  4275.               Ray Lutz - Cognisys
  4276.               Mike MacKay, Novell, Inc.
  4277.               Carl-Uno Manros, Xerox, Corp.
  4278.               Jay Martin - Underscore
  4279.               Stan McConnell - Xerox
  4280.               Paul Moore, Microsoft
  4281.               Pat Nogay - IBM
  4282.               Bob Pentecost - HP
  4283.               Rob Rhoads - Intel
  4284.  
  4285.          deBry, Hastings, Herriot, Isaacson, Powell
  4286.                                        [Page 74]
  4287.                                Expires February xx, 1998
  4288.  
  4289.  
  4290.  
  4291.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  4292.  
  4293.  
  4294.               David Roach - Unisys
  4295.               Stuart Rowley, Kyocera   Hiroyuki Sato - Canon
  4296.               Bob Setterbo - Adobe
  4297.               Devon Taylor, Novell, Inc.
  4298.               Mike Timperman - Lexmark
  4299.               Randy Turner - Sharp
  4300.               Atsushi Yuki - Kyocera
  4301.               Lloyd Young - Lexmark
  4302.               Bill Wagner - DPI
  4303.               Jim Walker - DAZEL
  4304.               Chris Wellens - Interworking Labs
  4305.               Rob Whittle - Novell
  4306.               Don Wright - Lexmark
  4307.               Peter Zehler, Xerox, Corp.
  4308.  
  4309.  
  4310.  
  4311.  
  4312.  
  4313.  
  4314.  
  4315.  
  4316.  
  4317.  
  4318.  
  4319.  
  4320.  
  4321.  
  4322.  
  4323.  
  4324.  
  4325.  
  4326.  
  4327.  
  4328.  
  4329.  
  4330.  
  4331.  
  4332.  
  4333.  
  4334.  
  4335.  
  4336.  
  4337.  
  4338.  
  4339.  
  4340.  
  4341.  
  4342.  
  4343.          deBry, Hastings, Herriot, Isaacson, Powell
  4344.                                        [Page 75]
  4345.                                Expires February xx, 1998
  4346.  
  4347.  
  4348.  
  4349.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  4350.  
  4351.  
  4352.  
  4353.          11. APPENDIX A: Terminology
  4354.  
  4355.          This specification uses the terminology defined in this section.
  4356.  
  4357.  
  4358.          11.1 Conformance Terminology
  4359.  
  4360.          The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
  4361.          "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and  "OPTIONAL" in this
  4362.          document are to be interpreted as described in RFC 2119 [25]. The
  4363.          sections below reiterate these definitions and include some additional
  4364.          ones.
  4365.  
  4366.          11.1.1 MUST
  4367.  
  4368.          This word, or the terms "REQUIRED",  "SHALL" or "MANDATORY", means
  4369.          that the definition is an absolute requirement of the specification.
  4370.  
  4371.          11.1.2 MUST NOT
  4372.  
  4373.          This phrase, or the phrase "SHALL NOT", means that the definition is
  4374.          an absolute prohibition of the specification.
  4375.  
  4376.          11.1.3 SHOULD
  4377.  
  4378.          This word, or the adjective "RECOMMENDED", means that there may exist
  4379.          valid reasons in particular circumstances to ignore a particular item,
  4380.          but the full implications must be understood and carefully weighed
  4381.          before choosing a different course.
  4382.  
  4383.          11.1.4 SHOULD NOT
  4384.  
  4385.          This phrase, or the phrase "NOT RECOMMENDED" means that there may
  4386.          exist valid reasons in particular circumstances when the particular
  4387.          behavior is acceptable or even useful, but the full implications
  4388.          should be understood and the case carefully weighed before
  4389.          implementing any behavior described with this label.
  4390.  
  4391.          11.1.5 MAY
  4392.  
  4393.          This word, or the adjective "OPTIONAL", means that an item is truly
  4394.          optional.  One vendor may choose to include the item because a
  4395.          particular marketplace requires it or because the vendor feels that it
  4396.          enhances the product while another vendor may omit the same item.   An
  4397.          implementation which does not include a particular option MUST be
  4398.          prepared to interoperate with another implementation which does
  4399.          include the option, though perhaps with reduced functionality. In the
  4400.  
  4401.          deBry, Hastings, Herriot, Isaacson, Powell
  4402.                                        [Page 76]
  4403.                                Expires February xx, 1998
  4404.  
  4405.  
  4406.  
  4407.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  4408.  
  4409.  
  4410.          same vein an implementation which does include a particular option
  4411.          MUST be prepared to interoperate with another implementation which
  4412.          does not include the option (except, of course, for the feature the
  4413.          option provides.)
  4414.  
  4415.  
  4416.  
  4417.          11.1.6 NEED NOT
  4418.  
  4419.          The verb "NEED NOT" indicates an action that the subject of the
  4420.          sentence does not have to implement in order to claim conformance to
  4421.          the standard.  The verb "NEED NOT" is used instead of "MAY NOT" since
  4422.          "MAY NOT" sounds like a prohibition.
  4423.  
  4424.  
  4425.          11.2 Model Terminology
  4426.  
  4427.          11.2.1 Keyword
  4428.  
  4429.          Keywords are used within this document as identifiers of semantic
  4430.          entities within the abstract model.  Attribute names, some attribute
  4431.          values, attribute syntaxes, and attribute group names are represented
  4432.          as keywords.  In this document, a keyword is a sequence of characters
  4433.          (length of 1 to 255) which consists of the following ASCII characters:
  4434.          lower-case letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"),
  4435.          period ("."), and underscore ("_").  A keyword starts with a lower-
  4436.          case letter.
  4437.  
  4438.          11.2.2 Attributes
  4439.  
  4440.          An attribute is an item of information that is associated with an
  4441.          instance of an IPP object.  An attribute consists of an attribute name
  4442.          and an attribute value(s).  Each attribute has a specific syntax.  All
  4443.          attributes are defined in section 4.
  4444.  
  4445.          An interesting set of attributes is called Job Template Attributes
  4446.          (these attributes are described in detail in section 4.2.)  The client
  4447.          optionally supplies Job Template attributes as input parameters in a
  4448.          create request (operation requests that create Job objects).  The
  4449.          Printer object has associated attributes which define supported and
  4450.          default values for the Printer.
  4451.  
  4452.          11.2.2.1 Attribute Name
  4453.  
  4454.          Each attribute is uniquely identified in this document by its
  4455.          attribute name.  An attribute name  is a keyword.  The keyword
  4456.          attribute name is given in the section header describing that
  4457.  
  4458.  
  4459.          deBry, Hastings, Herriot, Isaacson, Powell
  4460.                                        [Page 77]
  4461.                                Expires February xx, 1998
  4462.  
  4463.  
  4464.  
  4465.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  4466.  
  4467.  
  4468.          attribute.  In running text in this document, attribute names are
  4469.          indicated inside double quotation marks (").
  4470.  
  4471.          11.2.2.2 Attribute Group Name
  4472.  
  4473.          Related attributes are grouped into named groups.  The name of the
  4474.          group is a keyword.  The group name may be used in an input parameter
  4475.          in place of naming all the attributes in the group explicitly.
  4476.          Attribute groups are defined in section 3.
  4477.  
  4478.          11.2.2.3 Attribute Value
  4479.  
  4480.          Each attribute has one or more values.  Attribute values are
  4481.          represented in the syntax type specified for that attribute. In
  4482.          running text in this document, attribute values are indicated inside
  4483.          single quotation marks ('), whether their attribute syntax is keyword,
  4484.          integer, text, etc.
  4485.  
  4486.          11.2.2.4 Attribute Syntax
  4487.  
  4488.          Each attribute is defined using an explicit syntax type.  In this
  4489.          document, each syntax type is defined as a keyword with specific
  4490.          meaning.  The protocol specification document [23] indicates the
  4491.          actual "on-the-wire" encoding rules for each syntax type. Attribute
  4492.          syntax types are defined in section 4.1.
  4493.  
  4494.          11.2.3 Supports
  4495.  
  4496.          By definition, an implementation (an instance of an IPP object)
  4497.          supports an attribute  only if that implementation responds with the
  4498.          corresponding attribute and value in a response to a query for that
  4499.          attribute.  A given implementation may exhibit a behavior that
  4500.          corresponds to the value of some attribute, but if the implementation,
  4501.          when queried for that attribute, doesn't respond with the supported
  4502.          attribute populated with that specific value, then as far as IPP is
  4503.          concerned, that implementation does not support that feature.
  4504.  
  4505.          A conforming implementation SHALL support all MANDATORY attributes.
  4506.          However, even for MANDATORY attributes, conformance to IPP does not
  4507.          mandate that all implementations support all possible values
  4508.          representing all possible job processing behaviors and features.  For
  4509.          example, if a given instance of a Printer supports only certain
  4510.          document formats, then that Printer responds with the "document-
  4511.          format-supported" attribute populated with a set of values, possibly
  4512.          only one, taken from the entire set of possible values defined for
  4513.          that attribute. This limited set of values represents the Printer's
  4514.          set of supported document formats.  Supporting an attribute and some
  4515.          set of values for that attribute enables IPP end users to be aware of
  4516.  
  4517.          deBry, Hastings, Herriot, Isaacson, Powell
  4518.                                        [Page 78]
  4519.                                Expires February xx, 1998
  4520.  
  4521.  
  4522.  
  4523.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  4524.  
  4525.  
  4526.          and make use of those features associated with that attribute and
  4527.          those values.  If an implementation chooses to not support an
  4528.          attribute or some specific value, then IPP end users would have no
  4529.          ability to make use of that feature within the context of IPP itself.
  4530.          However, due to existing practice and legacy systems which are not IPP
  4531.          aware, there might be some other mechanism outside the scope of IPP to
  4532.          control or request the "unsupported" feature (such as embedded
  4533.          instructions within the print data itself, for example).
  4534.  
  4535.          For example, consider the "finishings-supported" attribute.  If a
  4536.          Printer is not physically capable of stapling, the "finishings-
  4537.          supported" attribute MUST NOT be populated with the value of 'staple'.
  4538.          If a Printer is physically capable of stapling, an implementation MAY
  4539.          choose to support the "finishings-supported" attribute and the value
  4540.          of 'staple'.  Doing so, would enable end users to be aware of and make
  4541.          use of the stapling feature.  Without support for the value 'staple',
  4542.          an IPP end user would have no means within the protocol itself to
  4543.          request that a Job be stapled.  However an existing print data
  4544.          formatter might be able to request that the document be stapled
  4545.          directly within the print data itself.  In this case, the IPP
  4546.          implementation does not "support" stapling, however the end user is
  4547.          still able to have some control over the stapling of the completed
  4548.          job.
  4549.  
  4550.          In order to ease the implementation burden, many IPP attributes are
  4551.          OPTIONAL.  Therefore, it is an implementation choice whether or not to
  4552.          support OPTIONAL attributes and values, even if those attributes and
  4553.          values correspond to features and functions that are realizable in the
  4554.          implementation. However, it is RECOMMENDED that if an IPP
  4555.          implementation that is capable of realizing any feature or function
  4556.          that corresponds to an IPP attribute and some associated value, then
  4557.          that implementation support that IPP attribute and value.
  4558.  
  4559.  
  4560.  
  4561.          Note: The set of values in any of the supported value attributes is
  4562.          set (populated) by some administrative process or automatic sensing
  4563.          mechanism that is outside the scope of IPP.  For administrative policy
  4564.          and control reasons, an administrator may choose to make only a subset
  4565.          of possible values visible to the end user.  In this case, the real
  4566.          output device behind the IPP Printer abstraction may be capable of a
  4567.          certain feature, however an administrator is specifying that access to
  4568.          that feature not flow back to the end user through the IPP protocol.
  4569.  
  4570.  
  4571.  
  4572.  
  4573.  
  4574.  
  4575.          deBry, Hastings, Herriot, Isaacson, Powell
  4576.                                        [Page 79]
  4577.                                Expires February xx, 1998
  4578.  
  4579.  
  4580.  
  4581.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  4582.  
  4583.  
  4584.          12. APPENDIX B:  Status Codes
  4585.  
  4586.          This section defines status code keywords that are used to provide
  4587.          semantic information on the results of an operation request.  Each
  4588.          operation response MUST include a status code.  For error type status
  4589.          codes, the response MAY also contain a status message that provides a
  4590.          short textual description of the status. The status code is intended
  4591.          for use by automata, and the status message is intended for the human
  4592.          end user.  Since the status message is an OPTIONAL component of the
  4593.          operation response, an IPP application (i.e. a browser, GUI, print
  4594.          driver or gateway) is NOT REQUIRED to examine or display the status
  4595.          message.
  4596.  
  4597.          The prefix of the status keyword defines the class of response as
  4598.          follows:
  4599.  
  4600.            "informational" - Request received, continuing process
  4601.            "successful" - The action was successfully received, understood,
  4602.               and accepted
  4603.            "redirection" - Further action must be taken in order to complete
  4604.               the request
  4605.            "client-error" - The request contains bad syntax or cannot be
  4606.               fulfilled
  4607.            "server-error" - The server failed to fulfill an apparently valid
  4608.               request
  4609.  
  4610.          Since IPP status codes are type2 enums, they are extensible.  IPP
  4611.          applications are NOT REQUIRED to understand the meaning of all
  4612.          registered status codes, though such understanding is obviously
  4613.          desirable.  However, applications SHALL understand the class of any
  4614.          status code, as indicated by the prefix, and treat any unrecognized
  4615.          response as being equivalent to the first status code of that class,
  4616.          with the exception that an unrecognized response shall not be cached.
  4617.          For example, if an unrecognized status code of "client-error-foo-bar"
  4618.          is received by the client, it can safely assume that there was
  4619.          something wrong with its request and treat the response as if it had
  4620.          received a "client-error-bad-request" status code.  In such cases, IPP
  4621.          applications could present the OPTIONAL message (if present) to the
  4622.          end user since the message is likely to contain human readable
  4623.          information which will help to explain the unusual status.
  4624.  
  4625.  
  4626.          12.1 Status Codes (type2 keyword)
  4627.  
  4628.          Each status code is described below. Section 12.2 contains a table
  4629.          that indicates which status codes apply to which operations.
  4630.  
  4631.  
  4632.  
  4633.          deBry, Hastings, Herriot, Isaacson, Powell
  4634.                                        [Page 80]
  4635.                                Expires February xx, 1998
  4636.  
  4637.  
  4638.  
  4639.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  4640.  
  4641.  
  4642.          12.1.1 Informational
  4643.  
  4644.          This class of status code indicates a provisional response and is to
  4645.          be used for informational purposes only.
  4646.  
  4647.          There are no status codes defined in IPP 1.0 for this class of status
  4648.          code.
  4649.  
  4650.          12.1.2 Successful Status Codes
  4651.  
  4652.          This class of status code indicates that the client's request was
  4653.          successfully received, understood, and accepted.
  4654.  
  4655.          12.1.2.1 successful-ok (0x00)
  4656.  
  4657.          The request has succeeded.
  4658.  
  4659.          12.1.2.2 successful-ok-ignored-or-substituted-attributes (0x01)
  4660.  
  4661.          The request has succeeded, but since ignoring or substituting of
  4662.          values was requested ("ipp-attribute-fidelity" set to 'false' in the
  4663.          create request), some attributes were ignored or unsupported values
  4664.          were substituted with supported values in order to process the job
  4665.          without rejecting it.
  4666.  
  4667.          12.1.3 Redirection Status Codes
  4668.  
  4669.          This class of status code indicates that further action needs to be
  4670.          taken to fulfill the request.
  4671.  
  4672.          There are no status codes defined in IPP 1.0 for this class of status
  4673.          code.
  4674.  
  4675.          12.1.4 Client Error Status Codes
  4676.  
  4677.          This class of status code is intended for cases in which the client
  4678.          seems to have erred.  The server SHOULD return a message containing an
  4679.          explanation of the error situation and whether it is a temporary or
  4680.          permanent condition.
  4681.  
  4682.          12.1.4.1 client-error-bad-request (0x400)
  4683.  
  4684.          The request could not be understood by the server due to malformed
  4685.          syntax.  The IPP application SHOULD NOT repeat the request without
  4686.          modifications.
  4687.  
  4688.  
  4689.  
  4690.  
  4691.          deBry, Hastings, Herriot, Isaacson, Powell
  4692.                                        [Page 81]
  4693.                                Expires February xx, 1998
  4694.  
  4695.  
  4696.  
  4697.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  4698.  
  4699.  
  4700.          12.1.4.2 client-error-forbidden (0x401)
  4701.  
  4702.          The server understood the request, but is refusing to fulfill it.
  4703.          Additional authentication information or authorization credentials
  4704.          will not help and the request SHOULD NOT be repeated.  This status
  4705.          code is commonly used when the server does not wish to reveal exactly
  4706.          why the request has been refused or when no other response is
  4707.          applicable.
  4708.  
  4709.          12.1.4.3 client-error-not-authenticated (0x402)
  4710.  
  4711.          The request requires user authentication.  The IPP client may repeat
  4712.          the request with suitable authentication information. If the request
  4713.          already included authentication information, then this status code
  4714.          indicates that authorization has been refused for those credentials.
  4715.          If this response contains the same challenge as the prior response,
  4716.          and the user agent has already attempted authentication at least once,
  4717.          then the response message may contain relevant diagnostic information.
  4718.          This status codes reveals more information than "client-error-
  4719.          forbidden".
  4720.  
  4721.          12.1.4.4 client-error-not-authorized (0x403)
  4722.  
  4723.          The requester is not authorized to perform the request.  Additional
  4724.          authentication information or authorization credentials will not help
  4725.          and the request SHOULD be repeated.  This status code is used when the
  4726.          server wishes to reveal that the authentication information is
  4727.          understandable, however, the requester is explicitly not authorized to
  4728.          perform the request.  This status codes reveals more information than
  4729.          "client-error-forbidden".
  4730.  
  4731.          12.1.4.5 client-error-not-possible (0x404)
  4732.  
  4733.          This status code is used when the request is for something that can
  4734.          not happen.  For example, there might be a request to cancel a job
  4735.          that has already been aborted by the system.  The IPP client SHOULD
  4736.          NOT repeat the request.
  4737.  
  4738.          12.1.4.6 client-error-timeout (0x405)
  4739.  
  4740.          The client did not produce a request within the time that the server
  4741.          was prepared to wait.  For example, a client issued a Create-Job
  4742.          operation and then, after a long period of time, issued a Send-
  4743.          Document operation and this error status code was returned in response
  4744.          to the Send-Document request.  The server might have been forced to
  4745.          clean up resources that had been held for the waiting additional
  4746.          Documents.  The server was forced to close the Job since the client
  4747.  
  4748.  
  4749.          deBry, Hastings, Herriot, Isaacson, Powell
  4750.                                        [Page 82]
  4751.                                Expires February xx, 1998
  4752.  
  4753.  
  4754.  
  4755.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  4756.  
  4757.  
  4758.          took too long.  The client SHOULD NOT repeat the request without
  4759.          modifications.
  4760.  
  4761.          12.1.4.7 client-error-not-found (0x406)
  4762.  
  4763.          The server has not found anything matching the request URI.  No
  4764.          indication is given of whether the condition is temporary or
  4765.          permanent.  For example, a client with an old reference to a Job (a
  4766.          URI) tries to cancel the Job, however in the mean time the Job might
  4767.          have been completed and all record of it at the Printer has been
  4768.          deleted.  This status code, 'client-error-not-found' is returned
  4769.          indicating that the referenced Job can not be found.  This error
  4770.          status code is also used when a client supplies a URI as a reference
  4771.          to the document data in either a Print-URI or Send-URI operation
  4772.          however the document can not be found.
  4773.  
  4774.          In practice, an IPP application should avoid a not found situation by
  4775.          first querying and presenting a list of valid Printer URIs and Job
  4776.          URIs to the end-user.
  4777.  
  4778.          12.1.4.8 client-error-gone (0x407)
  4779.  
  4780.          The requested object is no longer available at the server and no
  4781.          forwarding address is known.  This condition should be considered
  4782.          permanent.  Clients with link editing capabilities should delete
  4783.          references to the request URI after user approval.  If the server does
  4784.          not know or has no facility to determine, whether or not the condition
  4785.          is permanent, the status code "client-error-not-found" should be used
  4786.          instead.
  4787.  
  4788.          This response is primarily intended to assist the task of web
  4789.          maintenance by notifying the recipient that the resource is
  4790.          intentionally unavailable and that the server owners desire that
  4791.          remote links to that resource be removed. It is not necessary to mark
  4792.          all permanently unavailable resources as "gone" or to keep the mark
  4793.          for any length of time -- that is left to the discretion of the server
  4794.          owner.
  4795.  
  4796.          12.1.4.9 client-error-request-entity-too-large (0x408)
  4797.  
  4798.          The server is refusing to process a request because the request entity
  4799.          is larger than the server is willing or able to process.  An IPP
  4800.          Printer returns this status code when it limits the size of print jobs
  4801.          and it receives a print job that exceeds that limit or when the
  4802.          operation parameters are so many that their encoding causes the
  4803.          request entity to exceed server capacity.
  4804.  
  4805.  
  4806.  
  4807.          deBry, Hastings, Herriot, Isaacson, Powell
  4808.                                        [Page 83]
  4809.                                Expires February xx, 1998
  4810.  
  4811.  
  4812.  
  4813.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  4814.  
  4815.  
  4816.          12.1.4.10 client-error-request-URI-too-long (0x409)
  4817.  
  4818.          The server is refusing to service the request because the request URI
  4819.          is longer than the server is willing to interpret.  This rare
  4820.          condition is only likely to occur when a client has improperly
  4821.          submitted a request with long query information (e.g. an IPP
  4822.          application allows an end-user to enter an invalid URI), when the
  4823.          client has descended into a URI "black hole" of redirection (e.g., a
  4824.          redirected URI prefix that points to a suffix of itself), or when the
  4825.          server is under attack by a client attempting to exploit security
  4826.          holes present in some servers using fixed-length buffers for reading
  4827.          or manipulating the Request-URI.
  4828.  
  4829.          12.1.4.11 client-error-unsupported-document-format (0x40A)
  4830.  
  4831.          The server is refusing to service the request because the print data
  4832.          is in a format, as specified in the "document-format" input attribute,
  4833.          that is not supported by the IPP Printer.
  4834.  
  4835.          12.1.4.12 client-error-attribute-not-supported (0x40B)
  4836.  
  4837.          For a Create-Job, Print-Job or Validate-Job operation, if the IPP
  4838.          Printer does not support one or more attributes or attribute values
  4839.          supplied in the request, the Printer shall return this status.  For
  4840.          example, if the request indicates 'iso-a4' media, but that media type
  4841.          is not supported by the Printer.  Or, if the client supplies an
  4842.          optional attribute and the attribute itself is not even supported by
  4843.          the Printer.  If "ipp-attribute-fidelity" it set to false, the Printer
  4844.          can ignore or substitute values for unsupported attributes and values
  4845.          rather than reject the request and return this status code. .
  4846.  
  4847.          For a Get-Jobs operation, if the IPP Printer does not support one of
  4848.          the requested attributes, the Printer shall return this status.
  4849.  
  4850.          In practice, an IPP application should avoid this situation by
  4851.          querying an IPP Printer for its valid attributes and values before
  4852.          performing an operation on the Printer.
  4853.  
  4854.          12.1.5 Server Error Status Codes
  4855.  
  4856.          This class of status codes indicates cases in which the server is
  4857.          aware that it has erred or is incapable of performing the request.
  4858.          The server SHOULD include a message containing an explanation of the
  4859.          error situation, and whether it is a temporary or permanent condition.
  4860.  
  4861.  
  4862.  
  4863.  
  4864.  
  4865.          deBry, Hastings, Herriot, Isaacson, Powell
  4866.                                        [Page 84]
  4867.                                Expires February xx, 1998
  4868.  
  4869.  
  4870.  
  4871.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  4872.  
  4873.  
  4874.          12.1.5.1 server-error-internal- error (0x500)
  4875.  
  4876.          The server encountered an unexpected condition that prevented it from
  4877.          fulfilling the request.  This error status code differs from "server-
  4878.          error-temporary-error" in that it implies a more permanent type of
  4879.          internal error.  It also differs from "server-error-device-error" in
  4880.          that it implies an unexpected condition (unlike a paper-jam or out-of-
  4881.          toner problem which is undesirable but expected).  This error status
  4882.          code indicates that probably some knowledgeable human intervention is
  4883.          required.
  4884.  
  4885.          12.1.5.2 server-error-operation-not-supported (0x501)
  4886.  
  4887.          The server does not support the functionality required to fulfill the
  4888.          request. This is the appropriate response when the server does not
  4889.          recognize an operation or is not capable of supporting it.
  4890.  
  4891.          12.1.5.3 server-error-service-unavailable (0x502)
  4892.  
  4893.          The server is currently unable to handle the request due to a
  4894.          temporary overloading or maintenance of the server.  The implication
  4895.          is that this is a temporary condition which will be alleviated after
  4896.          some delay. If known, the length of the delay may be indicated in the
  4897.          message.  If no delay is given, the IPP application should handle the
  4898.          response as it would for a "server-error-temporary-internal-error"
  4899.          response.  If the condition is more permanent, the error status codes
  4900.          "client-error-gone" or "client-error-not-found" could be used.
  4901.  
  4902.          12.1.5.4 server-error-version-not-supported (0x503)
  4903.  
  4904.          The server does not support, or refuses to support, the IPP protocol
  4905.          version that was used in the request message.  The server is
  4906.          indicating that it is unable or unwilling to complete the request
  4907.          using the same version as supplied in the request other than with this
  4908.          error message. The response should contain a Message describing why
  4909.          that version is not supported and what other versions are supported by
  4910.          that server.
  4911.  
  4912.          A conforming IPP client shall specify the valid version (IPP 1.0)on
  4913.          each request.  A conforming IPP server (IPP 1.0) SHALL NOT return this
  4914.          status code to a conforming IPP 1.0 client.  An IPP server shall
  4915.          return this status code to a non-conforming IPP client.
  4916.  
  4917.          12.1.5.5 server-error-device-error (0x504)
  4918.  
  4919.          A printer error, such as a paper jam, occurs while the IPP Printer
  4920.          processes a Print or Send operation.  The response contains the true
  4921.          Job Status (the values of the "job-state" and "job-state-reasons"
  4922.  
  4923.          deBry, Hastings, Herriot, Isaacson, Powell
  4924.                                        [Page 85]
  4925.                                Expires February xx, 1998
  4926.  
  4927.  
  4928.  
  4929.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  4930.  
  4931.  
  4932.          attributes).  Additional information can be returned in the optional
  4933.          "job-state-message" attribute value or in the OPTIONAL status code
  4934.          message that describes the error in more detail.  This error status
  4935.          code MAY be returned even though the operation was successful (the Job
  4936.          was submitted and is now in the 'pending' state waiting to be
  4937.          processed).
  4938.  
  4939.          ISSUE: This doesn't seem like a good error.  If the create request
  4940.          succeeded, an OK should be returned. The job-status of printer-stopped
  4941.          gives information about the printer being stopped.
  4942.  
  4943.          12.1.5.6 server-error-temporary-error (0x505)
  4944.  
  4945.          A temporary error such as a buffer full write error, a memory overflow
  4946.          (i.e. the document data exceeds the memory of the Printer), or a disk
  4947.          full condition, occurs while the IPP Printer processes an operation.
  4948.          The client MAY try the unmodified request again at some later point in
  4949.          time with an expectation that the temporary internal error condition
  4950.          may have been cleared.
  4951.  
  4952.  
  4953.  
  4954.  
  4955.  
  4956.  
  4957.  
  4958.  
  4959.  
  4960.  
  4961.  
  4962.  
  4963.  
  4964.  
  4965.  
  4966.  
  4967.  
  4968.  
  4969.  
  4970.  
  4971.  
  4972.  
  4973.  
  4974.  
  4975.  
  4976.  
  4977.  
  4978.  
  4979.  
  4980.  
  4981.          deBry, Hastings, Herriot, Isaacson, Powell
  4982.                                        [Page 86]
  4983.                                Expires February xx, 1998
  4984.  
  4985.  
  4986.  
  4987.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  4988.  
  4989.  
  4990.          12.2 Status Keywords for IPP Operations
  4991.  
  4992.          PJ = Print-Job, PU = Print-URI, CJ = Create-Job, SD = Send-Document
  4993.          SU = Send-URI, V = Validate-Job, GA = Get-Attributes, GJ = Get-Jobs
  4994.          C = Cancel-Job
  4995.  
  4996.                                                         IPP Operations
  4997.          IPP Status Keyword                       PJ PU CJ SD SU V GA GJ C
  4998.          ------------------                       -- -- -- -- -- - -- -- -
  4999.          successful-OK                            x  x  x  x  x  x x  x x
  5000.          client-error-bad-request                 x  x  x  x  x  x x  x x
  5001.          client-error-not-authenticated           x  x  x  x  x  x x  x x
  5002.          client-error-not-authorized              x  x  x  x  x  x x  x x
  5003.          client-error-forbidden                   x  x  x  x  x  x x  x x
  5004.          client-error-not-possible                x  x  x  x  x  x x  x x
  5005.          client-error-not-found                   x  x  x  x  x  x x  x x
  5006.          client-error-timeout                     x  x  x  x  x  x x  x x
  5007.          client-error-gone                        x  x  x  x  x  x x  x x
  5008.          client-error-request-entity-too-large    x  X  X  X  X  X X  X X
  5009.          client-error-request-URI-too-long        x  x  x  x  x  x x  x x
  5010.          client-error-unsupported-document-format x  x     x  x
  5011.          client-error-attribute-value-not-        x  x  x        x
  5012.               supported
  5013.          server-error-internal-error              x  x  x  x  x  x x  x x
  5014.          server-error-service-unavailable         x  x  x  x  x  x x  x x
  5015.          server-error-timeout                     x  x  x  x  x  x x  x x
  5016.          server-error-HTTP-version-not-supported  x  x  x  x  x  x x  x x
  5017.          server-error-IPP-version-not-supported   x  x  x  x  x  x x  x x
  5018.          server-error-device-error                x  x  x  x  x
  5019.          server-error-temporary-error             x  x  x  x  x
  5020.  
  5021.  
  5022.  
  5023.          13. APPENDIX C: "document-format" values
  5024.  
  5025.          The Printer Working Group has registered a set of type2 enum values
  5026.          with IANA as part of the IETF Printer MIB [1] project.  The symbols
  5027.          for each value assigned by the PWG starts with the four letters:
  5028.          "lang", in order to follow SNMP ASN.1 rules that all enum symbols
  5029.          SHALL start with a lower case letter.  MIME types corresponding to the
  5030.          integer enum value is used as the value the IPP "document-format"
  5031.          attribute.
  5032.  
  5033.          This APPENDIX lists the document formats that are currently registered
  5034.          with IANA.
  5035.  
  5036.          The standard values registered as of the data of this document are:
  5037.  
  5038.  
  5039.          deBry, Hastings, Herriot, Isaacson, Powell
  5040.                                        [Page 87]
  5041.                                Expires February xx, 1998
  5042.  
  5043.  
  5044.  
  5045.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  5046.  
  5047.  
  5048.            'other': 1 -
  5049.            'langPCL': 3 - PCL.  Starting with PCL version 5, HP-GL/2 is
  5050.               included as part of the PCL language.  PCL and HP-GL/2 are
  5051.               registered trademarks of Hewlett-Packard Company.
  5052.            'langHPGL': 4 - Hewlett-Packard Graphics Language.  HP-GL is a
  5053.               registered trademark of Hewlett-Packard Company.
  5054.            'langPJL': 5 - Peripheral Job Language.  Appears in the data stream
  5055.               between data intended for a page description language.  Hewlett-
  5056.               Packard Co.
  5057.            'langPS': 6 - PostScript Language (tm) Postscript - a trademark of
  5058.               Adobe Systems Incorporated which may be registered in certain
  5059.               jurisdictions
  5060.            'langIPDS': 7 - Intelligent Printer Data Stream Bi-directional
  5061.               print data stream for documents consisting of data objects (text,
  5062.               image, graphics, bar codes), resources (fonts, overlays) and
  5063.               page, form and finishing instructions.  Facilitates system level
  5064.               device control, document tracking and error recovery throughout
  5065.               the print process.  Pennant Systems, IBM
  5066.            'langPPDS': 8 - IBM Personal Printer Data Stream.  Originally
  5067.               called IBM ASCII, the name was changed to PPDS when the Laser
  5068.               Printer was introduced in 1989.  Lexmark International, Inc.
  5069.            'langEscapeP': 9 - Epson Corp.
  5070.            'langEpson': 10 -
  5071.            'langDDIF': 11 - Digital Document Interchange Format Digital
  5072.               Equipment Corp., Maynard MA
  5073.            'langInterpress': 12 - Xerox Corp.
  5074.            'langISO6429': 13 - ISO 6429.  Control functions for Coded
  5075.               Character Sets (has ASCII control characters, plus additional
  5076.               controls for character imaging devices.) ISO Standard, Geneva,
  5077.               Switzerland
  5078.            'langLineData': 14 - line-data: Lines of data as separate ASCII or
  5079.               EBCDIC records and containing no control functions (no CR, LF,
  5080.               HT, FF, etc.).  For use with traditional line printers.  May use
  5081.               CR and/or LF to delimit lines, instead of records.  See ISO 10175
  5082.               Document Printing Application (DPA) ISO standard, Geneva,
  5083.               Switzerland
  5084.            'langMODCA': 15 - Mixed Object Document Content Architecture
  5085.               Definitions that allow the composition, interchange, and
  5086.               presentation of final form documents as a collection of data
  5087.               objects (text, image, graphics, bar codes), resources (fonts,
  5088.               overlays) and page, form and finishing instructions.  Pennant
  5089.               Systems, IBM
  5090.            'langREGIS': 16 - Remote Graphics Instruction Set, Digital
  5091.               Equipment Corp., Maynard MA
  5092.            'SCS': 17 - SNA Character String Bi-directional print data stream
  5093.               for SNA LU-1 mode of communications IBM
  5094.            'langSPDL': 18 - ISO 10180 Standard Page Description Language ISO
  5095.               Standard
  5096.  
  5097.          deBry, Hastings, Herriot, Isaacson, Powell
  5098.                                        [Page 88]
  5099.                                Expires February xx, 1998
  5100.  
  5101.  
  5102.  
  5103.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  5104.  
  5105.  
  5106.            'langTEK4014': 19 - Tektronix Corp.
  5107.            'langPDS': 20 -
  5108.            'langIGP': 21 - Printronix Corp.
  5109.            'langCodeV': 22 - Magnum Code-V, Image and printer control language
  5110.               used to control impact/dot- matrix printers.  QMS, Inc., Mobile
  5111.               AL
  5112.            'langDSCDSE': 23 - DSC-DSE: Data Stream Compatible and Emulation
  5113.               Bi-directional print data stream for non-SNA (DSC) and SNA LU-3
  5114.               3270 controller (DSE) communications IBM
  5115.            'langWPS': 24 - Windows Printing System, Resource based
  5116.               command/data stream used by Microsoft At Work Peripherals.
  5117.               Developed by the Microsoft Corporation.
  5118.            'langLN03': 25 - Early DEC-PPL3, Digital Equipment Corp.
  5119.            'langCCITT': 26 -
  5120.            'langQUIC': 27 - QUIC (Quality Information Code), Page Description
  5121.               Language for laser printers.  Included graphics, printer control
  5122.               capability and emulation of other well- known printer .  QMS,
  5123.               Inc.
  5124.            'langCPAP': 28 - Common Printer Access Protocol Digital Equipment
  5125.               Corp
  5126.            'langDecPPL': 29 - Digital ANSI-Compliant Printing Protocol (DEC-
  5127.               PPL) Digital Equipment Corp
  5128.            'langSimpleText': 30 - simple-text: character coded data, including
  5129.               NUL, CR , LF, HT, and FF control characters.  See ISO 10175
  5130.               Document Printing Application (DPA) ISO standard, Geneva,
  5131.               Switzerlan
  5132.            'langNPAP': 31 - Network Printer Alliance Protocol (NPAP).  This
  5133.               protocol has been superseded by the IEEE 1284.1 TIPSI standard.
  5134.               (ref.  LangTIPSI(49)).
  5135.            'langDOC': 32 - Document Option Commands, Appears in the data
  5136.               stream between data intended for a page description .  QMS, Inc
  5137.            'langimPress': 33 - imPRESS, Page description language originally
  5138.               developed for the ImageServer line of systems.  A binary language
  5139.               providing representations for text, simple graphics (rules,
  5140.               lines, conic sections), and some large forms (simple bit-map and
  5141.               CCITT group 3/4 encoded).The language was intended to be sent
  5142.               over an 8-bit channel and supported early document preparation
  5143.               languages (e.g.  TeX and TROFF).  QMS, Inc.
  5144.            'langPinwriter': 34 - 24 wire dot matrix printer for USA, Europe,
  5145.               and Asia except Japan.  More widely used in Germany, and some
  5146.               Asian countries than in US.  NEC
  5147.            'langNPDL': 35 - Page printer for Japanese market.  NEC
  5148.            'langNEC201PL': 36 - Serial printer language used in the Japanese
  5149.               market.  NEC
  5150.            'langAutomatic': 37 - Automatic PDL sensing.  Automatic sensing of
  5151.               the interpreter language family by the printer examining the
  5152.               document content.  Which actual interpreter language families are
  5153.               sensed depends on the printer implementation.
  5154.  
  5155.          deBry, Hastings, Herriot, Isaacson, Powell
  5156.                                        [Page 89]
  5157.                                Expires February xx, 1998
  5158.  
  5159.  
  5160.  
  5161.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  5162.  
  5163.  
  5164.            'langPages': 38 - Page printer Advanced Graphic Escape Set IBM
  5165.               Japan
  5166.            'langLIPS': 39 - LBP Image Processing System
  5167.            'langTIFF': 40 - Tagged Image File Format (Aldus)
  5168.            'langDiagnostic': 41 - A hex dump of the input to the interpreter
  5169.            'langPSPrinter': 42 - The PostScript Language used for control
  5170.               (with any PDLs) Adobe Systems Incorporated
  5171.            'langCaPSL': 43 - Canon Print Systems Language
  5172.            'langEXCL': 44 - Extended Command Language Talaris Systems Inc
  5173.            'langLCDS': 45 - Line Conditioned Data Stream Xerox Corporatio
  5174.            'langXES': 46 - Xerox Escape Sequences Xerox Corporation
  5175.            'langPCLXL': 47 - Printer Control Language.  Extended language
  5176.               features for printing, and printer control.  Technical reference
  5177.               manual # TBD.  Hewlett-Packard Co.
  5178.            'langART': 48 - Advanced Rendering Tools (ART).  Page Description
  5179.               language originally developed for the Laser Press printers.
  5180.               Tehnical reference manual: "ART IV Reference Manual", No F33M.
  5181.               Fuji Xerox Co., Ltd.
  5182.            'langTIPSI': 49 - Transport Independent Printer System Interface
  5183.               (ref.  IEEE Std.  1284.1)
  5184.            'langPrescribe': 50 - Page description and printer control
  5185.               language.  It can be described with ordinary ASCII characters.
  5186.               Technical reference manual: "PRESCRIBE II Programming Manual"
  5187.            'langLinePrinter': 51 - A simple-text character stream which
  5188.               supports the control codes LF, VT, FF and CR plus Centronics or
  5189.               Dataproducts Vertical Format Unit (VFU).  language is commonly
  5190.               used on many older model line and matrix printers.
  5191.            'langIDP': 52 - Imaging Device Protocol Apple Computer.
  5192.            'langXJCL': 53 - Xerox Corp.
  5193.  
  5194.  
  5195.          ISSUE: What are we going to do with 'langAutomatic (37)'?.
  5196.  
  5197.  
  5198.          14. APPENDIX D:  "media" keyword values
  5199.  
  5200.          Standard keyword values are taken from several sources.
  5201.  
  5202.          Standard values are defined (taken from ISO DPA[5] and the Printer
  5203.          MIB[1]):
  5204.  
  5205.            'default': The default medium for the output device
  5206.            'iso-a4-white': Specifies the ISO A4 white medium
  5207.            'iso-a4-colored': Specifies the ISO A4 coloured medium
  5208.            'iso-a4-transparent' Specifies the ISO A4 transparent medium
  5209.            'iso-a3-white': Specifies the ISO A3 white medium
  5210.            'iso-a3-colored': Specifies the ISO A3 coloured medium
  5211.            'iso-a5-white': Specifies the ISO A5 white medium
  5212.  
  5213.          deBry, Hastings, Herriot, Isaacson, Powell
  5214.                                        [Page 90]
  5215.                                Expires February xx, 1998
  5216.  
  5217.  
  5218.  
  5219.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  5220.  
  5221.  
  5222.            'iso-a5-colored': Specifies the ISO A5 coloured medium
  5223.            'iso-b4-white': Specifies the ISO B4 white medium
  5224.            'iso-b4-colored': Specifies the ISO B4 coloured medium
  5225.            'iso-b5-white': Specifies the ISO B5 white medium
  5226.            'iso-b5-colored': Specifies the ISO B5 coloured medium
  5227.            'jis-b4-white': Specifies the JIS B4 white medium
  5228.            'jis-b4-colored': Specifies the JIS B4 coloured medium
  5229.            'jis-b5-white': Specifies the JIS B5 white medium
  5230.            'jis-b5-colored': Specifies the JIS B5 coloured medium
  5231.  
  5232.  
  5233.          The following standard values are defined for North American media:
  5234.  
  5235.            'na-letter-white': Specifies the North American letter white medium
  5236.            'na-letter-colored': Specifies the North American letter coloured
  5237.               medium
  5238.            'na-letter-transparent': Specifies the North American letter
  5239.               transparent medium
  5240.            'na-legal-white': Specifies the North American legal white medium
  5241.            'na-legal-colored': Specifies the North American legal coloured
  5242.               medium
  5243.  
  5244.  
  5245.          The following standard values are defined for envelopes:
  5246.  
  5247.            'iso-b4-envelope': Specifies the ISO B4 envelope medium
  5248.            'iso-b5-envelope': Specifies the ISO B5 envelope medium
  5249.            'iso-c3-envelope': Specifies the ISO C3 envelope medium
  5250.            'iso-c4-envelope': Specifies the ISO C4 envelope medium
  5251.            'iso-c5-envelope': Specifies the ISO C5 envelope medium
  5252.            'iso-c6-envelope': Specifies the ISO C6 envelope medium
  5253.            'iso-designated-long-envelope': Specifies the ISO Designated Long
  5254.               envelope medium
  5255.            'na-10x13-envelope': Specifies the North American 10x13 envelope
  5256.               medium
  5257.            'na-9x12-envelope': Specifies the North American 9x12 envelope
  5258.               medium
  5259.            'monarch-envelope': Specifies the Monarch envelope
  5260.            'na-number-10-envelope': Specifies the North American number 10
  5261.               business envelope medium
  5262.            'na-7x9-envelope': Specifies the North American 7x9 inch envelope
  5263.            'na-9x11-envelope': Specifies the North American 9x11 inch envelope
  5264.            'na-10x14-envelope': Specifies the North American 10x14 inch
  5265.               envelope
  5266.            'na-number-9-envelope': Specifies the North American number 9
  5267.               business envelope
  5268.            'na-6x9-envelope': Specifies the North American 6x9 inch envelope
  5269.  
  5270.  
  5271.          deBry, Hastings, Herriot, Isaacson, Powell
  5272.                                        [Page 91]
  5273.                                Expires February xx, 1998
  5274.  
  5275.  
  5276.  
  5277.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  5278.  
  5279.  
  5280.            'na-10x15-envelope': Specifies the North American 10x15 inch
  5281.               envelope
  5282.  
  5283.  
  5284.          The following standard values are defined for the less commonly used
  5285.          media (white-only):
  5286.  
  5287.            'executive-white': Specifies the white executive medium
  5288.            'folio-white': Specifies the folio white medium
  5289.            'invoice-white': Specifies the white invoice medium
  5290.            'ledger-white': Specifies the white ledger medium
  5291.            'quarto-white': Specified the white quarto medium
  5292.            'iso-a0-white': Specifies the ISO A0 white medium
  5293.            'iso-a1-white': Specifies the ISO A1 white medium
  5294.            'iso-a2-white': Specifies the ISO A2 white medium
  5295.            'iso-a6-white': Specifies the ISO A6 white medium
  5296.            'iso-a7-white': Specifies the ISO A7 white medium
  5297.            'iso-a8-white': Specifies the ISO A8 white medium
  5298.            'iso-a9-white': Specifies the ISO A9 white medium
  5299.            'iso-10-white': Specifies the ISO A10 white medium
  5300.            'iso-b0-white': Specifies the ISO B0 white medium
  5301.            'iso-b1-white': Specifies the ISO B1 white medium
  5302.            'iso-b2-white': Specifies the ISO B2 white medium
  5303.            'iso-b3-white': Specifies the ISO B3 white medium
  5304.            'iso-b6-white': Specifies the ISO B6 white medium
  5305.            'iso-b7-white': Specifies the ISO B7 white medium
  5306.            'iso-b8-white': Specifies the ISO B8 white medium
  5307.            'iso-b9-white': Specifies the ISO B9 white medium
  5308.            'iso-b10-white': Specifies the ISO B10 white medium
  5309.            'jis-b0-white': Specifies the JIS B0 white medium
  5310.            'jis-b1-white': Specifies the JIS B1 white medium
  5311.            'jis-b2-white': Specifies the JIS B2 white medium
  5312.            'jis-b3-white': Specifies the JIS B3 white medium
  5313.            'jis-b6-white': Specifies the JIS B6 white medium
  5314.            'jis-b7-white': Specifies the JIS B7 white medium
  5315.            'jis-b8-white': Specifies the JIS B8 white medium
  5316.            'jis-b9-white': Specifies the JIS B9 white medium
  5317.            'jis-b10-white': Specifies the JIS B10 white medium
  5318.  
  5319.  
  5320.          The following standard values are defined for engineering media:
  5321.  
  5322.            'a': Specifies the engineering A size medium
  5323.            'b': Specifies the engineering B size medium
  5324.            'c': Specifies the engineering C size medium
  5325.            'd': Specifies the engineering D size medium
  5326.            'e': Specifies the engineering E size medium
  5327.  
  5328.  
  5329.          deBry, Hastings, Herriot, Isaacson, Powell
  5330.                                        [Page 92]
  5331.                                Expires February xx, 1998
  5332.  
  5333.  
  5334.  
  5335.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  5336.  
  5337.  
  5338.          The following standard values are defined for input-trays (from ISO
  5339.          DPA and the Printer MIB):
  5340.  
  5341.            'top': The top input tray in the printer.
  5342.            'middle': The middle input tray in the printer.
  5343.            'bottom': The bottom input tray in the printer.
  5344.            'envelope': The envelope input tray in the printer.
  5345.            'manual': The manual feed input tray in the printer.
  5346.            'large-capacity': The large capacity input tray in the printer.
  5347.            'main': The main input tray
  5348.            'side': The side input tray
  5349.  
  5350.  
  5351.          The following standard values are defined for media sizes (from ISO
  5352.          DPA):
  5353.  
  5354.            'iso-a0': Specifies the ISO A0 size: 841 mm by 1189 mm as defined
  5355.               in ISO 216
  5356.            'iso-a1': Specifies the ISO A1 size: 594 mm by 841 mm as defined in
  5357.               ISO 216
  5358.            'iso-a2': Specifies the ISO A2 size: 420 mm by 594 mm as defined in
  5359.               ISO 216
  5360.            'iso-a3': Specifies the ISO A3 size: 297 mm by 420 mm as defined in
  5361.               ISO 216
  5362.            'iso-a4': Specifies the ISO A4 size: 210 mm by 297 mm as defined in
  5363.               ISO 216
  5364.            'iso-a5': Specifies the ISO A5 size: 148 mm by 210 mm as defined in
  5365.               ISO 216
  5366.            'iso-a6': Specifies the ISO A6 size: 105 mm by 148 mm as defined in
  5367.               ISO 216
  5368.            'iso-a7': Specifies the ISO A7 size: 74 mm by 105 mm as defined in
  5369.               ISO 216
  5370.            'iso-a8': Specifies the ISO A8 size: 52 mm by 74 mm as defined in
  5371.               ISO 216
  5372.            'iso-a9': Specifies the ISO A9 size: 37 mm by 52 mm as defined in
  5373.               ISO 216
  5374.            'iso-a10': Specifies the ISO A10 size: 26 mm by 37 mm as defined in
  5375.               ISO 216
  5376.            'iso-b0': Specifies the ISO B0 size: 1000 mm by 1414 mm as defined
  5377.               in ISO 216
  5378.            'iso-b1': Specifies the ISO B1 size: 707 mm by 1000 mm as defined
  5379.               in ISO 216
  5380.            'iso-b2': Specifies the ISO B2 size: 500 mm by 707 mm as defined in
  5381.               ISO 216
  5382.            'iso-b3': Specifies the ISO B3 size: 353 mm by 500 mm as defined in
  5383.               ISO 216
  5384.            'iso-b4': Specifies the ISO B4 size: 250 mm by 353 mm as defined in
  5385.               ISO 216
  5386.  
  5387.          deBry, Hastings, Herriot, Isaacson, Powell
  5388.                                        [Page 93]
  5389.                                Expires February xx, 1998
  5390.  
  5391.  
  5392.  
  5393.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  5394.  
  5395.  
  5396.            'iso-b5': Specifies the ISO B5 size: 176 mm by 250 mm as defined in
  5397.               ISO 216
  5398.            'iso-b6': Specifies the ISO B6 size: 125 mm by 176 mm as defined in
  5399.               ISO 216
  5400.            'iso-b7': Specifies the ISO B7 size: 88 mm by 125 mm as defined in
  5401.               ISO 216
  5402.            'iso-b8': Specifies the ISO B8 size: 62 mm by 88 mm as defined in
  5403.               ISO 216
  5404.            'iso-b9': Specifies the ISO B9 size: 44 mm by 62 mm as defined in
  5405.               ISO 216
  5406.            'iso-b10': Specifies the ISO B10 size: 31 mm by 44 mm as defined in
  5407.               ISO 216
  5408.            'na-letter': Specifies the North American letter size: 8.5 inches
  5409.               by 11 inches
  5410.            'na-legal': Specifies the North American legal size: 8.5 inches by
  5411.               14 inches
  5412.            'executive': Specifies the executive size (7.25 X 10.5 in)
  5413.            'folio': Specifies the folio size (8.5 X 13 in)
  5414.            'invoice': Specifies the invoice size (5.5 X 8.5 in)
  5415.            'ledger': Specifies the ledger size (11 X 17 in)
  5416.            'quarto': Specifies the quarto size (8.5 X 10.83 in)
  5417.            'iso-c3': Specifies the ISO C3 size: 324 mm by 458 mm as defined in
  5418.               ISO 269
  5419.            'iso-c4': Specifies the ISO C4 size: 229 mm by 324 mm as defined in
  5420.               ISO 269
  5421.            'iso-c5': Specifies the ISO C5 size: 162 mm by 229 mm as defined in
  5422.               ISO 269
  5423.            'iso-c6': Specifies the ISO C6 size: 114 mm by 162 mm as defined in
  5424.               ISO 269
  5425.            'iso-designated-long': Specifies the ISO Designated Long size: 110
  5426.               mm by 220 mm as defined in ISO 269
  5427.            'na-10x13-envelope': Specifies the North American 10x13 size: 10
  5428.               inches by 13 inches
  5429.            'na-9x12-envelope': Specifies the North American 9x12 size: 9
  5430.               inches by 12 inches
  5431.            'na-number-10-envelope': Specifies the North American number 10
  5432.               business envelope size: 4.125 inches by 9.5 inches
  5433.            'na-7x9-envelope': Specifies the North American 7x9 inch envelope
  5434.               size
  5435.            'na-9x11-envelope': Specifies the North American 9x11 inch envelope
  5436.               size
  5437.            'na-10x14-envelope': Specifies the North American 10x14 inch
  5438.               envelope size
  5439.            'na-number-9-envelope': Specifies the North American number 9
  5440.               business envelope size
  5441.            'na-6x9-envelope': Specifies the North American 6x9 envelope size
  5442.            'na-10x15-envelope': Specifies the North American 10x15 envelope
  5443.               size
  5444.  
  5445.          deBry, Hastings, Herriot, Isaacson, Powell
  5446.                                        [Page 94]
  5447.                                Expires February xx, 1998
  5448.  
  5449.  
  5450.  
  5451.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  5452.  
  5453.  
  5454.            'monarch-envelope': Specifies the Monarch envelope size (3.87 x 7.5
  5455.               in)
  5456.            'jis-b0': Specifies the JIS B0 size: 1030mm x 1456mm
  5457.            'jis-b1': Specifies the JIS B1 size: 728mm x 1030mm
  5458.            'jis-b2': Specifies the JIS B2 size: 515mm x 728mm
  5459.            'jis-b3': Specifies the JIS B3 size: 364mm x 515mm
  5460.            'jis-b4': Specifies the JIS B4 size: 257mm x 364mm
  5461.            'jis-b5': Specifies the JIS B5 size: 182mm x 257mm
  5462.            'jis-b6': Specifies the JIS B6 size: 128mm x 182mm
  5463.            'jis-b7': Specifies the JIS B7 size: 91mm x 128mm
  5464.            'jis-b8': Specifies the JIS B8 size: 64mm x 91mm
  5465.            'jis-b9': Specifies the JIS B9 size: 45mm x 64mm
  5466.            'jis-b10': Specifies the JIS B10 size: 32mm x 45mm
  5467.  
  5468.  
  5469.  
  5470.          15. APPENDIX E: Processing IPP Attributes
  5471.  
  5472.          When submitting a print job to an IPP Printer, the IPP model allows a
  5473.          client to supply operation and Job Template attributes along with the
  5474.          print data.  These Job Template attributes in the create request
  5475.          affect the rendering, production and finishing of the documents in the
  5476.          job.  Similar types of instructions may also be contained in the
  5477.          document to be printed, that is, embedded within the print data
  5478.          itself.  In addition, the Printer has a set of attributes that
  5479.          describe what rendering and finishing options which are supported by
  5480.          that Printer.  This model, which allows for flexibility and power,
  5481.          also introduces the potential that at job submission time, these
  5482.          client-supplied attributes may conflict with either:
  5483.  
  5484.            - what the implementation is capable of realizing (i.e., what the
  5485.               Printer supports), as well as
  5486.            - the instructions embedded within the print data itself.
  5487.  
  5488.          The following sections describe how these two types of conflicts are
  5489.          handled in the IPP model.
  5490.  
  5491.  
  5492.          15.1 Fidelity
  5493.  
  5494.          If there is a conflict between what the client requests and what a
  5495.          Printer supports, the client may request one of two possible conflict
  5496.          handling mechanisms:
  5497.  
  5498.            1) either reject the job since the job can not be processed exactly
  5499.               as specified, or
  5500.            2) allow the Printer to make any changes necessary to proceed with
  5501.               processing the Job the best it can.
  5502.  
  5503.          deBry, Hastings, Herriot, Isaacson, Powell
  5504.                                        [Page 95]
  5505.                                Expires February xx, 1998
  5506.  
  5507.  
  5508.  
  5509.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  5510.  
  5511.  
  5512.  
  5513.          In the first case the client is indicating to the Printer: "Print the
  5514.          job exactly as specified with no exceptions, and if that can't be
  5515.          done, don't even bother printing the job at all." In the second case,
  5516.          the client is indicating to the Printer: "It is more important to make
  5517.          sure the job is printed rather than be processed exactly as specified;
  5518.          just make sure the job is printed even if client supplied attributes
  5519.          need to be changed or ignored."
  5520.  
  5521.          The IPP model accounts for this situation by introducing an "ipp-
  5522.          attribute-fidelity" attribute.
  5523.  
  5524.          In a create request, "ipp-attribute-fidelity" is a boolean attribute
  5525.          that is OPTIONALLY supplied by the client.  The value 'true' indicates
  5526.          that total fidelity to client supplied attributes and values is
  5527.          required.  The client is requesting that the Job be printed exactly as
  5528.          specified, and if that is not possible then the job must be rejected
  5529.          rather than processed incorrectly.  The value 'false' indicates that a
  5530.          reasonable attempt to print the Job is acceptable.  If a Printer does
  5531.          not support some of the client supplied Job Template attributes or
  5532.          values, the Printer may ignore them or substitute any supported value
  5533.          for unsupported values.  The Printer may choose to substitute the
  5534.          default value associated with that attribute, or use some other
  5535.          supported value that is similar to the unsupported requested value.
  5536.          For example, if a client supplies a "media" value of 'na-letter', the
  5537.          Printer may choose to substitute 'iso-a4' rather than a default value
  5538.          of 'envelope'.  Since this is an OPTIONAL attribute, if the client
  5539.          does not supply a value, the Printer assumes a value of 'false'.
  5540.  
  5541.          Each Printer implementation MUST support both types of "fidelty"
  5542.          printing (that is whether the client supplies a value of 'true' or
  5543.          'false').  This is possible across all types of implementations, since
  5544.          there is a broad range of acceptable actions when substituting or
  5545.          ignoring unsupported attributes and values.  Also, even if the client
  5546.          supplies a value of 'false', a Printer might still reject the Job for
  5547.          any reason including an unsupported attributes and/or values.  In the
  5548.          other case, where the client requests a value of 'true', it is
  5549.          expected that the Printer support this type of printing since the
  5550.          Printer is already indicating functional support corresponding to all
  5551.          advertised supported attributes and values.
  5552.  
  5553.          Since a client can always query a Printer to find out exactly what is
  5554.          and is not supported, "ipp-attribute-fidelity" set to 'false' is
  5555.          useful when:
  5556.  
  5557.            1) The End-User uses a command line interface to request attributes
  5558.               that might not be supported.
  5559.  
  5560.  
  5561.          deBry, Hastings, Herriot, Isaacson, Powell
  5562.                                        [Page 96]
  5563.                                Expires February xx, 1998
  5564.  
  5565.  
  5566.  
  5567.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  5568.  
  5569.  
  5570.            2) In a GUI context, if the End User expects the job might be moved
  5571.               to another printer and prefers a sub-optimal result to nothing at
  5572.               all.
  5573.            3) The End User just wants something reasonable in lieu of nothing
  5574.               at all.
  5575.  
  5576.  
  5577.          15.2 Page Description Language (PDL) Override
  5578.  
  5579.          If there is a conflict between the value of an IPP Job Template
  5580.          attribute and a corresponding instruction in the print data, it is
  5581.          desirable that the value of the IPP attribute take precedence over the
  5582.          document instruction.  Consider the case where a previously formatted
  5583.          file of print data is sent to an IPP Printer.  In this case, if the
  5584.          client supplies any attributes at job submission time, the client
  5585.          desires that those attributes override the embedded instructions.
  5586.          Consider the case were a previously formatted document has embedded in
  5587.          it commands to load 'iso-a4' media.  However, the document is passed
  5588.          to an end user that only has access to a printer with 'na-letter'
  5589.          media loaded.  That end user most likely wants to submit that document
  5590.          to an that IPP Printer with the "media" Job Template attribute set to
  5591.          'na-letter'.  The job submission attribute should take precedence over
  5592.          the embedded PDL instruction.  However, until companies that supply
  5593.          interpreters for print data allow a way for external IPP attributes to
  5594.          take precedence over embedded job production instructions, a Printer
  5595.          might not be able to support the semantics that IPP attributes
  5596.          override the embedded instructions.
  5597.  
  5598.          The IPP model accounts for this situation by introducing a "pdl-
  5599.          override-supported" attribute.
  5600.  
  5601.          This attribute takes on the following values:
  5602.  
  5603.            - 'attempted': This value indicates that the Printer attempts to
  5604.               make sure that IPP attribute values take precedence over embedded
  5605.               instructions in the Print data, however there is no guarantee.
  5606.            - 'not-attempted': This value indicates that the Printer makes not
  5607.               attempt to ensure that IPP attribute values take precedence over
  5608.               embedded instructions in the print data.
  5609.  
  5610.          This is a MANDATORY Printer attribute.
  5611.  
  5612.          At job processing time, an implementation that supports the value of
  5613.          'attempted' might try to do one of several different actions:
  5614.  
  5615.            1) generate an output device specific command sequence to realize
  5616.               the feature represented by the IPP attribute value
  5617.  
  5618.  
  5619.          deBry, Hastings, Herriot, Isaacson, Powell
  5620.                                        [Page 97]
  5621.                                Expires February xx, 1998
  5622.  
  5623.  
  5624.  
  5625.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  5626.  
  5627.  
  5628.            2) parse the print data itself and replace the conflicting embedded
  5629.               instruction with a new embedded instruction that matches the
  5630.               intent of the IPP attribute value
  5631.            3) indicate to the Printer that external supplied attributes take
  5632.               precedence over embedded instructions and then pass the external
  5633.               IPP attribute values to the print data interpreter
  5634.            4) anything else that allows for the semantics that IPP attributes
  5635.               override embedded print data instructions.
  5636.  
  5637.          Since 'attempted' does not offer any type of guarantee, even though a
  5638.          given implementation might not do a very "good" job of attempting to
  5639.          ensure that IPP attributes take a higher precedence over instructions
  5640.          embedded in the print data, it would still be a conforming
  5641.          implementation.
  5642.  
  5643.          Note:  The "ipp-attribute-fidelity" attribute applies to the Printer's
  5644.          ability to either accept or reject other unsupported attributes.  In
  5645.          other words, if "ipp-attribute-fidelity" is set to 'true', a Job is
  5646.          accepted if and only if the client supplied attributes and values are
  5647.          supported by the Printer.  Whether these attributes actually affect
  5648.          the processing of the Job depends on the ability of the Printer to
  5649.          override the instructions embedded in the print data with the
  5650.          semantics of the IPP attributes.  If the print data attributes can be
  5651.          overridden ("pdl-override-supported" set to 'attempted'), the Printer
  5652.          makes an attempt to use the IPP attributes when processing the Job. If
  5653.          the print data attributes can not be overridden ("pdl-override-
  5654.          supported" set to 'not-attempted'), the Printer makes no attempt to
  5655.          use the IPP attributes when processing the Job, and hence, the IPP
  5656.          attributes may fail to affect the Job processing and output in any
  5657.          manner whatsoever.
  5658.  
  5659.  
  5660.          15.3 Suggested Attribute Processing Algorithm
  5661.  
  5662.          When a Printer receives a create request, the Printer either accepts
  5663.          or rejects the request. The Printer accepts the create request and
  5664.          creates a Job object if it is able to accept all Job Template and
  5665.          Document attributes in the request.  The Printer rejects the request
  5666.          and does not create a Job object if the Printer rejects any Job
  5667.          Template or Document attribute in the request.  In order to determine
  5668.          whether or not to accept or reject the request, the Printer SHOULD use
  5669.          the following algorithm:
  5670.  
  5671.            1. The implementation checks to see if the operation is supported.
  5672.               If not, the Printer rejects the request and sets the appropriate
  5673.               status code in the response.
  5674.  
  5675.  
  5676.  
  5677.          deBry, Hastings, Herriot, Isaacson, Powell
  5678.                                        [Page 98]
  5679.                                Expires February xx, 1998
  5680.  
  5681.  
  5682.  
  5683.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  5684.  
  5685.  
  5686.            2. The implementation checks to see if the requested version is
  5687.               supported. If not, the Printer rejects the request and sets the
  5688.               appropriate status code in the response.
  5689.  
  5690.            3. The implementation checks to see if the client supplied an "ipp-
  5691.               attribute-fidelity" attribute.  If the attribute is missing (not
  5692.               supplied by the client), the Printer assumes that the value is
  5693.               'false'.
  5694.  
  5695.            4.  The Printer loops through all other attributes, checking to see
  5696.               if the requested values are supported (e.g., the value of "foo"
  5697.               in the request is one of the values in the Printer's "foo-
  5698.               supported" attribute).  If the attribute or its value is
  5699.               unsupported, the Printer flags it as unsupported.
  5700.  
  5701.            5. Once all attributes have been checked individually, the Printer
  5702.               checks for any inconsistent values among all the supported
  5703.               values.  For example a Printer might be able to staple and to
  5704.               print on transparencies, however due to physical stapling
  5705.               limitations, the Printer might not be able to staple
  5706.               transparencies.  Any inconsistent values are flagged as
  5707.               unsupported.
  5708.  
  5709.            6.  Once all attributes have been checked and validated, if "ipp-
  5710.               attribute-fidelity" is set to true and there are any attributes
  5711.               flagged as unsupported, the Printer rejects the request and
  5712.               returns all unsupported attributes and values in the response and
  5713.               sets the appropriate status code.
  5714.  
  5715.            7. If "ipp-attribute-fidelity" is set to 'false' (nor it was not
  5716.               supplied by the client) and there are any attributes that are
  5717.               flagged as unsupported, the Printer, chooses to either ignore the
  5718.               unsupported attributes or change the requested value to some
  5719.               supported value.  If, for some reason, it is not possible for the
  5720.               implementation to ignore or substitute values and is unable to
  5721.               "just print the job", the Printer is still able to reject the
  5722.               request and return all unsupported attributes and values in the
  5723.               response.  In doing so, the Printer sets the appropriate status
  5724.               code.
  5725.  
  5726.            8. If the Printer is able to accept the request (either as is or by
  5727.               making changes and the "ipp-attribute-fidelity" attribute is set
  5728.               to 'false'), the Printer creates a new Job object with the
  5729.               remaining valid Job Template attributes.  Initially it sets the
  5730.               Job's state to 'pending'.  These Job Template attributes are
  5731.               associated with the Job object.  All attributes which are
  5732.               associated with the Job object are intended to be override values
  5733.               that take precedence over whatever other embedded instructions
  5734.  
  5735.          deBry, Hastings, Herriot, Isaacson, Powell
  5736.                                        [Page 99]
  5737.                                Expires February xx, 1998
  5738.  
  5739.  
  5740.  
  5741.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  5742.  
  5743.  
  5744.               might be in the print data itself.  That is, IPP allows for
  5745.               submission time attributes to take precedence over static
  5746.               instructions embedded in the print data.  These submission time
  5747.               attributes are persistently stored with the Job.  However, it is
  5748.               not possible for all implementations to realize the semantics of
  5749.               "override".  End users may query the Printer's "pdl-override"
  5750.               attribute to determine if the Printer either attempts or does not
  5751.               attempt to override print data instructions with IPP attributes.
  5752.  
  5753.            9. There are some cases, where a Printer supports a Job Template
  5754.               attribute and has an associated default value set for that
  5755.               attribute.  In the case where a client does not supply the
  5756.               corresponding attribute, the Printer does not use its default
  5757.               values to populate Job attributes when creating the new Job
  5758.               object.  The Printer's default values are used at Job processing
  5759.               time where no other IPP attribute or instruction embedded in the
  5760.               print data is present.  Suppose the Printer were to associate the
  5761.               Printer's default value with the Job at creation time for an
  5762.               attribute not supplied by the client.  This would change it from
  5763.               a default value to an override value.  A later query of the Job
  5764.               object would return a set of attributes.  Neither the Printer nor
  5765.               the end user would be able to tell the difference between an
  5766.               attribute that is an "override PDL" attribute supplied by the
  5767.               client or a "default value" attribute supplied by the printer.
  5768.  
  5769.            10. If the client does not supply a value for some Job Template
  5770.               attribute, and the Printer does not support that attribute, as
  5771.               far as IPP is concerned, the result of processing that Job (with
  5772.               respect to the missing attribute) is undefined.
  5773.  
  5774.            11. Once the Job object has been created, the Printer responds back
  5775.               to the client with a successful response including Job status
  5776.               attributes that indicate the initial state of the Job ('pending',
  5777.               'processing', etc.).  The Printer uses its own configuration and
  5778.               implementation specific algorithms for scheduling the Job in the
  5779.               correct processing order.  Once the Printer begins processing the
  5780.               Job, the Printer changes the Job's state to 'processing'.  The
  5781.               Printer monitors all Jobs and notifies the intended recipients
  5782.               for each event by processing the all of the "notify-events" and
  5783.               "notify-addresses" Job attributes.  If the Printer supports PDL
  5784.               override (the "pdl-override" attribute set to 'attempted'), the
  5785.               implementation does its best to see that IPP attributes take
  5786.               precedence over embedded instructions in the print data.
  5787.  
  5788.            12. The implementation of the Printer object continues to process
  5789.               the Job until it can move the Job into the 'completed' state.  If
  5790.               an Cancel-Job operation is received, the implementation
  5791.               eventually moves the Job into the 'cancelled' state.  If the
  5792.  
  5793.          deBry, Hastings, Herriot, Isaacson, Powell
  5794.                                        [Page 100]
  5795.                                Expires February xx, 1998
  5796.  
  5797.  
  5798.  
  5799.          INTERNET-DRAFT       IPP/1.0: Model and Semantics   September 3, 1997
  5800.  
  5801.  
  5802.               system encounters errors during processing that do not allow it
  5803.               to progress the Job into a completed state, the implementation
  5804.               halts all processing, cleans up any resources, and moves the Job
  5805.               into the 'aborted' state.
  5806.  
  5807.            13. Once the Job moves to the 'completed', 'aborted', or
  5808.               'cancelled' state, it is an implementation decision as to when to
  5809.               destroy the Job object and release all associated resources.
  5810.               Once the Job has been destroyed, the Printer would return either
  5811.               the "not-found" or "gone" status codes for operations directed at
  5812.               that Job.
  5813.  
  5814.          Some Printer implementations may support "ipp-attribute-fidelity" set
  5815.          to 'true' and "pdl-override" set to 'attempted' and yet still not be
  5816.          able to realize exactly what the client specifies in the create
  5817.          request.  This is due to legacy decisions and assumptions that have
  5818.          been made about the role of job instructions embedded within the print
  5819.          data and external job instructions that accompany the print data and
  5820.          how to handle conflicts between such instructions.  The inability to
  5821.          be 100% precise about how a given implementation will behave is also
  5822.          compounded by the fact that the two special attributes, "ipp-
  5823.          attribute-fidelity" and "pdl-override", apply to the whole job rather
  5824.          than specific values for each attribute. For example, some
  5825.          implementations may be able to override almost all Job Template
  5826.          attributes except for "number-up". It would only make the IPP model
  5827.          more complex (with relatively little added value) to allow for
  5828.          additional special attributes that apply uniquely to each Job Template
  5829.          attribute or even specific values of each attribute.
  5830.  
  5831.  
  5832.          16. APPENDIX F: Relationship to SNMP MIBs
  5833.  
  5834.          The IPP model is related to the Printer MIB [??] in the following
  5835.          ways:
  5836.  
  5837.          ISSUE: TBS.
  5838.  
  5839.          The IPP model is related to the Job Monitoring MIB [??] in the
  5840.          following ways:
  5841.  
  5842.          ISSUE: TBS
  5843.  
  5844.  
  5845.  
  5846.  
  5847.  
  5848.  
  5849.  
  5850.  
  5851.          deBry, Hastings, Herriot, Isaacson, Powell
  5852.                                        [Page 101]
  5853.                                Expires February xx, 1998
  5854.  
  5855.