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-03.txt < prev    next >
Text File  |  1997-07-15  |  239KB  |  5,337 lines

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