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-04.txt < prev    next >
Text File  |  1997-08-02  |  249KB  |  5,425 lines

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