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-06.txt < prev    next >
Text File  |  1997-10-27  |  360KB  |  7,424 lines

  1.  
  2.  
  3.  
  4.  
  5.          INTERNET-DRAFT
  6.          draft-ietf-ipp-model-06.txt
  7.                                                                        R. deBry
  8.                                                                 IBM Corporation
  9.                                                                     T. Hastings
  10.                                                               Xerox Corporation
  11.                                                                      R. Herriot
  12.                                                                Sun Microsystems
  13.                                                                     S. Isaacson
  14.                                                                    Novell, Inc.
  15.                                                                       P. Powell
  16.                                                      San Diego State University
  17.                                                                October 14, 1997
  18.  
  19.                   Internet Printing Protocol/1.0: Model and Semantics
  20.  
  21.          Status of this Memo
  22.  
  23.          This document is an Internet-Draft.  Internet-Drafts are working
  24.          documents of the Internet Engineering Task Force (IETF), its areas,
  25.          and its working groups.  Note that other groups may also distribute
  26.          working documents as Internet-Drafts.
  27.  
  28.          Internet-Drafts are draft documents valid for a maximum of six months
  29.          and may be updated, replaced, or obsoleted by other documents at any
  30.          time.  It is inappropriate to use Internet-Drafts as reference
  31.          material or to cite them other than as "work in progress".
  32.  
  33.          To learn the current status of any Internet-Draft, please check the
  34.          "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
  35.          Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
  36.          munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
  37.          ftp.isi.edu (US West Coast).
  38.  
  39.          Abstract
  40.  
  41.          This document is one of a set of documents, which together describe
  42.          all aspects of a new Internet Printing Protocol (IPP).  IPP is an
  43.          application level protocol that can be used for distributed printing
  44.          using Internet tools and technology.  The protocol is heavily
  45.          influenced by the printing model introduced in the Document Printing
  46.          Application (DPA) [ISO10175] standard.  Although DPA specifies both
  47.          end user and administrative features, IPP version 1.0 is focused only
  48.          on end user functionality.
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.          deBry, Hastings, Herriot, Isaacson, Powell                   [Page 1]
  56.                                  Expires April 14, 1998
  57.  
  58.  
  59.  
  60.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  61.  
  62.  
  63.          The full set of IPP documents includes:
  64.  
  65.            Requirements for an Internet Printing Protocol [IPP-REQ]
  66.            Internet Printing Protocol/1.0: Model and Semantics
  67.            Internet Printing Protocol/1.0: Protocol Specification [IPP-PRO]
  68.            Rationale for the Structure and Model and Protocol for the Internet
  69.               Printing Protocol [IPP-RAT]
  70.  
  71.          The requirements document, "Requirements for an Internet Printing
  72.          Protocol", takes a broad look at distributed printing functionality,
  73.          and it enumerates real-life scenarios that help to clarify the
  74.          features that need to be included in a printing protocol for the
  75.          Internet.  It identifies requirements for three types of users: end
  76.          users, operators, and administrators.  The requirements document calls
  77.          out a subset of end user requirements that MUST be satisfied in the
  78.          first version of IPP.  Operator and administrator requirements are out
  79.          of scope for v1.0. This document, "Internet Printing Protocol/1.0:
  80.          Model and Semantics",  describes a simplified model with abstract
  81.          objects, their attributes, and their operations. The model introduces
  82.          a Printer object and a Job object.  The Job object supports multiple
  83.          documents per job.  The model document also addresses how security,
  84.          internationalization, and directory issues are addressed. The protocol
  85.          specification, " Internet Printing Protocol/1.0: Protocol
  86.          Specification", is a formal mapping of the abstract operations and
  87.          attributes defined in the model document onto HTTP/1.1.  The protocol
  88.          specification defines the encoding rules for a new Internet media type
  89.          called "application/ipp".
  90.  
  91.  
  92.  
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.          deBry, Hastings, Herriot, Isaacson, Powell                   [Page 2]
  114.                                  Expires April 14, 1998
  115.  
  116.  
  117.  
  118.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  119.  
  120.  
  121.                                    Table of Contents
  122.  
  123.          1. Simplified Printing Model .......................................8
  124.          2. IPP Objects ....................................................10
  125.          2.1  Printer Object................................................10
  126.          2.2  Job Object....................................................13
  127.          2.3  Object Relationships..........................................14
  128.          2.4  Object Identity...............................................14
  129.          3. IPP Operations .................................................15
  130.          3.1  General Semantics.............................................16
  131.          3.1.1     Operation Characteristics................................16
  132.          3.1.2     Operation Targets........................................18
  133.          3.1.3     Character Set and Natural Language Operation Attributes..19
  134.          3.1.3.1     Request Operation Attributes ..........................19
  135.          3.1.3.2     Response Operation Attributes .........................20
  136.          3.1.4     Operation Status Codes and Messages......................21
  137.          3.1.5     Security Concerns for IPP Operations.....................22
  138.          3.1.5.1     Authenticated Requester Identity ......................22
  139.          3.1.5.2     Restricted Queries ....................................23
  140.          3.1.6     Versions.................................................23
  141.          3.1.7     Job Creation Operations..................................24
  142.          3.2  Printer Operations............................................26
  143.          3.2.1     Print-Job Operation......................................26
  144.          3.2.1.1     Print-Job Request .....................................26
  145.          3.2.1.2     Print-Job Response ....................................28
  146.          3.2.2     Print-URI Operation......................................30
  147.          3.2.3     Validate-Job Operation...................................31
  148.          3.2.4     Create-Job Operation.....................................31
  149.          3.2.5     Get-Attributes Operation.................................31
  150.          3.2.5.1     Get-Attributes Request ................................32
  151.          3.2.5.2     Get-Attributes Response ...............................33
  152.          3.2.6     Get-Jobs Operation.......................................34
  153.          3.2.6.1     Get-Jobs Request ......................................34
  154.          3.2.6.2     Get-Jobs Response .....................................35
  155.          3.3  Job Operations................................................36
  156.          3.3.1     Send-Document Operation..................................37
  157.          3.3.1.1     Send-Document Request .................................37
  158.          3.3.1.2     Send-Document Response ................................39
  159.          3.3.2     Send-URI Operation.......................................39
  160.          3.3.3     Cancel Job Operation.....................................39
  161.          3.3.3.1     Cancel-Job Request ....................................40
  162.          3.3.3.2     Cancel-Job Response ...................................40
  163.          3.3.4     Get-Attributes Operation.................................41
  164.          3.3.4.1     Get-Attributes Request ................................41
  165.          3.3.4.2     Get-Attributes Response ...............................41
  166.          4. Object Attributes ..............................................42
  167.          4.1  Attribute Syntaxes............................................42
  168.          4.1.1     'text'...................................................43
  169.  
  170.  
  171.          deBry, Hastings, Herriot, Isaacson, Powell                   [Page 3]
  172.                                  Expires April 14, 1998
  173.  
  174.  
  175.  
  176.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  177.  
  178.  
  179.          4.1.2     'name'...................................................44
  180.          4.1.3     'keyword'................................................44
  181.          4.1.4     'enum'...................................................45
  182.          4.1.5     'uri'....................................................45
  183.          4.1.6     'uriScheme'..............................................45
  184.          4.1.7     'charSet'................................................46
  185.          4.1.8     'naturalLanguage'........................................46
  186.          4.1.9     'mimeType'...............................................47
  187.          4.1.10    'octetString'............................................48
  188.          4.1.11    'boolean'................................................48
  189.          4.1.12    'integer'................................................48
  190.          4.1.13    'rangeOfInteger'.........................................48
  191.          4.1.14    'dateTime'...............................................48
  192.          4.1.15    'resolution'.............................................48
  193.          4.1.16    '1setOf  X'..............................................49
  194.          4.2  Job Template Attributes.......................................49
  195.          4.2.1     job-sheets (type4 keyword, name).........................53
  196.          4.2.2     job-priority (integer(1:100))............................54
  197.          4.2.3     job-hold-until (type4 keyword, name).....................55
  198.          4.2.4     multiple-document-handling (type2 keyword)...............56
  199.          4.2.5     media (type4 keyword, name)..............................57
  200.          4.2.6     number-up (integer)......................................57
  201.          4.2.7     sides (type2 keyword)....................................58
  202.          4.2.8     printer-resolution (resolution)..........................59
  203.          4.2.9     print-quality (type2 enum)...............................59
  204.          4.2.10    finishings (1setOf type2 enum)...........................59
  205.          4.2.11    copies (integer(1:2**31 - 1))............................60
  206.          4.2.12    page-ranges (1setOf rangeOfInteger)......................60
  207.          4.2.13    orientation (type2 enum).................................61
  208.          4.2.14    document-format (mimeType)...............................61
  209.          4.2.15    compression (type3 keyword)..............................62
  210.          4.2.16    job-k-octets (integer(0:2**31 - 1))......................62
  211.          4.2.17    job-impressions (integer(0:2**31 - 1))...................62
  212.          4.2.18    job-media-sheets (integer(0:2**31 - 1))..................63
  213.          4.3  Job Description Attributes....................................63
  214.          4.3.1     job-uri (uri)............................................64
  215.          4.3.2     job-id (integer(1:MAX))..................................65
  216.          4.3.3     job-more-info (uri)......................................65
  217.          4.3.4     job-name (name)..........................................65
  218.          4.3.5     job-originating-user (octetString).......................65
  219.          4.3.6     job-state (type1 enum)...................................66
  220.          4.3.7     job-state-reasons (1setOf  type2 keyword)................68
  221.          4.3.8     job-state-message (text).................................70
  222.          4.3.9     number-of-documents (integer(0:2**31 - 1))...............70
  223.          4.3.10    output-device-assigned (name)............................71
  224.          4.3.11    time-of-creation (integer)...............................71
  225.          4.3.12    time-at-processing (integer).............................71
  226.          4.3.13    time-at-completed (integer)..............................71
  227.  
  228.  
  229.          deBry, Hastings, Herriot, Isaacson, Powell                   [Page 4]
  230.                                  Expires April 14, 1998
  231.  
  232.  
  233.  
  234.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  235.  
  236.  
  237.          4.3.14    number-of-intervening-jobs (integer(0:2**31 - 1))........71
  238.          4.3.15    job-message-from-operator (text).........................71
  239.          4.3.16    job-k-octets-processed (integer(0:2**31 - 1))............72
  240.          4.3.17    job-impressions-completed  (integer(0:2**31 - 1))........72
  241.          4.3.18    job-media-sheets-completed (integer(0:2**31 - 1))........72
  242.          4.3.19    attributes-charset (charSet).............................72
  243.          4.3.20    attributes-natural-language (naturalLanguage)............73
  244.          4.4  Printer Description Attributes................................73
  245.          4.4.1     printer-uri (uri)........................................75
  246.          4.4.2     printer-name (name)......................................75
  247.          4.4.3     printer-location (text)..................................75
  248.          4.4.4     printer-info (text)......................................75
  249.          4.4.5     printer-more-info (uri)..................................75
  250.          4.4.6     printer-driver-installer (uri)...........................76
  251.          4.4.7     printer-make-and-model (text)............................76
  252.          4.4.8     printer-more-info-manufacturer (uri).....................76
  253.          4.4.9     printer-state (type1 enum)...............................76
  254.          4.4.10    printer-state-reasons (1setOf type2 keyword).............77
  255.          4.4.11    printer-state-message (text).............................80
  256.          4.4.12    operations-supported (1setOf operation)..................80
  257.          4.4.13    printer-charset (charSet)................................81
  258.          4.4.14    charsets-supported (1setOf charSet)......................81
  259.          4.4.15    printer-natural-language (naturalLanguage)...............81
  260.          4.4.16    natural-languages-supported (1setOf naturalLanguage).....81
  261.          4.4.17    printer-is-accepting-jobs (boolean)......................82
  262.          4.4.18    queued-job-count (integer(0:2**31 - 1))..................82
  263.          4.4.19    printer-message-from-operator (text).....................82
  264.          4.4.20    color-supported (boolean)................................82
  265.          4.4.21    reference-uri-schemes-supported (1setOf uriScheme).......83
  266.          4.4.22    pdl-override (type2 keyword).............................83
  267.          4.4.23    security-mechanisms-supported (1setOf keyword)...........83
  268.          4.4.24    printer-up-time (integer(1:MAX)).........................84
  269.          4.4.25    printer-current-time (dateTime)..........................84
  270.          4.4.26    multiple-operation-time-out (integer)....................84
  271.          5. Conformance ....................................................84
  272.          5.1  Client Conformance Requirements...............................85
  273.          5.2  Printer Object Conformance Requirements.......................85
  274.          5.2.1     Objects..................................................86
  275.          5.2.2     Operations...............................................86
  276.          5.2.3     Attributes...............................................86
  277.          5.2.4     Printer extensions.......................................87
  278.          5.2.5     Attribute Syntaxes.......................................87
  279.          5.3  Security Conformance Requirements.............................87
  280.          6. IANA Considerations (registered and private extensions) ........87
  281.          6.1  Typed Extensions..............................................88
  282.          6.2  Registration of MIME types/sub-types for document-formats.....89
  283.          6.3  Attribute Extensibility.......................................89
  284.          6.4  Attribute Syntax Extensibility................................89
  285.  
  286.  
  287.          deBry, Hastings, Herriot, Isaacson, Powell                   [Page 5]
  288.                                  Expires April 14, 1998
  289.  
  290.  
  291.  
  292.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  293.  
  294.  
  295.          7. Internationalization Considerations ............................89
  296.          8. Security Considerations ........................................91
  297.          8.1  Client and Printer in the Same Security Domain................92
  298.          8.2  Client and Printer in Different Security Domains..............92
  299.          8.3  Print by Reference............................................93
  300.          8.3.1     Unprotected Documents....................................93
  301.          8.3.2     Protected Documents......................................93
  302.          8.4  Common Security Scenarios.....................................93
  303.          8.4.1     No Security..............................................93
  304.          8.4.2     Message Protection During Transmission...................94
  305.          8.4.3     Client Authentication and Authorization..................94
  306.          8.4.4     Mutual Authentication, Authorization and Message Protection
  307.                    94
  308.          8.5  Recommended Security Mechanisms...............................94
  309.          9. References .....................................................95
  310.          10.Copyright Notice ...............................................99
  311.          11.Author's Address ...............................................99
  312.          12.APPENDIX A: Terminology .......................................102
  313.          12.1 Conformance Terminology......................................102
  314.          12.1.1    MUST....................................................102
  315.          12.1.2    MUST NOT................................................102
  316.          12.1.3    SHOULD..................................................102
  317.          12.1.4    SHOULD NOT..............................................102
  318.          12.1.5    MAY.....................................................102
  319.          12.1.6    NEED NOT................................................103
  320.          12.2 Model Terminology............................................103
  321.          12.2.1    Keyword.................................................103
  322.          12.2.2    Attributes..............................................103
  323.          12.2.2.1    Attribute Name .......................................103
  324.          12.2.2.2    Attribute Group Name .................................104
  325.          12.2.2.3    Attribute Value ......................................104
  326.          12.2.2.4    Attribute Syntax .....................................104
  327.          12.2.3    Supports................................................104
  328.          12.2.4    print-stream page.......................................106
  329.          12.2.5    imposed page............................................106
  330.          13.APPENDIX B:  Status Codes .....................................106
  331.          13.1 Status Codes.................................................107
  332.          13.1.1    Informational...........................................107
  333.          13.1.2    Successful Status Codes.................................107
  334.          13.1.2.1    successful-ok (0x0000) ...............................107
  335.          13.1.2.2    successful-ok-ignored-or-substituted-attributes (0x0001)
  336.                      108
  337.          13.1.3    Redirection Status Codes................................108
  338.          13.1.4    Client Error Status Codes...............................108
  339.          13.1.4.1    client-error-bad-request (0x0400) ....................108
  340.          13.1.4.2    client-error-forbidden (0x0401) ......................108
  341.          13.1.4.3    client-error-not-authenticated (0x0402) ..............108
  342.          13.1.4.4    client-error-not-authorized (0x0403) .................109
  343.  
  344.  
  345.          deBry, Hastings, Herriot, Isaacson, Powell                   [Page 6]
  346.                                  Expires April 14, 1998
  347.  
  348.  
  349.  
  350.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  351.  
  352.  
  353.          13.1.4.5    client-error-not-possible (0x0404) ...................109
  354.          13.1.4.6    client-error-timeout (0x0405) ........................109
  355.          13.1.4.7    client-error-not-found (0x0406) ......................109
  356.          13.1.4.8    client-error-gone (0x0407) ...........................110
  357.          13.1.4.9    client-error-request-entity-too-large (0x0408) .......110
  358.          13.1.4.10   client-error-request-URI-too-long (0x0409) ...........110
  359.          13.1.4.11   client-error-unsupported-document-format (0x040A) ....110
  360.          13.1.4.12   client-error-attribute-not-supported (0x040B) ........111
  361.          13.1.4.13   client-error-uri-scheme-not-supported (0x040C) .......111
  362.          13.1.4.14   client-error-charset-not-supported (0x040D) ..........111
  363.          13.1.4.15   client-error-natural-language-not-supported (0x040E) .111
  364.          13.1.5    Server Error Status Codes...............................111
  365.          13.1.5.1    server-error-internal- error (0x0500) ................112
  366.          13.1.5.2    server-error-operation-not-supported (0x0501) ........112
  367.          13.1.5.3    server-error-service-unavailable (0x0502) ............112
  368.          13.1.5.4    server-error-version-not-supported (0x0503) ..........112
  369.          13.1.5.5    server-error-device-error (0x0504) ...................112
  370.          13.1.5.6    server-error-temporary-error (0x0505) ................113
  371.          13.2 Status Codes for IPP Operations..............................114
  372.          14.APPENDIX C:  "media" keyword values ...........................114
  373.          15.APPENDIX D: Processing IPP Attributes .........................119
  374.          15.1 Fidelity.....................................................119
  375.          15.2 Page Description Language (PDL) Override.....................121
  376.          15.3 Suggested Operation Processing Algorithm.....................122
  377.          15.4 Using Job Template Attributes During Document Processing.....126
  378.          16.APPENDIX E: Generic Directory Schema ..........................127
  379.  
  380.  
  381.  
  382.  
  383.  
  384.  
  385.  
  386.  
  387.  
  388.  
  389.  
  390.  
  391.  
  392.  
  393.  
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.  
  401.  
  402.  
  403.          deBry, Hastings, Herriot, Isaacson, Powell                   [Page 7]
  404.                                  Expires April 14, 1998
  405.  
  406.  
  407.  
  408.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  409.  
  410.  
  411.  
  412.          1. Simplified Printing Model
  413.  
  414.          In order to achieve its goal of realizing a workable printing protocol
  415.          for the Internet, the Internet Printing Protocol (IPP) is based on a
  416.          simplified printing model that abstracts the many components of real
  417.          world printing solutions.  The Internet is a distributed computing
  418.          environment where requesters of print services  (clients,
  419.          applications, printer drivers, etc.) cooperate and interact with print
  420.          service providers.  This model and semantics document describes a
  421.          simple, abstract model for IPP even though the underlying
  422.          configurations may be complex "n-tier" client/server systems.  An
  423.          important simplifying step in the IPP model is to expose only the key
  424.          objects and interfaces required for printing.  The model does not
  425.          include features, interfaces, and relationships that are beyond the
  426.          scope of IPP/1.0.  IPP incorporates many of the relevant ideas and
  427.          lessons learned from other specification and development efforts
  428.          [HTPP] [LDPA] [P1387.4] [PSIS] [RFC1179] [SWP].
  429.  
  430.          The IPP model encapsulates the important components of distributed
  431.          printing into two object types:
  432.  
  433.            - Printer (Section 2.1)
  434.            - Job (Section 2.2)
  435.  
  436.          Each object type has an associated set of operations (see section 3)
  437.          and attributes (see section 4).
  438.  
  439.          The terminology used in the remainder of this document is defined in
  440.          (section 12).  In the remainder of this document, terms such as
  441.          "attributes", "keywords", and "supports" have special meaning and are
  442.          defined in the model terminology section. Capitalized terms such as
  443.          MANDATORY, SHALL, and OPTIONAL have special meaning relating to
  444.          conformance.  These terms are defined in the section on conformance
  445.          terminology, most of which is taken from RFC 2119 [RFC2119].
  446.  
  447.          It is important, however, to understand that in real system
  448.          implementations (which lie underneath the abstracted IPP model), there
  449.          are other components of a print service which are not explicitly
  450.          defined in the IPP model. The following figure illustrates where IPP
  451.          fits with respect to these other components.
  452.  
  453.  
  454.  
  455.  
  456.  
  457.  
  458.  
  459.  
  460.  
  461.          deBry, Hastings, Herriot, Isaacson, Powell                   [Page 8]
  462.                                  Expires April 14, 1998
  463.  
  464.  
  465.  
  466.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  467.  
  468.  
  469.  
  470.                                       +--------------+
  471.                                       |  Application |
  472.                             o         +. . . . . . . |
  473.                            \|/        |   Spooler    |
  474.                            / \        +. . . . . . . |   +---------+
  475.                          End-User     | Print Driver |---|  File   |
  476.                +-----------+ +-----+  +------+-------+   +----+----+
  477.                |  Browser  | | GUI |         |                |
  478.                +-----+-----+ +--+--+         |                |
  479.                      |          |            |                |
  480.                      |      +---+------------+---+            |
  481.          N   D   S   |      |      IPP Client    |------------+
  482.          O   I   E   |      +---------+----------+
  483.          T   R   C   |                |
  484.          I   E   U   |
  485.          F   C   R   -------------- Transport ------------------
  486.          I   T   I
  487.          C   O   T                    |         --+
  488.          A   R   Y           +--------+--------+  |
  489.          T   Y               |    IPP Server   |  |
  490.          I                   +--------+--------+  |
  491.          O                            |           |
  492.          N                   +-----------------+  | IPP Printer
  493.                              |  Print Service  |  |
  494.                              +-----------------+  |
  495.                                       |         --+
  496.                              +-----------------+
  497.                              | Output Device(s)|
  498.                              +-----------------+
  499.  
  500.          An IPP Printer encapsulates the functions normally associated with
  501.          physical output devices along with the spooling, scheduling and
  502.          multiple device management functions often associated with a print
  503.          server. IPP Printers are optionally registered as entries in a
  504.          directory where end users find and select them based on some sort of
  505.          filtered and context based searching mechanism.  The directory is used
  506.          to store relatively static information about the Printer, allowing end
  507.          users to search for and find Printers that match their search
  508.          criteria, for example: name, context, printer capabilities, etc. (see
  509.          section 16). The more dynamic information is directly associated with
  510.          the IPP Printer itself.  This information includes state, currently
  511.          loaded and ready media, number of jobs at the Printer, errors,
  512.          warnings, and so forth.
  513.  
  514.          IPP Clients implement the IPP protocol on the client side, and give
  515.          end users (or programs) the ability to query an IPP Printer and submit
  516.          and manage print jobs.  An IPP server is just that part of the IPP
  517.  
  518.  
  519.          deBry, Hastings, Herriot, Isaacson, Powell                   [Page 9]
  520.                                  Expires April 14, 1998
  521.  
  522.  
  523.  
  524.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  525.  
  526.  
  527.          Printer that implements the server-side protocol.  The rest of the IPP
  528.          Printer implements the application semantics of the print service
  529.          itself.  The IPP Printer may be embedded in an output device or may be
  530.          implemented on a host on the network that communicates with the output
  531.          device.
  532.  
  533.          When a job is submitted to the Printer object and the Printer object
  534.          validates the attributes in the submission request, the Printer object
  535.          creates a new Job object.  The end user then interacts with this new
  536.          Job object to query its status and monitor the progress of the job.
  537.          End users may also cancel print job by using the Job object's Cancel-
  538.          Job operation.  The end user is able to register to receive certain
  539.          events that are then routed using the specified notification
  540.          service(s).
  541.  
  542.  
  543.          2. IPP Objects
  544.  
  545.          The IPP model introduces objects of type Printer and Job.  Each type
  546.          of object models relevant aspects of a real-world entity such as a
  547.          real printer or print job.  Each object type is defined as a set of
  548.          possible attributes that may be supported by instances of that object
  549.          type.  For each object, the actual set of supported attributes and
  550.          values describe a specific implementation.  The object's attributes
  551.          and values describe its state, capabilities, realizable features, job
  552.          processing functions, and default behaviors and characteristics. For
  553.          example, the object type Printer is defined as a set of attributes
  554.          that each Printer object potentially supports.  In the same manner,
  555.          the object type Job is defined as a set of attributes that are
  556.          potentially supported by each Job object.
  557.  
  558.          Each attribute included in the set of attributes defining an object
  559.          type is labeled as:
  560.  
  561.            - "MANDATORY": each object SHALL support the attribute.
  562.            - "OPTIONAL": each object OPTIONALLY supports the attribute.
  563.  
  564.          There is no such similar labeling of attribute values.  However, if an
  565.          implementation supports an attribute, it MUST support at least one of
  566.          the possible values for that attribute.
  567.  
  568.  
  569.          2.1 Printer Object
  570.  
  571.          A major component of the IPP model is the Printer object (also called
  572.          the IPP Printer).  A Printer object implements the IPP protocol.
  573.          Using the protocol, end users may query the attributes of the Printer
  574.          and submit Jobs to the Printer.  The actual implementation components
  575.  
  576.  
  577.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 10]
  578.                                  Expires April 14, 1998
  579.  
  580.  
  581.  
  582.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  583.  
  584.  
  585.          behind the Printer abstraction may take on different forms and
  586.          different configurations.  However, the model abstraction allows the
  587.          details of the configuration of real components to remain opaque to
  588.          the end user. Section 3 describes each of the Printer operations in
  589.          detail.
  590.  
  591.          The capabilities and state of a Printer object are described by its
  592.          attributes.  Printer attributes are grouped into two groups:
  593.  
  594.            - "job-template" attributes: These attributes the describe job
  595.               processing capabilities and defaults for the Printer object. (See
  596.               section 4.2)
  597.            - "printer-description" attributes:  These attributes describe the
  598.               Printer object's identification, state, location, references to
  599.               other sources of information about the Printer object, etc. (see
  600.               section 4.4)
  601.  
  602.          Since a Printer object is an abstraction of a generic document output
  603.          device and print service provider, a Printer object could be used to
  604.          represent any real or virtual device with semantics consistent with
  605.          the Printer object, such as a fax device, an imager, or even a CD
  606.          writer.
  607.  
  608.          Some examples of configurations supporting a Printer object include:
  609.  
  610.            1) An output device, with no spooling capabilities
  611.            2) An output device, with a built-in spooler
  612.            3) A print server supporting IPP with one or more associated output
  613.               devices
  614.               3a) The associated output devices might or might not be capable
  615.                 of spooling jobs
  616.               3b) The associated output devices might or might not support IPP
  617.  
  618.          The following figures show some examples of how Printer objects can be
  619.          realized on top of various distributed printing configurations.  The
  620.          embedded case below represents configurations 1 and 2. The hosted and
  621.          fan-out figures below represent configuration 3.
  622.  
  623.  
  624.  
  625.  
  626.  
  627.  
  628.  
  629.  
  630.  
  631.  
  632.  
  633.  
  634.  
  635.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 11]
  636.                                  Expires April 14, 1998
  637.  
  638.  
  639.  
  640.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  641.  
  642.  
  643.          Legend:
  644.  
  645.          ##### indicates a Printer object which is
  646.                either embedded in an output device or is
  647.                hosted in a server.  The implementation
  648.                might or might not be capable of queuing/spooling.
  649.  
  650.          any   indicates any network protocol or direct
  651.                connect, including IPP
  652.  
  653.  
  654.          embedded printer:
  655.                                                    output device
  656.                                                  +---------------+
  657.           O   +--------+                         |  ###########  |
  658.          /|\  | client |------------IPP------------># Printer #  |
  659.          / \  +--------+                         |  # Object  #  |
  660.                                                  |  ###########  |
  661.                                                  +---------------+
  662.  
  663.  
  664.          hosted printer:
  665.                                                  +---------------+
  666.           O   +--------+        ###########      |               |
  667.          /|\  | client |--IPP--># Printer #-any->| output device |
  668.          / \  +--------+        # Object  #      |               |
  669.                                 ###########      +---------------+
  670.  
  671.  
  672.  
  673.                                                   +---------------+
  674.          fan out:                                 |               |
  675.                                               +-->| output device |
  676.                                           any/    |               |
  677.           O   +--------+      ###########   /     +---------------+
  678.          /|\  | client |-IPP-># Printer #--*
  679.          / \  +--------+      # Object  #   \     +---------------+
  680.                               ########### any\    |               |
  681.                                               +-->| output device |
  682.                                                   |               |
  683.                                                   +---------------+
  684.  
  685.  
  686.          A Printer object is identified with a Uniform Resource Identifier
  687.          (URI) [RFC1630].  Often, the URI is a Uniform Resource Locator (URL)
  688.          [RFC1738] [RFC1808]..
  689.  
  690.  
  691.  
  692.  
  693.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 12]
  694.                                  Expires April 14, 1998
  695.  
  696.  
  697.  
  698.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  699.  
  700.  
  701.          Note: The IPP protocol specification [IPP-PRO] defines a mapping of
  702.          IPP onto HTTP/1.1.  Therefore, all conforming Printer objects SHALL
  703.          support HTTP schemed URIs to identify themselves.  For example, a
  704.          Printer object's URI could be "http://www.some-domain.org/printer-
  705.          one".  A Printer object's URI could not be "ftp://ftp.some-
  706.          domain.org/printer-one".
  707.  
  708.          IPP does not specify how the URI is obtained, but it is RECOMMENDED
  709.          that a Printer object is registered in a directory service which end
  710.          users and programs can interrogate. Section 16 defines a generic
  711.          schema for Printer object entries in the directory service.
  712.  
  713.  
  714.          2.2 Job Object
  715.  
  716.          A Job object is used to model a print job.  A Job can contain one or
  717.          more documents.  The information required to create a Job object is
  718.          sent in a create request from the end user via an IPP Client to the
  719.          Printer object.  Section 3 describes each of the Job operations in
  720.          detail.
  721.  
  722.          The characteristics and state of a Job object are described by its
  723.          attributes.  Job attributes are grouped into two groups as follows:
  724.  
  725.            - "job-template" attributes:  These attributes are optionally
  726.               supplied by the client or end user and include job processing
  727.               instructions which are intended to override any Printer object
  728.               defaults and/or instructions embedded within the document data.
  729.               (See section 4.2)
  730.            - "job-description" attributes: These attributes describe the Job
  731.               object's identification, state, size, etc. The client does not
  732.               supply values for these attributes, they are set by the Printer
  733.               object.  (See section 4.3)
  734.  
  735.          A Job object contains at least one document, but may contain multiple
  736.          documents.  A document consists of either:
  737.  
  738.            - a stream of data in a format supported by the Printer object, or
  739.            - a URI reference to a stream of data in a format supported by the
  740.               Printer
  741.  
  742.          A document is not modeled as an IPP object, therefore it has no object
  743.          identifier or associated attributes.  All job processing instructions
  744.          are modeled as Job object attributes.  These attributes are called Job
  745.          Template attributes and they apply equally to all documents within a
  746.          Job.
  747.  
  748.  
  749.  
  750.  
  751.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 13]
  752.                                  Expires April 14, 1998
  753.  
  754.  
  755.  
  756.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  757.  
  758.  
  759.          2.3 Object Relationships
  760.  
  761.          IPP objects have relationships that MUST be maintained persistently
  762.          along with the persistent storage of the object attributes.  A Printer
  763.          object may represent one or more output devices.  A Printer object may
  764.          represent a logical device which "processes" jobs but never actually
  765.          uses a physical output device to put marks on paper (for example a Web
  766.          page publisher or an interface into an online document archive or
  767.          repository).  A Printer object contains zero or more Job objects.  A
  768.          Job object is contained by exactly one Printer object, however the
  769.          identical document data associated with a Job object could be sent to
  770.          either the same or a different Printer object.  In this case, a new
  771.          Job object would be created which would be almost identical to the
  772.          existing Job object, however it would have a new (different) Job
  773.          object identifier.  A Job object contains one or more documents.  If
  774.          the contained document is a stream of printer-ready data, that stream
  775.          can be contained in only one document.  However, there can be copies
  776.          of the stream in other documents in the same or different Job objects.
  777.          If the contained document is a reference to a stream of printer-ready
  778.          data, other documents (in the same or different Job object(s)) may
  779.          reference the same stream.
  780.  
  781.  
  782.          2.4 Object Identity
  783.  
  784.          All Printer and Job objects have an identifier so that they can be
  785.          persistently and unambiguously referenced.  The IPP model requires
  786.          that these identifiers be URIs.  Often, the URI is a URL [RFC1738]
  787.          [RFC1808].
  788.  
  789.          Allowing Job objects to have URIs allows for flexibility and
  790.          scalability.  In some implementations, the Printer object might create
  791.          Jobs that are processed in the same local environment as the Printer
  792.          object itself.  In this case, the Job URI might just be a composition
  793.          of the Printer's URI and some unique component for the Job object.  In
  794.          other implementations, the Printer object might be a central clearing-
  795.          house for validating all Job object creation requests, and the Job
  796.          object itself might be created in some environment that is remote from
  797.          the Printer object.  In this case, the Job object's URI may have no
  798.          relationship at all to the Printer object's URI.
  799.  
  800.          However, many existing printing systems have local models or interface
  801.          constraints that force Job objects to be identified using only a 32-
  802.          bit positive integer rather than a URI.  This numeric Job ID is only
  803.          unique within the context of the Printer object to which the create
  804.          request was originally submitted.  In order to allow both types of
  805.          client access to Jobs (either Job URI or numeric Job ID), when the
  806.          Printer object successfully processes a create request and creates a
  807.  
  808.  
  809.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 14]
  810.                                  Expires April 14, 1998
  811.  
  812.  
  813.  
  814.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  815.  
  816.  
  817.          new Job, the Printer object SHALL generate both a Job URI and a Job ID
  818.          for the new Job object.  This requirement allows all clients to access
  819.          Printer objects and Job objects no matter the local constraints
  820.          imposed on the client implementation.
  821.  
  822.          In addition to a unique identifier, Printer objects and Job objects
  823.          may have names.  An object name need not be unique across all
  824.          instances of all objects. A Printer object's name is chosen and set by
  825.          an administrator through some mechanism outside the scope of IPP.  A
  826.          Job object's name is optionally chosen and supplied by the IPP Client
  827.          submitting the job.  If the client does not supply a Job object name,
  828.          the Printer object generates a name for the new Job object.  In all
  829.          cases, the name only has local meaning, and it is not constrained to
  830.          be unique.
  831.  
  832.          To summarize:
  833.  
  834.            - Each Printer object is uniquely identified with a URI.  The
  835.               Printer's "printer-uri" attribute contains the URI.
  836.            - Each Job object is uniquely identified with a URI.  The Job's
  837.               "job-uri" attribute contains the URI.
  838.            - Each Job object is also uniquely identified with a combination of
  839.               the URI of the Printer object to which the create request was
  840.               originally submitted along with a Job ID (a 32-bit, positive
  841.               number) that is unique within the context of that Printer object.
  842.               The Printer object's "printer-uri" contains the Printer URI.  The
  843.               Job object's "job-id" attribute contains the numeric Job ID.
  844.            - Each Printer object has a name (which is not necessarily unique).
  845.               The administrator chooses and sets this name through some
  846.               mechanism outside the scope of IPP itself.  The Printer object's
  847.               "printer-name" attribute contains the name.
  848.            - Each Job object has a name (which is not necessarily unique).
  849.               The client optionally supplies this name in the create request.
  850.               If the client does not supply this name, the Printer object
  851.               generates a name for the Job object. The Job object's "job-name"
  852.               attribute contains the name.
  853.  
  854.  
  855.          3. IPP Operations
  856.  
  857.          IPP objects have associated operations.  An operation consists of a
  858.          request and a response.  When a client communicates with an IPP
  859.          object, it issues an operation request to the URI for that object.
  860.          Operations have attributes that supply information about the operation
  861.          itself.  These attributes are called operation attributes (as compared
  862.          to object attributes such as Printer attributes or Job attributes).
  863.          Each request carries along with it any operation attributes and/or
  864.          document data required by the object to perform the operation.  Each
  865.  
  866.  
  867.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 15]
  868.                                  Expires April 14, 1998
  869.  
  870.  
  871.  
  872.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  873.  
  874.  
  875.          request requires a response from the object.  Each response indicates
  876.          success or failure of the operation with a status code.  The response
  877.          contains any operation attributes, object attributes, and/or status
  878.          messages generated by the execution of the operation request.
  879.  
  880.          This section describes the semantics of the IPP operations, both
  881.          requests and responses, in terms of the attributes and other data
  882.          associated with each operation.
  883.  
  884.          Note: The IPP protocol specification [IPP-PRO] describes a mapping and
  885.          encoding of IPP operations onto HTTP/1.1 POST commands.  Other
  886.          mappings for IPP operations to additional transport mechanisms are
  887.          possible.
  888.  
  889.          The Printer operations are:
  890.  
  891.            Print-Job (section 3.2.1)
  892.            Print-URI (section 3.2.2)
  893.            Validate-Job (section 3.2.3)
  894.            Create-Job (section 3.2.4)
  895.            Get-Attributes (section 3.2.5)
  896.            Get-Jobs (section 3.2.6)
  897.  
  898.          The Job operations are:
  899.  
  900.            Send-Document (section 3.3.1)
  901.            Send-URI (section 3.3.2)
  902.            Cancel-Job (section 3.3.3)
  903.            Get-Attributes (section 3.3.4)
  904.  
  905.          The Send-Document and Send-URI Job operations are used to add a new
  906.          document to an existing multi-document Job object created with the
  907.          Create-Job operation.
  908.  
  909.  
  910.          3.1 General Semantics
  911.  
  912.          3.1.1 Operation Characteristics
  913.  
  914.          Each IPP operation is defined as both a request and a response.  Both
  915.          requests and responses are composed of groups of attributes and/or
  916.          document data.  Attributes are grouped into the following groups:
  917.  
  918.            - Operation Attributes: These are attributes that are only passed
  919.               in the operation itself, and usually do not persist beyond the
  920.               life of the operation.  Operation attributes may also affect
  921.               other attributes or groups of attributes since values in the
  922.               operation attributes usually affect the behavior of the object
  923.  
  924.  
  925.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 16]
  926.                                  Expires April 14, 1998
  927.  
  928.  
  929.  
  930.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  931.  
  932.  
  933.               that processes the operation.  All IPP objects that accept IPP
  934.               operation request MUST support all operation attributes.  Some
  935.               operation attributes are OPTIONAL for the client to supply, but
  936.               the IPP object MUST support the attribute by being prepare to
  937.               handle the client supplied operation attribute by realizing the
  938.               corresponding feature or function.
  939.            - Job Template Attributes: These attributes affect the processing
  940.               of a job.  They are OPTIONALLY supplied by a client in a create
  941.               request, and the receiving object MUST be prepared to received
  942.               all supported attributes.  The Job object can later be queried to
  943.               find out what was originally requested in the create request.
  944.               The Printer object can be queried to find out what type of job
  945.               processing capabilities are supported and/or what the default job
  946.               processing behaviors are.
  947.            - Job Object Attributes: These attributes are returned in response
  948.               to query operation directed at a Job object.
  949.            - Printer Object Attributes: These attributes are returned in
  950.               response to a query operation directed at a Printer object.
  951.            - Unsupported Attributes: In a create request, the client supplies
  952.               an optional set of Job Template attributes.  If any of these are
  953.               unsupported by the Printer object, the Printer object returns
  954.               them in the response.  Section 15 gives a full description of how
  955.               Job Template attributes supplied by the client in a create
  956.               request are processed by the Printer object and how unsupported
  957.               attributes are returned to the client.
  958.  
  959.          Later in this section, each operation is formally defined by
  960.          identifying the allowed and expected groups of attributes for request
  961.          and response.  The model identifies a specific order for each group in
  962.          each request or response, but the attributes within each group may be
  963.          in any order.
  964.  
  965.          Note: Document data included in the operation is not strictly an
  966.          attribute, but it is treated as a special attribute group for ordering
  967.          purposes.  The only operations that support supplying the document
  968.          data within an operation request are Print-Job and Send-Document.
  969.          There are no operations responses that include document data.
  970.  
  971.          Since some operations are MANDATORY and some are OPTIONAL, a client
  972.          SHOULD first use the MANDATORY Get-Attributes operation to query the
  973.          Printer's "operations-supported" attribute before using any
  974.          unsupported operation.  A client SHOULD NOT attempt to use an
  975.          unsupported operation.  When a Printer object receives a request to
  976.          perform an operation it does not support, it returns the error code
  977.          'server-error-operation-not-supported' (see section 13.1.5.2).
  978.  
  979.  
  980.  
  981.  
  982.  
  983.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 17]
  984.                                  Expires April 14, 1998
  985.  
  986.  
  987.  
  988.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  989.  
  990.  
  991.          3.1.2 Operation Targets
  992.  
  993.          All IPP operations are directed at IPP objects.  For Printer
  994.          operations, the operation is always directed at a Printer object using
  995.          its URI (the "printer-uri" attribute).
  996.  
  997.          For Job operations, the operation is directed at either:
  998.  
  999.            - the Job object itself using the Job object's URI ("job-uri")
  1000.               assigned by the Printer object, or
  1001.            - the Printer object to which the job was originally submitted
  1002.               using the URI of the Printer ("printer-uri") in combination with
  1003.               and the 32-bit numeric Job ID ("job-id") assigned by the Printer
  1004.               object.
  1005.  
  1006.          If the operation is directed at the Job object directly using the Job
  1007.          object's URI, the client SHOULD NOT include the redundant "job-id"
  1008.          operation attribute.
  1009.  
  1010.          Note:  In the mapping of IPP over HTTP/1.1, the object's URI is
  1011.          actually encoded as the "request-URI" field of the HTTP POST
  1012.          operation. In the case of Printer operations directed at a Printer
  1013.          object, the Printer object's "printer-uri" attribute is mapped to the
  1014.          "request-URI" attribute in the HTTP header. In the case of Job
  1015.          operations directed at the Job object, the Job object's "job-uri"
  1016.          attribute is mapped to the "request-URI" attribute in the HTTP header.
  1017.          In the case of Job operations directed at the Printer object that
  1018.          created the Job, the Printer object's "printer-uri" attribute is sent
  1019.          in the HTTP header, and the "job-id" attribute is sent as an
  1020.          operational attribute in the request body. In other mappings of IPP
  1021.          operations onto some other transport mechanism, the target URI is
  1022.          encoded using some other transport specific addressing mechanism.
  1023.  
  1024.          The following rules apply to the use of port numbers in URIs that
  1025.          identify IPP objects:
  1026.  
  1027.            1. If the protocol scheme for the URI allows the port number to be
  1028.               explicitly included in the URI string, and an explicit port
  1029.               number is specified in the published URI, then that port number
  1030.               MUST be used by the client to contact the IPP server.
  1031.  
  1032.            2. If the protocol scheme for the URI does not allow an explicit
  1033.               port number specification, then the default port number for the
  1034.               protocol should be used.
  1035.  
  1036.            3. Consult the appropriate IPP protocol mapping document to
  1037.               determine alternate port numbers for the protocol specified in
  1038.               the server URI.
  1039.  
  1040.  
  1041.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 18]
  1042.                                  Expires April 14, 1998
  1043.  
  1044.  
  1045.  
  1046.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  1047.  
  1048.  
  1049.  
  1050.          3.1.3 Character Set and Natural Language Operation Attributes
  1051.  
  1052.          Some Job and Printer attributes have values that are text strings and
  1053.          names intended for human understanding rather than machine
  1054.          understanding (see the 'text' and 'name' attribute syntax descriptions
  1055.          in section 4.1).  The following sections describe two MANDATORY
  1056.          attributes for every IPP operation request and response.  These
  1057.          attributes are "attributes-charset" and "attributes-natural-language".
  1058.          For the sake of brevity in this document, these operation attribute
  1059.          descriptions are not repeated with every operation request and
  1060.          response, but have a reference back to this section instead.
  1061.  
  1062.          3.1.3.1 Request Operation Attributes
  1063.  
  1064.          The client SHALL supply and the Printer object SHALL support the
  1065.          following MANDATORY operation attributes in every IPP operation
  1066.          request:
  1067.  
  1068.            "attributes-charset" (charSet):
  1069.               This operation attribute identifies the charset (coded character
  1070.               set and encoding method) used by any 'text' and 'name' attributes
  1071.               that the client is supplying in this request and that the Printer
  1072.               object SHALL return in this operation response.  See Sections
  1073.               4.1.1 and 4.1.2 for the specification of the 'text' and 'name'
  1074.               attribute syntaxes.
  1075.  
  1076.               The Printer object SHALL support the 'utf-8' charset [RFC2044]
  1077.               and MAY support additional charsets provided that they are
  1078.               registered with IANA [IANA-CS].  If the Printer object does not
  1079.               support the supplied charset value, the Printer object SHALL
  1080.               reject the request and return status code 'client-error-charset-
  1081.               not-supported'.  The Printer object SHALL indicate the charset(s)
  1082.               supported as the values of the "charsets-supported" Printer
  1083.               attribute (see Section 4.4.14), so that the client MAY query
  1084.               which charset(s) are supported.
  1085.  
  1086.               See the 'charSet' attribute syntax description in Section 4.1.7
  1087.               for the syntax and semantic interpretation of the values of this
  1088.               attribute and for example values.
  1089.  
  1090.            "attributes-natural-language" (naturalLanguage):
  1091.               This operation attribute identifies the natural language used by
  1092.               any 'text' and 'name' attributes that the client is supplying in
  1093.               this request.  A Printer SHOULD do its best to respond in the
  1094.               same natural language.
  1095.  
  1096.  
  1097.  
  1098.  
  1099.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 19]
  1100.                                  Expires April 14, 1998
  1101.  
  1102.  
  1103.  
  1104.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  1105.  
  1106.  
  1107.               There are no MANDATORY natural languages required for the Printer
  1108.               object to support.  However, the Printer's "natural-language-
  1109.               supported" attribute SHALL list the natural languages supported,
  1110.               so that the client MAY query which natural language(s) are
  1111.               supported.  For any of the attributes for which the Printer
  1112.               generates messages, i.e., for the "job-state-message", "printer-
  1113.               state-message" attributes ", and Status Messages (see Section
  1114.               3.1.4) in operation responses, the Printer object SHALL be able
  1115.               to generate messages in any of its supported natural languages.
  1116.               If the client requests a natural language that is not supported,
  1117.               the Printer object SHALL return these generated messages in the
  1118.               Printer's configured natural language as specified by the
  1119.               Printer's "printer-natural-language " attribute" (see Section
  1120.               4.4.15).
  1121.  
  1122.               For other Printer 'text' and 'name' attributes supplied by the
  1123.               operator, system administrator, or manufacturer, i.e., for
  1124.               "printer-name" (name), "printer-location" (text), "printer-info"
  1125.               (text), and "printer-make-and-model" (text), the Printer object
  1126.               is only required to support the configured natural language of
  1127.               the Printer identified by the Printer's "printer-natural-language
  1128.               " attribute, though support of additional natural languages for
  1129.               these attributes is permitted
  1130.  
  1131.               If the Printer object does not support the natural language value
  1132.               supplied by the client, the Printer object SHALL either (1)
  1133.               reject the request and return status code ' client-error-natural-
  1134.               language-not-supported' or (2) accept the natural language rather
  1135.               than returning an error, depending on implementation.  In the
  1136.               latter case, the Printer object SHALL use the method for
  1137.               representing exception natural languages in attribute values as
  1138.               described for the 'text' attribute syntax in Section 4.1.1 for
  1139.               any such 'text' or 'name' attributes that the Printer (1) accepts
  1140.               from or (2) returns to a client.
  1141.  
  1142.               See the 'naturalLanguage' attribute syntax description in Section
  1143.               4.1.8 for the syntax and semantic interpretation of the values of
  1144.               this attribute and for example values.
  1145.  
  1146.          3.1.3.2 Response Operation Attributes
  1147.  
  1148.          The Printer object SHALL supply and the client SHALL support the
  1149.          following MANDATORY operation attributes in every IPP operation
  1150.          response:
  1151.  
  1152.            "attributescharset" (charSet):
  1153.               This operation attribute identifies the charset used by any
  1154.               'text' and 'name' attributes that the Printer object is returning
  1155.  
  1156.  
  1157.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 20]
  1158.                                  Expires April 14, 1998
  1159.  
  1160.  
  1161.  
  1162.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  1163.  
  1164.  
  1165.               in this response.  The value in this response SHALL be the same
  1166.               value as the "attributes-charset" operation attribute supplied by
  1167.               the client in the request.  See "attributes-charset" described in
  1168.               Section 3.1.3.1 above.
  1169.  
  1170.               If the Printer object supports more than just the 'utf-8'
  1171.               charset, the Printer object SHALL be able to code convert between
  1172.               each of the charsets supported on a highest fidelity possible
  1173.               basis in order to return the 'text' and 'name' attributes in the
  1174.               charset requested by the client.  However, some information loss
  1175.               MAY occur during the charset conversion depending on the charsets
  1176.               involved.  For example, the Printer object may convert from a
  1177.               UTF-8 'a' to a US-ASCII 'a' (with no loss of information),  from
  1178.               an ISO Latin 1 CAPITAL LETTER A WITH ACUTE ACCENT to US-ASCII 'A'
  1179.               (losing the accent), or from a UTF-8 Japanese Kanji character to
  1180.               some ISO Latin 1 error character indication such as '?', decimal
  1181.               code equivalent, or to the absence of a character, depending on
  1182.               implementation.
  1183.  
  1184.            "attributes-natural-language" (naturalLanguage):
  1185.               This is a MANDATORY Job Template attribute for the Printer object
  1186.               to return.  This attribute specifies the natural language used by
  1187.               'text' and 'name' attributes with empty tags in this response and
  1188.               SHALL be the same value as supplied by the client in the request,
  1189.               whether the Printer object supports that value or not.  Any
  1190.               'text' or 'name' values in this response that have a different
  1191.               natural language SHALL have a fully specified natural language
  1192.               tag pre-pended to each such attribute value.
  1193.  
  1194.               In a subsequent query request (Get-Attributes or Get-Jobs), the
  1195.               Printer object NEED NOT convert any 'text' or 'name' attribute
  1196.               values to the natural language of the requester when it is
  1197.               different from that specified (and subsequently stored) in the
  1198.               original create request..  In such cases, the Printer object
  1199.               SHALL return an explicit natural language indicator for each such
  1200.               attribute value.  See the 'text' attribute syntax description in
  1201.               Section 4.1.1.
  1202.  
  1203.          3.1.4 Operation Status Codes and Messages
  1204.  
  1205.          Every operation response returns a MANDATORY status code and an
  1206.          OPTIONAL status message. A status code provides information on the
  1207.          processing of a request.  A status message provides a short textual
  1208.          description of the status of the operation.  The status code is
  1209.          intended for use by automata and the status message is intended for
  1210.          the human user.  If a response does include a status message, an IPP
  1211.          client is not required to examine or display the status message,
  1212.          however it SHOULD do so in some implementation specific manner.
  1213.  
  1214.  
  1215.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 21]
  1216.                                  Expires April 14, 1998
  1217.  
  1218.  
  1219.  
  1220.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  1221.  
  1222.  
  1223.          Section 13 describes the status codes and suggests a corresponding
  1224.          status message for each status code.  In some cases, if the status
  1225.          code indicates an error, there may be additional attributes in the
  1226.          response that are not returned in the successful case.  One such
  1227.          example is the set of unsupported attributes in the Print-Job response
  1228.          (see section 3.2.1.2).
  1229.  
  1230.          The status code is a numeric value that has semantic meaning.  The
  1231.          status code is similar to a "type2 enum" (see section 4.1 on
  1232.          "Attribute Syntaxes") except that values can range only from 0x0000 to
  1233.          0xFFFF.
  1234.  
  1235.          A client implementation of IPP could convert status code values into
  1236.          any localized string that has semantic meaning to the end user.  The
  1237.          Printer object SHALL be able to generate this message in any of the
  1238.          natural languages identified by the Printer's "natural-language-
  1239.          supported" attribute (see the "attributes-natural-language" operation
  1240.          attribute specified in Section 3.1.3.1).  If the charset requested by
  1241.          the client in the "attributes-charset" operation attribute is not
  1242.          supported by the Printer object, the Printer object SHALL represent
  1243.          the status message, if returned, in the charset specified by the
  1244.          Printer's "printer-charset" attribute (which the client MAY not be
  1245.          able to interpret).
  1246.  
  1247.          3.1.5 Security Concerns for IPP Operations
  1248.  
  1249.          3.1.5.1 Authenticated Requester Identity
  1250.  
  1251.          IPP is layered on top of security services that supply the requester's
  1252.          identity.  It is assumed that the identity supplied by the
  1253.          authentication service is the most authenticated identity required by
  1254.          a given site's configuration and current policy.  It is also assumed
  1255.          that the layering allows for a single IPP implementation to be run
  1256.          over a consistent interface that supplies the authenticated identity.
  1257.          The authentication interface should allow for various modular and
  1258.          extensible authentication service implementations without requiring
  1259.          changes to the IPP implementation.
  1260.  
  1261.          Once the authenticated identity of the requester has been supplied to
  1262.          the IPP implementation, the implementation uses that identity to
  1263.          enforce any authorization policy(ies) that might be in place.  When a
  1264.          Job is created, the identity of the requester from the create request
  1265.          is persistently stored in the Job's "job-originating-user" attribute.
  1266.          This attribute can be used to match the requester's identity of
  1267.          subsequent operations on that Job in order to enforce the local
  1268.          authorization policy(ies), if any. For example, a one site's policy
  1269.          might be that only the job owner is allowed to cancel a job.  There
  1270.          are operation status codes that allow an implementation to return
  1271.  
  1272.  
  1273.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 22]
  1274.                                  Expires April 14, 1998
  1275.  
  1276.  
  1277.  
  1278.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  1279.  
  1280.  
  1281.          information back to the operation requester about what has been
  1282.          forbidden, not allowed, or not authorized.  The details of and
  1283.          mechanisms to set up authorization policy(ies) are not part of IPP,
  1284.          and must be established via some mechanism outside the scope of IPP.
  1285.  
  1286.          3.1.5.2 Restricted Queries
  1287.  
  1288.          In many of these IPP operations, a client supplies a list of
  1289.          attributes to be returned in the response.  A Printer may be
  1290.          configured, for security reasons, not to return all attributes that a
  1291.          client requests.  It may even return none of the requested attributes.
  1292.          In such cases, the status returned is the same as if the Printer had
  1293.          returned all requested attributes.  The client cannot tell by such a
  1294.          response whether the requested attribute was present or absent on the
  1295.          Printer or Job.
  1296.  
  1297.          3.1.6 Versions
  1298.  
  1299.          Each operation request carries with it a version number. Each version
  1300.          number is in the form "X.Y" where X is the major version number and Y
  1301.          is the minor version number. By including a version number in the
  1302.          client request, it allows the client (the requester) to identify which
  1303.          version of IPP it is interested in using. If the Printer does not
  1304.          support that version, the Printer responds with a status code of
  1305.          'server-error-version-not-supported'.
  1306.  
  1307.          There is no version negotiation per se. However, if after receiving a
  1308.          version not supported status code from the Printer, there is nothing
  1309.          that prevents a client from trying again with a different version
  1310.          number. For example, a client might be configured to support IPP
  1311.          version 3.0, 2.5, 2.0 and 1.0 (hypothetically speaking). A client
  1312.          might first try to speak version 3.0. If after receiving a version not
  1313.          supported, it might successively try version 2.5, then 2.0, and then
  1314.          1.0. All implementations MUST support version 1.0.
  1315.  
  1316.          There is only one version number that covers both IPP Model and the
  1317.          IPP Protocol changes. Thus the version number MUST change when
  1318.          introducing a new version of the Model document or a new version of
  1319.          the Protocol document.
  1320.  
  1321.          Changes to the major version number indicate structural or syntactic
  1322.          changes that make it impossible for older version IPP processors to
  1323.          correctly parse and interpret the new or changed attributes,
  1324.          operations and responses. If the major version number changes, the
  1325.          minor version numbers is set to zero. One example that would have
  1326.          required a change to the major version number would have been adding
  1327.          the "ipp-attribute-fidelity" attribute if it had not been part of
  1328.          version 1.0. Items that might affect the changing of the major version
  1329.  
  1330.  
  1331.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 23]
  1332.                                  Expires April 14, 1998
  1333.  
  1334.  
  1335.  
  1336.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  1337.  
  1338.  
  1339.          number include any changes to the protocol specification itself such
  1340.          as:
  1341.  
  1342.            - reordering of ordered attributes or attribute sets
  1343.            - changes to the syntax of existing attributes
  1344.            - changing OPTIONAL to MANDATORY and vice versa
  1345.  
  1346.          Changes to the minor version number indicate the addition of new
  1347.          features, attributes and attribute values that may not be understood
  1348.          by all IPP processors, but which can be ignored if not understood.
  1349.          Items that might affect the changing of the minor version number
  1350.          include any changes to the model objects and attributes but not the
  1351.          protocol specification itself, such as:
  1352.  
  1353.            - grouping all extensions not included in a previous version into a
  1354.               new version
  1355.            - formally adding in new attribute values
  1356.            - changing any of the type1 attributes
  1357.  
  1358.          3.1.7 Job Creation Operations
  1359.  
  1360.          In order to "submit a print job" and create a new Job object, a client
  1361.          issues a create request.  A create request is any one of following
  1362.          three operation requests:
  1363.  
  1364.            - The Print-Job Request: A client that wants to submit a print job
  1365.               with only a single document uses the Print-Job operation. .  The
  1366.               operation allows for the client to "push" the document data to
  1367.               the Printer by including the document data in the request itself.
  1368.  
  1369.            - The Print-URI Request: A client that wants to submit a print job
  1370.               with only a single document where the Printer "pulls" the
  1371.               document data uses the Print-URI operation.   In this case, the
  1372.               client includes only a URI reference to the document data (not
  1373.               the document data itself).
  1374.  
  1375.            - The Create-Job Request: A client that wants to submit a print job
  1376.               with multiple documents uses the Create-Job operation. . This
  1377.               operation is followed by an arbitrary number of Send-Document or
  1378.               Send-URI operations (each creating another document for the newly
  1379.               create Job object).  The Send-Document operation includes the
  1380.               document data in the request (the client "pushes" the document
  1381.               data to the printer), and the Send-URI operation includes only a
  1382.               URI reference to the document data in the request (the Printer
  1383.               "pulls" the document data from the referenced location).  The
  1384.               last Send-Document or Send-URI request for a given Job object
  1385.               includes a "last-document" operation attribute set to 'true'
  1386.               indicating that this is the last document.
  1387.  
  1388.  
  1389.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 24]
  1390.                                  Expires April 14, 1998
  1391.  
  1392.  
  1393.  
  1394.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  1395.  
  1396.  
  1397.  
  1398.          Throughout this model specification, the term "create request" is used
  1399.          to refer to any of these three operation requests.
  1400.  
  1401.          A Create-Job operation followed by only one Send-Document operation is
  1402.          semantically equivalent to a Print-Job operation, however, for
  1403.          performance reasons, the client SHOULD use the Print-Job operation for
  1404.          all single Document Jobs.  Also, Print-Job is a MANDATORY operation
  1405.          (all implementations MUST support it) whereas Create-Job is an
  1406.          OPTIONAL operation, hence some implementations might not support it.
  1407.  
  1408.          Section 15 describes the rules and issues surrounding the processing
  1409.          and either the acceptance or rejection of a create request.
  1410.  
  1411.          Job submission time is the point in time when a client issues a create
  1412.          request.  The initial state of every Job object is the 'pending' or
  1413.          'pending-held' state.  Later, the Printer object begins processing the
  1414.          job.  At this point in time, the Job object's state moves to
  1415.          'processing'.  This is known as job processing time.  There are
  1416.          validation checks that must be done at job submission time and others
  1417.          that must be performed at job processing time.
  1418.  
  1419.          At job submission time and at the time a Validate-Job operation is
  1420.          received, the Printer MUST do the following:
  1421.  
  1422.            1. Process the client supplied attributes using the rules supplied
  1423.               in section 15 and either accept or reject the request
  1424.            2. Validate the syntax of and support for the scheme of any client
  1425.               supplied URI
  1426.  
  1427.          At job submission time the Printer SHOULD NOT perform the validation
  1428.          checks reserved for job processing time such as:
  1429.  
  1430.            1. Validate the document data
  1431.            2. Validate the actual contents of any client supplied URI (resolve
  1432.               the reference and follow the link to the document data)
  1433.  
  1434.          At job submission time, these additional job processing time
  1435.          validation checks are essentially useless, since they require actually
  1436.          parsing and interpreting the document data, are not guaranteed to be
  1437.          100% accurate, and must yet be done again at job processing time.
  1438.          Also, in the case of a URI, checking for availability at job
  1439.          submission time does not guarantee availability at job processing
  1440.          time.   In addition, at job processing time, the Printer object might
  1441.          discover any of the following conditions that were not detectable at
  1442.          job submission time:
  1443.  
  1444.            - runtime errors in the document data,
  1445.  
  1446.  
  1447.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 25]
  1448.                                  Expires April 14, 1998
  1449.  
  1450.  
  1451.  
  1452.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  1453.  
  1454.  
  1455.            - nested document data that is in an unsupported format,
  1456.            - the URI reference is no longer valid (i.e., the server hosting
  1457.               the document might be down), or
  1458.            - any other job processing error
  1459.  
  1460.          At job processing time, since the Printer has already responded with a
  1461.          successful status code in the response to the create request, if the
  1462.          Printer object detects an error, the Printer object in unable to
  1463.          inform the end user of the error with an operational status code.   In
  1464.          this case, the Printer, depending on the error, can set the "job-
  1465.          state", "job-state-reasons", or "job-state-message" attributes to the
  1466.          appropriate value(s) so that later queries can report the correct job
  1467.          status.
  1468.  
  1469.  
  1470.          3.2 Printer Operations
  1471.  
  1472.          All Printer operations are directed at Printer objects.  A client MUST
  1473.          always supply the "printer-uri" attribute in order to identify the
  1474.          correct target of the operation.  In HTTP/1.1 mapping of IPP, this
  1475.          attribute is not supplied in the body of the operation as other
  1476.          operation attributes are.  It is supplied in the "request-URI" field
  1477.          in the HTTP header.
  1478.  
  1479.          3.2.1 Print-Job Operation
  1480.  
  1481.          When an end user desires to submit a print job with only one document
  1482.          and the client supplies the document data (rather than just a
  1483.          reference to the data), the client uses a Print-Job operation.
  1484.  
  1485.          3.2.1.1 Print-Job Request
  1486.  
  1487.          The following groups of attributes are supplied as part of the Print-
  1488.          Job Request:
  1489.  
  1490.          Group1: Operation Attributes
  1491.  
  1492.            Target:
  1493.               The "printer-uri" target for this operation as described in
  1494.               section 3.1.2.
  1495.  
  1496.            Natural Language and Character Set:
  1497.               The "attributes-charset" and "attributes-natural-language"
  1498.               attributes as described in section 3.1.3.1.
  1499.  
  1500.            "job-name" (name):
  1501.               This attribute is OPTIONALLY supplied by the client, and it
  1502.               contains the client supplied Job name.  If this attribute is
  1503.  
  1504.  
  1505.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 26]
  1506.                                  Expires April 14, 1998
  1507.  
  1508.  
  1509.  
  1510.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  1511.  
  1512.  
  1513.               supplied, its value it used for the "job-name" attribute of the
  1514.               newly created Job object. If this attribute is not supplied by
  1515.               the client, the Printer generates a name to use in the "job-name"
  1516.               attribute of the newly created Job object (see Section 4.3.4).
  1517.  
  1518.            "document-name" (name):
  1519.               This attribute is OPTIONALLY supplied by the client, and it
  1520.               contains the client supplied document name.  The document name
  1521.               MAY be different than the Job name.  Typically, the client
  1522.               software automatically supplies the document name on behalf of
  1523.               the end user by using a file name or an application generated
  1524.               name.  If this attribute is supplied, its value can be used in a
  1525.               manner defined by each implementation.  Examples include: printed
  1526.               along with the Job (banner page, page adornments, etc.), used by
  1527.               accounting or resource tracking management tools, or even stored
  1528.               along with the document as a document level attribute.  IPP/1.0
  1529.               does not support the concept of document level attributes,
  1530.               however, a vendor specific extension to IPP/1.0 might support the
  1531.               document level attributes.  In this case, the "document-name"
  1532.               attribute could be persistently stored along with the document
  1533.               and queried using a Get-Attributes operation on the Job object
  1534.               that includes a request for document level attributes or some
  1535.               other private extension mechanism.
  1536.  
  1537.            "ipp-attribute-fidelity" (boolean):
  1538.               This attribute is OPTIONALLY supplied by the client. If not
  1539.               supplied, the Printer object assumes the value is 'false'.  The
  1540.               value 'true' indicates that total fidelity to client supplied
  1541.               attributes and values is required. The value 'false' indicates
  1542.               that a reasonable attempt to print the Job is acceptable.  All
  1543.               Printer objects MUST support both types of job processing.  See
  1544.               section 15  for a full description of "ipp-attribute-fidelity"
  1545.               and its relationship to other attributes, especially the Printer
  1546.               object's "pdl-override" attribute.
  1547.  
  1548.            "document-charset" (charSet):
  1549.               This attribute is OPTIONALLY supplied by the client.  A Printer
  1550.               object SHALL support this attribute if it supports a document-
  1551.               format that requires a character set to be identified in order to
  1552.               unambiguously interpret the document, such as 'text/plain'.
  1553.               There are no particular values required for the Printer object to
  1554.               support.  This attribute specifies the charset of the document
  1555.               for those document-formats that require a specification of the
  1556.               charset in order to image the document unambiguously.  If the
  1557.               value of the "document-format" attribute contains a charset
  1558.               parameter (see 'mimeType' attribute syntax in Section 4.1.9), the
  1559.               client SHALL also supply the "document-charset" attribute and its
  1560.               value SHALL be the same.
  1561.  
  1562.  
  1563.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 27]
  1564.                                  Expires April 14, 1998
  1565.  
  1566.  
  1567.  
  1568.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  1569.  
  1570.  
  1571.  
  1572.            "document-natural-language" (naturalLanguage):
  1573.               This attribute is OPTIONALLY supplied by the client.  There are
  1574.               no particular values are required for the Printer object to
  1575.               support.   This attribute specifies the natural language of the
  1576.               document for those document-formats that require a specification
  1577.               of the natural language in order to image the document
  1578.               unambiguously.
  1579.  
  1580.  
  1581.          Group2: Job Template Attributes
  1582.  
  1583.               The client OPTIONALLY supplies a set of Job Template attributes
  1584.               as defined in section 4.2. See section 15  for a full description
  1585.               of Job Template attributes.
  1586.  
  1587.          Group 3: Document Content
  1588.  
  1589.               The client MUST supply the document data to be processed.
  1590.  
  1591.          Note: The simplest Print-Job Request consists of just the Document
  1592.          Content and nothing else.  In this case, the Printer object:
  1593.  
  1594.            - creates a new Job object (the Job object contains a single
  1595.               document),
  1596.            - stores a generated Job name in the "job-name" attribute,
  1597.            - assumes that the document data is in a supported format, and
  1598.            - uses its corresponding default value attributes for missing Job
  1599.               Template attributes and embedded instructions in the document
  1600.               data.
  1601.  
  1602.  
  1603.          3.2.1.2 Print-Job Response
  1604.  
  1605.          The Printer SHALL return to the client the following sets of
  1606.          attributes as part of the Print-Job Response:
  1607.  
  1608.          Group 1: Operation Attributes
  1609.  
  1610.            Status Code and Message:
  1611.               The response includes the MANDATORY status code and an OPTIONAL
  1612.               "status-message" (text) operation attribute as described in
  1613.               section 3.1.4.
  1614.  
  1615.            Natural Language and Character Set:
  1616.               The "attributes-charset" and "attributes-natural-language"
  1617.               attributes as described in section 3.1.3.2.
  1618.  
  1619.  
  1620.  
  1621.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 28]
  1622.                                  Expires April 14, 1998
  1623.  
  1624.  
  1625.  
  1626.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  1627.  
  1628.  
  1629.          Group 2: Job Object Attributes
  1630.  
  1631.            "job-uri" (uri):
  1632.               The Printer object MUST return the Job object's MANDATORY  "job-
  1633.               uri" attribute.
  1634.  
  1635.            "job-id":
  1636.               The Printer object MUST return the Job object's MANDATORY  "job-
  1637.               id" attribute.
  1638.  
  1639.            "job-state":
  1640.               The Printer object MUST return the Job object's MANDATORY "job-
  1641.               state" attribute. The value of this attribute (along with the
  1642.               value of the next attribute "job-state-reasons") is taken from a
  1643.               "snapshot" of the new Job object at some meaningful point in time
  1644.               (implementation defined) between when the Printer object receives
  1645.               the Print-Job Request and when the Printer object returns the
  1646.               response.
  1647.  
  1648.            "job-state-reasons":
  1649.               The Printer object OPTIONALLY returns the  Job object's OPTIONAL
  1650.               "job-state-reasons" attribute. If the Printer object supports
  1651.               this attribute  then it MUST be returned in the response.  If
  1652.               this attribute is not returned in the response, the client can
  1653.               assume that the "job-state-reasons" attribute is not supported
  1654.               and will not be returned in a subsequent Job object query.
  1655.  
  1656.            "job-state-message":
  1657.               The Printer object OPTIONALLY returns the Job object's OPTIONAL
  1658.               "job-state-message" attribute. If the Printer object supports
  1659.               this attribute then it MUST be returned in the response.  If this
  1660.               attribute is not returned in the response, the client can assume
  1661.               that the "job-state-message" attribute is not supported and will
  1662.               not be returned in a subsequent Job object query.
  1663.  
  1664.            "number-of-intervening-jobs":
  1665.               The Printer object OPTIONALLY returns the Job object's OPTIONAL
  1666.               "number-of-intervening-jobs" attribute.  If the Printer object
  1667.               supports this attribute then it MUST be returned in the response.
  1668.               If this attribute is not returned in the response, the client can
  1669.               assume that the "number-of-intervening-jobs" attribute is not
  1670.               supported and will not be returned in a subsequent Job object
  1671.               query.
  1672.  
  1673.               Note: Since any printer state information which affects a job's
  1674.               state is reflected in the "job-state" and "job-state-reasons"
  1675.               attributes, it is sufficient to return only these attributes and
  1676.               no specific printer status attributes.
  1677.  
  1678.  
  1679.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 29]
  1680.                                  Expires April 14, 1998
  1681.  
  1682.  
  1683.  
  1684.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  1685.  
  1686.  
  1687.  
  1688.          Group 3: Unsupported Attributes
  1689.  
  1690.               This is an OPTIONAL set of attributes.  It is a set of Job
  1691.               Template attributes supplied by the client (in the request) that
  1692.               are not supported by the Printer object. When the Printer object
  1693.               rejects the request because of more than one unsupported
  1694.               attribute (see section 15), it SHOULD return all of the
  1695.               unsupported attributes.  Some implementations may choose to only
  1696.               return the first unsupported attribute that is encountered during
  1697.               the processing of the attributes, but that may lead to additional
  1698.               requests with only one "fixed" attribute from the set of problem
  1699.               attributes.  In the case where the Printer object accepts the
  1700.               request and creates a Job object, the Printer MUST return the set
  1701.               of unsupported attributes where substitutions were made or the
  1702.               attribute was completely ignored.
  1703.  
  1704.               Unsupported attributes fall into two categories:
  1705.  
  1706.               1. The Printer object does not support the named attribute (no
  1707.               matter what the value), or
  1708.               2. The Printer object does supports the attribute, but not the
  1709.               particular value supplied by the client (i.e., the Printer does
  1710.               not have that value in the corresponding supported values
  1711.               attribute).
  1712.  
  1713.               In the case of an unsupported attribute name, the Printer object
  1714.               returns the client supplied attribute with a substituted special
  1715.               value of 'unsupported' indicating no support for the attribute
  1716.               itself. In the case of a supported attribute with an unsupported
  1717.               value, the Printer object simply returns the client-supplied
  1718.               attribute.  This indicates support for the attribute, but no
  1719.               support for that particular value.
  1720.  
  1721.          Note: The simplest response consists of the just the MANDATORY Job
  1722.          Attributes and a status code of "successful-ok".
  1723.  
  1724.          3.2.2 Print-URI Operation
  1725.  
  1726.          This operation is identical to the Print-Job operation (section 3.2.1)
  1727.          except that a client supplies a URI reference to the document data
  1728.          using the "document-uri" (uri) operation attribute rather than
  1729.          including the document data itself.  It is up to the IPP server to
  1730.          interpret the URI and subsequently "pull" the document from the source
  1731.          referenced by the URI string.  At job submission time, the Printer
  1732.          MUST validate the fact that it supports the retrieval method (e.g.,
  1733.          http, ftp, etc.) implied by the URI.  If the Printer object supports
  1734.  
  1735.  
  1736.  
  1737.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 30]
  1738.                                  Expires April 14, 1998
  1739.  
  1740.  
  1741.  
  1742.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  1743.  
  1744.  
  1745.          this operation, it MUST support the "reference-uri-schemes-supported"
  1746.          attribute (see section 4.4.21).
  1747.  
  1748.          3.2.3 Validate-Job Operation
  1749.  
  1750.          This operation is similar to the Print-Job operation (section 3.2.1)
  1751.          except that a client supplies no document data and the Printer
  1752.          allocates no resources (i.e., it does not create a new Job object).
  1753.          This operation is used only to verify capabilities of a printer object
  1754.          against whatever attributes are supplied by the client in the
  1755.          Validate-Job request.  There are no Job Object Attributes returned in
  1756.          the Validate-Job Response.  If the Printer supports either the Print-
  1757.          URI or Send-URI operations, the client MAY include a "document-uri"
  1758.          attribute in the request.  In this case, the Printer MUST validate
  1759.          that the Printer supports the retrieval method implied by the URI, and
  1760.          SHOULD check for validate URI syntax.  The Printer NEED NOT follow the
  1761.          reference and validate the contents of the reference. If all is well,
  1762.          the Printer returns the status code "successful-ok".  Otherwise, the
  1763.          Printer returns a set of unsupported attributes and/or the appropriate
  1764.          error status code.  If the client supplies the "ipp-attribute-
  1765.          fidelity" attribute set to false (or does not supply the attribute at
  1766.          all) and if the Printer object returns a "successful-ok-ignored-or-
  1767.          substituted-attributes", the Printer object SHOULD return all ignored
  1768.          or substituted in the Unsupported Attributes group.  In such a case,
  1769.          the Printer object MUST return at least one attribute indicating an
  1770.          unsupported attribute value or an ignored attribute.
  1771.  
  1772.          3.2.4 Create-Job Operation
  1773.  
  1774.          This operation is similar to the Print-Job operation (section 3.2.1)
  1775.          except that in the Create-Job request , a client does not supply
  1776.          document data (or any reference to document data).  Also, the client
  1777.          does not supply any of the "document-name", "content-charset", or
  1778.          "content-natural-language" attributes.  This operation is followed by
  1779.          one or more Send-Document or Send-URI operations.  In each of these
  1780.          operation requests, the client OPTIONALLY supplies the "document-
  1781.          name", "content-charset", or "content-natural-language" attributes for
  1782.          each document in the multi-document Job.  If a Printer object supports
  1783.          the Create-Job operation, it MUST also support the Send-Document
  1784.          operation and also MAY support the Send-URI operation.
  1785.  
  1786.          3.2.5 Get-Attributes Operation
  1787.  
  1788.          The Printer Get-Attributes operation allows a client to obtain
  1789.          information from a Printer object. In the operations attributes in a
  1790.          request, the client supplies the set of attribute names and/or
  1791.          attribute group names in which the requester is interested.  In the
  1792.          operation attribute in the response, the Printer returns a
  1793.  
  1794.  
  1795.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 31]
  1796.                                  Expires April 14, 1998
  1797.  
  1798.  
  1799.  
  1800.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  1801.  
  1802.  
  1803.          corresponding attribute set with the appropriate attribute values
  1804.          filled in.
  1805.  
  1806.          For Printers, the possible names of attribute groups are:
  1807.  
  1808.            - 'job-template': all of the Job Template attributes that apply to
  1809.               a Printer object (the last two columns of the table in Section
  1810.               4.2).
  1811.            - 'printer-description': the attributes specified in Section 4.4.
  1812.  
  1813.          There is also the special group 'all' that includes all supported
  1814.          attributes.  Since a client MAY request specific attributes or named
  1815.          groups, there is a potential that there is some overlap.  For example,
  1816.          if a client requests, 'printer-name', 'printer-description', and
  1817.          'all', client is actually requesting the "printer-group, and once by
  1818.          inclusion in the 'all' group.   In all cases, the Printer SHALL only
  1819.          return the attribute once in the response.
  1820.  
  1821.          It is NOT REQUIRED that a Printer support all attributes belonging to
  1822.          a group, however it is MANDATORY that each Printer implementation
  1823.          understand all group names.
  1824.  
  1825.          3.2.5.1 Get-Attributes Request
  1826.  
  1827.          The following sets of attributes are part of the Get-Attributes
  1828.          Request when the request is directed to a Printer object:
  1829.  
  1830.          Group 1: Operation Attributes
  1831.  
  1832.            Target:
  1833.               The "printer-uri" target for this operation as described in
  1834.               section 3.1.2.
  1835.  
  1836.            Natural Language and Character Set:
  1837.               The "attributes-charset" and "attributes-natural-language"
  1838.               attributes as described in section 3.1.3.1.
  1839.  
  1840.            "requested-attributes" (1setOf keyword) :
  1841.               The client OPTIONALLY supplies a set of attribute names  and/or
  1842.               attribute group names in whose values the requester is
  1843.               interested.  If the client omits this attribute, the Printer
  1844.               SHALL respond as if this attribute had been supplied with a value
  1845.               of 'all'.
  1846.  
  1847.            "document-format" (mimeType) :
  1848.               The client OPTIONALLY supplies this attribute.  This attribute is
  1849.               useful for a Printer to determine the set of supported attribute
  1850.               values that relate to the requested document format.  The Printer
  1851.  
  1852.  
  1853.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 32]
  1854.                                  Expires April 14, 1998
  1855.  
  1856.  
  1857.  
  1858.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  1859.  
  1860.  
  1861.               SHOULD return only (1) those attributes that are supported for
  1862.               that format and (2) the attribute values that are supported for
  1863.               the specified document format.  By specifying the document
  1864.               format, the client can get the Printer to eliminate the
  1865.               attributes and values that are not supported for a specific
  1866.               document format.  For example, a Printer might have multiple
  1867.               interpreters to support both 'application/postscript' (for
  1868.               PostScript) and 'text/plain' (for text) documents.  However, for
  1869.               only one of those interpreters might the Printer be able to
  1870.               support "number-up" with values of '1', '2', and '4'.  For the
  1871.               other interpreter it might be able to only support "number-up"
  1872.               with a value of '1'.
  1873.  
  1874.               If the client omits this attribute, the Printer SHALL respond as
  1875.               if the attribute had been supplied with a value set to the
  1876.               Printer object's "document-format-default" default value
  1877.               attribute.  It is recommended that the client always supply a
  1878.               value for "document-format", since the Printer object's
  1879.               "document-format-default" may be 'application/octet-stream', in
  1880.               which case the returned attributes and values are for the union
  1881.               of the document formats that the Printer can automatically sense.
  1882.               For more details, see the description of the 'mimeType' attribute
  1883.               syntax in section 4.1.9.
  1884.  
  1885.               NOTE:  The "document-format" operation attribute is a fairly
  1886.               sophisticated filtering notion that is not supported by many
  1887.               existing print systems or devices.
  1888.  
  1889.          3.2.5.2 Get-Attributes Response
  1890.  
  1891.          The Printer object returns the following sets of attributes as part of
  1892.          the Get-Attributes Response:
  1893.  
  1894.          Group 1: Operation Attributes
  1895.  
  1896.            Status Code and Message:
  1897.               The response includes the MANDATORY status code and an OPTIONAL
  1898.               "status-message" (text) operation attribute as described in
  1899.               section 3.1.4.
  1900.  
  1901.            Natural Language and Character Set:
  1902.               The "attributes-charset" and "attributes-natural-language"
  1903.               attributes as described in section 3.1.3.2.
  1904.  
  1905.          Group 2: Requested Printer Object Attributes
  1906.  
  1907.  
  1908.  
  1909.  
  1910.  
  1911.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 33]
  1912.                                  Expires April 14, 1998
  1913.  
  1914.  
  1915.  
  1916.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  1917.  
  1918.  
  1919.               This is the set of requested attributes and their current values.
  1920.               The Printer object ignores (does not respond with) any requested
  1921.               attribute which is not supported.
  1922.  
  1923.          3.2.6 Get-Jobs Operation
  1924.  
  1925.          The Get-Jobs operation allows a client to retrieve the list of Jobs
  1926.          belonging to the target Printer object.  The client may also supply a
  1927.          list of Job attribute names or attribute group names.  These Job
  1928.          attributes will be returned for each Job that is returned.
  1929.  
  1930.          This operation is similar Get-Attributes, except that this Get-Jobs
  1931.          operation returns attributes from possibly more than one object (see
  1932.          the description of attribute group names in section 3.3.4).
  1933.  
  1934.          3.2.6.1 Get-Jobs Request
  1935.  
  1936.          The client submits the Get-Jobs request to a Printer object.
  1937.  
  1938.          The following groupsof attributes are part of the Get-Jobs Request:
  1939.  
  1940.          Group 1: Operation Attributes
  1941.  
  1942.            Target:
  1943.               The "printer-uri" target for this operation as described in
  1944.               section 3.1.2.
  1945.  
  1946.            Natural Language and Character Set:
  1947.               The "attributes-charset" and "attributes-natural-language"
  1948.               attributes as described in section 3.1.3.1.
  1949.  
  1950.            "limit" (integer):
  1951.               The client OPTIONALLY supplies this attribute. It is an integer
  1952.               value that indicates a limit to the number of Job objects
  1953.               returned.  The limit is a "stateless limit" in that if the value
  1954.               supplied by the client is  'n', then only the first 'n' jobs are
  1955.               returned in the Get-Jobs Response.  There is no mechanism to
  1956.               allow for the next 'm' jobs after the first 'n' jobs.  If the
  1957.               client does not supply this attribute, the Printer object
  1958.               responds will all applicable jobs.
  1959.  
  1960.            "requested-attributes" (1setOf keyword):
  1961.               The client OPTIONALLY supplies this attribute. It is a set of Job
  1962.               attribute names or attribute groups names in whose values the
  1963.               requester is interested.  This set of attributes is returned for
  1964.               each Job that is returned. The allowed attribute group names are
  1965.               the same as those defined in the Get-Attributes operation for Job
  1966.               objects. If the client does not supply this attribute, the
  1967.  
  1968.  
  1969.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 34]
  1970.                                  Expires April 14, 1998
  1971.  
  1972.  
  1973.  
  1974.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  1975.  
  1976.  
  1977.               Printer SHALL respond as if the client had supplied values of
  1978.               'job-uri' and 'job-id'.
  1979.  
  1980.            "which-jobs" (keyword):
  1981.               The client OPTIONALLY supplies this attribute. It indicates which
  1982.               Jobs should be returned by the Printer object.  The values for
  1983.               this attribute are:
  1984.  
  1985.               'completed': This includes any Job object whose state is
  1986.                 'completed', 'cancelled', or 'aborted'.
  1987.               'not-completed': This includes any Job object whose state is
  1988.                    'pending', 'processing', 'processing-stopped', 'pending-
  1989.                    held', 'unknown'.
  1990.  
  1991.               If the client does not supply the attribute, the Printer object
  1992.               SHALL respond as if the client had supplied the value of 'not-
  1993.               completed'.
  1994.  
  1995.          3.2.6.2 Get-Jobs Response
  1996.  
  1997.          The Printer object returns all of the Job objects that match the
  1998.          criteria as defined by the attribute values supplied by the client in
  1999.          the request.  It is possible that no Job objects are returned since
  2000.          there may literally be no Job objects at the Printer, or there may be
  2001.          no Job objects that match the criteria supplied by the client.  If the
  2002.          client requests any Job attributes at all, there is a set of Job
  2003.          Object Attributes returned for each Job object.
  2004.  
  2005.          Group 1: Operation Attributes
  2006.  
  2007.            Status Code and Message:
  2008.               The response includes the MANDATORY status code and an OPTIONAL
  2009.               "status-message" (text) operation attribute as described in
  2010.               section 3.1.4.
  2011.  
  2012.            Natural Language and Character Set:
  2013.               The "attributes-charset" and "attributes-natural-language"
  2014.               attributes as described in section 3.1.3.2.
  2015.  
  2016.          Groups 2 to N: Job Object Attributes
  2017.  
  2018.               The Printer object responds with one set of Job Object Attributes
  2019.               for each returned Job object.
  2020.  
  2021.               For any job submitted in a different natural language than the
  2022.               natural language that the client is requesting in the Get-Jobs
  2023.               request, the Printer SHALL indicate the submitted natural
  2024.               language by returning the "job-natural-language" as the first Job
  2025.  
  2026.  
  2027.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 35]
  2028.                                  Expires April 14, 1998
  2029.  
  2030.  
  2031.  
  2032.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  2033.  
  2034.  
  2035.               object attribute, which overrides the "attributes-natural-
  2036.               language" operation attribute value being returned by the
  2037.               Printer.  If any returned 'text' or 'name' attribute includes an
  2038.               exception natural language as described in the 'text' attribute
  2039.               syntax (see Section 4.1.1), the exception natural language
  2040.               overrides the "job-natural-language" value (for the immediately
  2041.               following attribute value only).
  2042.  
  2043.          Jobs are returned in the following order:
  2044.  
  2045.            - If the client requests all 'completed' Jobs (Jobs in the
  2046.               'completed', 'aborted', or 'cancelled' states), then the Jobs are
  2047.               returned newest to oldest (with respect to actual completion
  2048.               time)
  2049.            - If the client requests all 'non-completed' Jobs (Jobs in the
  2050.               'pending', 'processing', 'pending-held', 'processing-stopped',
  2051.               and 'unknown' states), then Jobs are returned in relative
  2052.               chronological order of expected time to complete (based on
  2053.               whatever scheduling algorithm is configured for the Printer
  2054.               object).
  2055.  
  2056.  
  2057.          3.3 Job Operations
  2058.  
  2059.          All Job operations are directed at Job objects.  A client MUST always
  2060.          supply some means of identifying the Job object in order to identify
  2061.          the correct target of the operation.  Since Job objects can be
  2062.          identified with either a single Job URI or a combination of a Printer
  2063.          URI with a local Job ID, the following rules apply to all Job
  2064.          operation requests mapped onto HTTP/1.1:
  2065.  
  2066.            -  If the client chooses to identify Job objects with just the Job
  2067.               URI, this "job-uri" attribute is not supplied in the body of the
  2068.               operation as other operation attributes are.  It is supplied in
  2069.               the "request-URI" field in the HTTP header. - If the client
  2070.               chooses to identify Job objects with both a Printer URI and a
  2071.               local Job ID, the "printer-uri" attribute is not supplied in the
  2072.               body of the operation, but it is supplied in the "request-URI"
  2073.               field in the HTTP header.  The "job-id" attribute is included as
  2074.               an operation attribute.
  2075.  
  2076.          Since the Get-Attributes operation can be both a Printer operation and
  2077.          a Job operation, if a Printer object receives a Get-Attributes
  2078.          request, the Printer object must check for the existence of the "job-
  2079.          id" operation attribute.  If present, the operation is intended to be
  2080.          a Job operation on the corresponding Job object.  If absent, the
  2081.          operation is intended to be a Printer operation.
  2082.  
  2083.  
  2084.  
  2085.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 36]
  2086.                                  Expires April 14, 1998
  2087.  
  2088.  
  2089.  
  2090.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  2091.  
  2092.  
  2093.          3.3.1 Send-Document Operation
  2094.  
  2095.          A client uses a Create-Job operation to create a multi-document Job
  2096.          object that is initially "empty" (contains no documents).  In the
  2097.          Create-Job response, the Printer object returns the Job object's URI
  2098.          (the "job-uri" attribute) and the Job object's 32-bit identifier (the
  2099.          "job-id" attribute).  For each new document that the client desires to
  2100.          add, the client uses a Send-Document operation.  Each Send-Document
  2101.          Request contains the entire stream of document data for one document.
  2102.  
  2103.          Since the Create-Job and the Send-Documents that follow can occur over
  2104.          arbitrarily long periods of time, each Printer object must decide how
  2105.          long to "wait" for the next Send-Document operation.  The Printer
  2106.          object OPTIONALLY supports the "multiple-operation-timeout" attribute.
  2107.          This attribute indicates the maximum number of seconds the Printer
  2108.          object will wait for the next Send-Document operation.  If the Printer
  2109.          object times-out waiting for the next Send-Document operation, the
  2110.          Printer object MAY decide on any of the following semantic actions:
  2111.  
  2112.            1. Assume that the Job is an invalid job, start the process of
  2113.               changing the job state to 'aborted', and clean up all resources
  2114.               associated with the Job.  In this case, if another Send-Document
  2115.               operation is finally received, the Printer responds with an
  2116.               "client-error-not-possible" or "client-error-not-found" depending
  2117.               on whether or not the Job object is still around when it finally
  2118.               arrives.
  2119.            2. Assume that the last Send-Document received was in fact the last
  2120.               document (as if the "last-document" flag had been set to 'true'),
  2121.               close the Job, and proceed to process it (i.e., move the Job's
  2122.               state to 'pending').
  2123.            3. Assume that the last Send-Document received was in fact the last
  2124.               document, close the Job, but move it to the 'pending-held' to
  2125.               allow an operator to determine whether or not to continue
  2126.               processing  the Job by moving it back to the 'pending' state.
  2127.  
  2128.          Each implementation is free to decide the "best" action to take
  2129.          depending on local policy, the value of "ipp-attribute-fidelity",
  2130.          and/or any other piece of information available to it.  If the choice
  2131.          is to abort the Job, it is possible that the Job may already have been
  2132.          processed to the point that some pages have been printed.
  2133.  
  2134.          3.3.1.1 Send-Document Request
  2135.  
  2136.          The following attribute sets are part of the Send-Document Request:
  2137.  
  2138.          Group 1: Operation Attributes
  2139.  
  2140.  
  2141.  
  2142.  
  2143.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 37]
  2144.                                  Expires April 14, 1998
  2145.  
  2146.  
  2147.  
  2148.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  2149.  
  2150.  
  2151.            Target:
  2152.               Either the "printer-uri" plus "job-id" or "job-uri" target for
  2153.               this operation as described in section 3.1.2.
  2154.  
  2155.            Natural Language and Character Set:
  2156.               The "attributes-charset" and "attributes-natural-language"
  2157.               attributes as described in section 3.1.3.1.
  2158.  
  2159.            "document-name" (name):
  2160.               The client OPTIONALLY supplies this attribute, and it contains
  2161.               the client supplied document name.  The document name MAY be
  2162.               different than the Job name.  It might be helpful, but NEED NOT
  2163.               be unique across multiple documents in the same Job.  Typically,
  2164.               the client software automatically supplies the document name on
  2165.               behalf of the end user by using a file name or an application
  2166.               generated name.  See the description of the "document-name"
  2167.               operation attribute in the Print-Job Request (section 3.2.1.1)
  2168.               for more information about this attribute.
  2169.  
  2170.            "last-document" (boolean):
  2171.               The client MUST supply this attribute.  It is a boolean flag that
  2172.               is set to 'true' if this is the last document for the Job,
  2173.               'false' otherwise.
  2174.  
  2175.            "document-charset" (charSet):
  2176.               This attribute is OPTIONALLY supplied by the client.  A Printer
  2177.               object SHALL support this attribute if it supports a document-
  2178.               format that requires a character set to be identified in order to
  2179.               unambiguously interpret the document, such as 'text/plain'.
  2180.               There are no particular values required for the Printer object to
  2181.               support.  This attribute specifies the charset of the document
  2182.               for those document-formats that require a specification of the
  2183.               charset in order to image the document unambiguously.  If the
  2184.               value of the "document-format" attribute contains a charset
  2185.               parameter (see 'mimeType' attribute syntax in Section 4.1.9), the
  2186.               client SHALL also supply the "document-charset" attribute and its
  2187.               value SHALL be the same.
  2188.  
  2189.            "document-natural-language" (naturalLanguage):
  2190.               This attribute is OPTIONALLY supplied by the client.  There are
  2191.               no particular values required for the Printer object to support.
  2192.               This attribute specifies the natural language of the document for
  2193.               those document-formats that require a specification of the
  2194.               natural language in order to image the document unambiguously,
  2195.               such as proper glyph selection..
  2196.  
  2197.          Group 2: Document Content
  2198.  
  2199.  
  2200.  
  2201.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 38]
  2202.                                  Expires April 14, 1998
  2203.  
  2204.  
  2205.  
  2206.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  2207.  
  2208.  
  2209.               The client MUST supply the document data if the "last-document"
  2210.               flag is set to 'false'.  However, since a client might not know
  2211.               that the previous document sent with a Send-Document operation
  2212.               was the last document (i.e., the "last-document" attribute was
  2213.               set to 'false'), it is legal to send a Send-Document request with
  2214.               no document data where the "last-document" flag is set to 'true'.
  2215.  
  2216.  
  2217.          3.3.1.2 Send-Document Response
  2218.  
  2219.          The following sets of attributes are part of the Send-Document
  2220.          Response:
  2221.  
  2222.          Group 1: Operation Attributes
  2223.  
  2224.            Status Code and Message:
  2225.               The response includes the MANDATORY status code and an OPTIONAL
  2226.               "status-message" (text) operation attribute as described in
  2227.               section 3.1.4.
  2228.  
  2229.            Natural Language and Character Set:
  2230.               The "attributes-charset" and "attributes-natural-language"
  2231.               attributes as described in section 3.1.3.2.
  2232.  
  2233.          Group 2: Job Object Attributes
  2234.  
  2235.               This is the same set of attributes as described in the Print-Job
  2236.               response (see section 3.2.1.2).
  2237.  
  2238.  
  2239.          3.3.2 Send-URI Operation
  2240.  
  2241.          This operation is identical to the Send-Document operation (see
  2242.          section 3.3.1) except that a client supplies a URI reference
  2243.          ("document-uri" operation attribute) rather than the document data
  2244.          itself.  If a Printer object supports this operation, clients can use
  2245.          both Send-URI or Send-Document operations to add new documents to an
  2246.          existing multi-document Job object.
  2247.  
  2248.          The Printer object MUST validate the syntax of the supplied URI before
  2249.          returning a response.  If the Printer object supports this operation,
  2250.          it MUST support the URI types defined under the Print-URI operation
  2251.          (see section 3.2.2)
  2252.  
  2253.          3.3.3 Cancel Job Operation
  2254.  
  2255.          This operation allows a client to cancel a Print Job any time after a
  2256.          create job operation..  Since a Job might already be printing by the
  2257.  
  2258.  
  2259.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 39]
  2260.                                  Expires April 14, 1998
  2261.  
  2262.  
  2263.  
  2264.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  2265.  
  2266.  
  2267.          time a Cancel-Job is received, some pages may be printed before the
  2268.          job is actually terminated.
  2269.  
  2270.          3.3.3.1 Cancel-Job Request
  2271.  
  2272.          The following groups of attributes are part of the Cancel-Job Request:
  2273.  
  2274.          Group 1: Operation Attributes
  2275.  
  2276.            Target:
  2277.               Either the "printer-uri" plus "job-id" or "job-uri" target for
  2278.               this operation as described in section 3.1.2.
  2279.  
  2280.            Natural Language and Character Set:
  2281.               The "attributes-charset" and "attributes-natural-language"
  2282.               attributes as described in section 3.1.3.1.
  2283.  
  2284.            "message" (text):
  2285.               OPTIONAL message to the operator.  This is not the same as the
  2286.               "job-message-from-operator" attribute.  This attribute is used to
  2287.               send a message along with the operation request.  It is an
  2288.               implementation decision of how or where to display this message
  2289.               (if at all).
  2290.  
  2291.          3.3.3.2 Cancel-Job Response
  2292.  
  2293.          The following sets of attributes are part of the Cancel-Job Response:
  2294.  
  2295.          Group 1: Operation Attributes
  2296.  
  2297.            Status Code and Message:
  2298.               The response includes the MANDATORY status code and an OPTIONAL
  2299.               "status-message" (text) operation attribute as described in
  2300.               section 3.1.4.
  2301.  
  2302.            Natural Language and Character Set:
  2303.               The "attributes-charset" and "attributes-natural-language"
  2304.               attributes as described in section 3.1.3.2.
  2305.  
  2306.          Once a successful response has been sent, the implementation
  2307.          guarantees that the Job will eventually end up in the 'cancelled'
  2308.          state.  If the implementation is forced to leave the job in the some
  2309.          other state, the "job-state-reasons" SHOULD contain the ' processing-
  2310.          to-stop-point ' value which indicates to later queries that although
  2311.          the Job may still be 'processing', it will eventually end up in the
  2312.          'cancelled' state, not the 'completed' state.
  2313.  
  2314.  
  2315.  
  2316.  
  2317.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 40]
  2318.                                  Expires April 14, 1998
  2319.  
  2320.  
  2321.  
  2322.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  2323.  
  2324.  
  2325.          3.3.4 Get-Attributes Operation
  2326.  
  2327.          The Job Get-Attributes operation allows a client to obtain information
  2328.          from a Job object and it is almost identical to the Get-Attributes
  2329.          operation for a Printer object (see section 3.2.5).  The only
  2330.          differences are that the operation is directed at a Job rather than a
  2331.          Printer and there is no "document-format" operation attribute used
  2332.          when querying a Job object.
  2333.  
  2334.          For Jobs, the attribute groups include:
  2335.  
  2336.            - 'job-template': all of the Job Template attributes that apply to
  2337.               a Job object (the first column of the table in Section 4.2).
  2338.            - 'job-description': the attributes specified in Section 4.3.
  2339.  
  2340.          There is also the special group 'all' that includes all supported
  2341.          attributes.  If for some reason, the client includes an attribute two
  2342.          or more times in the request (e.g., the client supplies values of
  2343.          'all', 'job-template', and 'sides' in the "requested-attributes"
  2344.          attribute), the Printer SHALL only return one occurrence of the
  2345.          attribute in the response.
  2346.  
  2347.          3.3.4.1 Get-Attributes Request
  2348.  
  2349.          The following groups of attributes are part of the Get-Attributes
  2350.          Request when the request is directed at a Job object:
  2351.  
  2352.          Group 1: Operation Attributes
  2353.  
  2354.            Target:
  2355.               Either the "printer-uri" plus "job-id" or "job-uri" target for
  2356.               this operation as described in section 3.1.2.
  2357.  
  2358.            Natural Language and Character Set:
  2359.               The "attributes-charset" and "attributes-natural-language"
  2360.               attributes as described in section 3.1.3.1.
  2361.  
  2362.            "requested-attributes" (1setOf keyword) :
  2363.               An OPTIONAL set of attribute names and/or attribute group names
  2364.               in whose values the requester is interested.  If the client omits
  2365.               this attribute, the Printer SHALL respond as if this attribute
  2366.               had been supplied with a value of 'all'.
  2367.  
  2368.          3.3.4.2 Get-Attributes Response
  2369.  
  2370.          The Printer object returns the following sets of attributes as part of
  2371.          the Get-Attributes Response:
  2372.  
  2373.  
  2374.  
  2375.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 41]
  2376.                                  Expires April 14, 1998
  2377.  
  2378.  
  2379.  
  2380.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  2381.  
  2382.  
  2383.          Group 1: Operation Attributes
  2384.  
  2385.            Status Code and Message:
  2386.               The response includes the MANDATORY status code and an OPTIONAL
  2387.               "status-message" (text) operation attribute as described in
  2388.               section 3.1.4.
  2389.  
  2390.            Natural Language and Character Set:
  2391.               The "attributes-charset" and "attributes-natural-language"
  2392.               attributes as described in section 3.1.3.2.
  2393.  
  2394.          Group 2: Requested Job Object Attributes
  2395.  
  2396.               This is the set of requested attributes and their current values.
  2397.               The Printer object ignores (does not respond with) any requested
  2398.               attribute which is not supported.
  2399.  
  2400.          4. Object Attributes
  2401.  
  2402.          This section describes the attributes with their corresponding
  2403.          syntaxes and values that are part of the IPP model. The sections below
  2404.          show the objects and their associated attributes which are included
  2405.          within the scope of this protocol.  Many of these attributes are
  2406.          derived from other relevant specifications:
  2407.  
  2408.            - Document Printing Application (DPA) [ISODPA]
  2409.            - RFC 1759 Printer MIB  [RFC1759]
  2410.  
  2411.          Each attribute is uniquely identified in this document using a
  2412.          "keyword" (see section 12.2.1).  The keyword is included in the
  2413.          section header describing that attribute.  All attributes are uniquely
  2414.          identified with a keyword as its name.   In addition, some attributes
  2415.          are defined having a syntax that is a set of keywords.
  2416.  
  2417.  
  2418.          4.1 Attribute Syntaxes
  2419.  
  2420.          This section defines the basic attribute syntax types that a client
  2421.          and server SHALL be able to handle.  Each attribute description in
  2422.          sections 3 and 4 includes the name of attribute syntax(es) in the
  2423.          heading (in parentheses).  A conforming implementation of an attribute
  2424.          SHALL include the semantics of the attribute syntax(es) so identified.
  2425.          Section 6 describes how the protocol can be extended with new
  2426.          attribute syntaxes.
  2427.  
  2428.          Most attributes are defined to have a single attribute syntax.
  2429.          However, a few attributes (e.g., "job-sheet", "media", "job-hold-
  2430.          until") are defined to have several attribute syntaxes, depending on
  2431.  
  2432.  
  2433.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 42]
  2434.                                  Expires April 14, 1998
  2435.  
  2436.  
  2437.  
  2438.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  2439.  
  2440.  
  2441.          the value.  Since each value SHALL be tagged as to its attribute
  2442.          syntax in the protocol, a single-valued attribute instance may have
  2443.          any one of its attribute syntaxes and a multi-valued attribute
  2444.          instance may have a mixture of its defined attribute syntaxes.
  2445.  
  2446.          The attribute syntaxes are specified in the following sub-sections,
  2447.          where the sub-section heading is the name of the attribute syntax
  2448.          inside the single quotes:
  2449.  
  2450.          4.1.1 'text'
  2451.  
  2452.          The 'text' attribute syntax is a sequence of one or more characters
  2453.          with a limit of 1 to 4095 octets.  The Printer object SHALL support
  2454.          UTF-8 [RFC2044] and MAY support additional charsets provided that they
  2455.          are registered with IANA [IANA-CS].  See Section 4.1.7 for the
  2456.          specification of the 'charSet' attribute syntax, including restricted
  2457.          semantics and examples of charsets.
  2458.  
  2459.          If the client needs to pass or the Printer object needs to return a
  2460.          'text' attribute in a different natural language than the rest of the
  2461.          'text' attributes in the request or response as indicated by the
  2462.          "attributes-natural-language" operation attribute (see Section 3.1.3),
  2463.          the client or Printer object SHALL immediately precede that attribute
  2464.          value with a 'naturalLanguage' attribute value that indicates the
  2465.          differing natural language.  Thus the attribute becomes multi-valued
  2466.          with two values.  This additional values is called an "exception"
  2467.          natural language value.  In a create operation, the Printer object
  2468.          SHOULD accept and store an exception natural language value.  If the
  2469.          Printer object does not store an exception natural language value, the
  2470.          Printer SHALL ignore it and SHALL store the immediately following
  2471.          'text' value only.  The Printer SHALL not reject the request no matter
  2472.          what value the client supplies as an exception natural language.
  2473.  
  2474.          If the attribute is multi-valued (1setOf text), then the exception
  2475.          natural language value applies only to the next 'text' value.
  2476.          Subsequent values in a multi-valued 'text' attribute in a request or a
  2477.          response revert to the natural language of the operation attribute or
  2478.          the "job-natural-language" job attribute, if present, in the case of a
  2479.          Get-Jobs response.
  2480.  
  2481.          Example:  If the client supplies the "attributes-natural-language"
  2482.          operation attribute with the value:  'en' indicating English, but the
  2483.          values of the "job-name" attribute is in French, the values of the
  2484.          normally single-valued "job-name" attribute supplied by the client in
  2485.          any request or returned by the Printer object in any response would be
  2486.          the following two values, each tagged with the appropriate attribute
  2487.          syntax ('naturalLanguage' and 'text') in the protocol:
  2488.  
  2489.  
  2490.  
  2491.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 43]
  2492.                                  Expires April 14, 1998
  2493.  
  2494.  
  2495.  
  2496.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  2497.  
  2498.  
  2499.            'fr': exception natural language indicating French with attribute
  2500.               syntax 'naturalLanguage'
  2501.            'Rapport Mensuel': the job name in French with attribute syntax
  2502.               'name'.
  2503.  
  2504.          4.1.2 'name'
  2505.  
  2506.          The 'name' attribute syntax is the same as 'text', including the
  2507.          MANDATORY support of UTF-8 and the exception natural language
  2508.          mechanism, except that the sequence of characters is limited so that
  2509.          its encoded form is of length 1 to 255 octets.  This syntax type is
  2510.          used for user-friendly strings, such as a Printer name, that, for
  2511.          humans, are more meaningful than identifiers.
  2512.  
  2513.          Note:  Only the 'text' and 'name attribute syntaxes permit the
  2514.          exception natural language mechanism.
  2515.  
  2516.          Example:  If the client supplies the "attributes-natural-language"
  2517.          operation attribute with the value:  'en' indicating English, but the
  2518.          "printer-name" attribute is in German, the values of the normally
  2519.          single-valued "printer-name" attribute returned by the Printer in any
  2520.          operation response would be the following two values, each tagged with
  2521.          the appropriate attribute syntax ('naturalLanguage' and 'name') in the
  2522.          protocol:
  2523.  
  2524.            'de':  exception natural language indicating German with the
  2525.               attribute syntax 'naturalLanguage'
  2526.            'Farbdrucker':  the Printer name in German with attribute syntax
  2527.               'name'
  2528.  
  2529.          4.1.3 'keyword'
  2530.  
  2531.          The 'keyword' attribute syntax is a sequence of characters, length: 1
  2532.          to 255, containing only the US-ASCII [ASCII] encoded values for
  2533.          lowercase letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"), dot
  2534.          ("."), and underscore ("_").  The first character MUST be a lowercase
  2535.          letter.  Furthermore, keywords SHALL be in U.S. English.
  2536.  
  2537.          This syntax type is used for enumerating semantic identifiers of
  2538.          entities in the abstract protocol, i.e., entities identified in this
  2539.          document.  Keywords are used as attribute names or values of
  2540.          attributes.  Unlike 'text' and 'name' attribute values, 'keyword'
  2541.          values SHALL NOT use the exception natural language mechanism, since
  2542.          they SHALL always be US-ASCII and U.S. English.  When accepting
  2543.          keywords from users and displaying keywords to users, clients SHOULD
  2544.          localize the keywords to the charset and natural language of the user.
  2545.  
  2546.  
  2547.  
  2548.  
  2549.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 44]
  2550.                                  Expires April 14, 1998
  2551.  
  2552.  
  2553.  
  2554.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  2555.  
  2556.  
  2557.          In the definition for each attribute of this syntax type, the full set
  2558.          of defined keyword values for that attribute are listed.
  2559.  
  2560.          When a keyword is used to represent an attribute (its name), it MUST
  2561.          be unique within the full scope of all IPP objects and attributes.
  2562.          When a keyword is used to represent a value of an attribute, it MUST
  2563.          be unique just within the scope of that attribute.  That is, the same
  2564.          keyword SHALL not be used for two different values within the same
  2565.          attribute to mean two different semantic ideas.  However, the same
  2566.          keyword MAY be used across two or more attributes, representing
  2567.          different semantic ideas for each attribute. Section 6 describes how
  2568.          the protocol can be extended with new keyword values.  Examples of
  2569.          attribute name keywords:
  2570.  
  2571.            "job-name"
  2572.            "attributes-charset "
  2573.  
  2574.          4.1.4 'enum'
  2575.  
  2576.          The 'enum' attribute syntax is an enumerated integer value that is in
  2577.          the range from -2**31 to 2**31 - 1.   Each value has an associated
  2578.          'keyword' name.  In the definition for each attribute of this syntax
  2579.          type, the full set of possible values for that attribute are listed..
  2580.          This syntax type is used for attributes for which there are enum
  2581.          values assigned by other standards, such as SNMP MIBs.  A number of
  2582.          attribute enum values in this specification are also used for
  2583.          corresponding attributes in other standards [RFC1759]..  This syntax
  2584.          type is not used for attributes to which the system administrator may
  2585.          assign values. Section 6 describes how the protocol can be extended
  2586.          with new enum values.  Though this document includes a symbolic name
  2587.          for each enum value (in U.S. English), when accepting enum names from
  2588.          users and displaying enum names to users, clients SHOULD localize the
  2589.          names to the charset and natural language of the user.
  2590.  
  2591.          4.1.5 'uri'
  2592.  
  2593.          The 'uri' attribute syntax is any valid Uniform Resource Identifier or
  2594.          URI [RFC1630].  Most often, URIs are simply Uniform Resource Locators
  2595.          or URLs [RFC1738] [RFC1808].
  2596.  
  2597.          4.1.6 'uriScheme'
  2598.  
  2599.          The 'uriScheme' attribute syntax is a sequence of characters
  2600.          representing a URI scheme according to RFC 1738 [RFC1738].  Standard
  2601.          values for this syntax type are the following keywords:
  2602.  
  2603.            'http':  for HTTP schemed URIs (e.g., "http://...")
  2604.            'ftp': for FTP schemed URIs (e.g., "ftp://...")
  2605.  
  2606.  
  2607.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 45]
  2608.                                  Expires April 14, 1998
  2609.  
  2610.  
  2611.  
  2612.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  2613.  
  2614.  
  2615.            'mailto': for SMTP schemed URIs (e.g., "mailto:...")
  2616.            'file': for file schemed URIs (e.g., "file:...")
  2617.  
  2618.          4.1.7 'charSet'
  2619.  
  2620.          The 'charSet' attribute syntax is a standard identifier of a coded
  2621.          character set and encoding scheme for labeling certain document
  2622.          contents and 'text' and 'name' attribute values.  The syntax and
  2623.          semantics of this attribute syntax are specified in RFC 2046 [RFC2046]
  2624.          and contained in the IANA character-set Registry [IANA-CS] according
  2625.          to the IANA procedures [IANA-CSa].  As specified in RFC 2046, the
  2626.          values SHALL be case-insensitive and SHALL be in US-ASCII.  When a
  2627.          character-set in the IANA registry has more than one name (alias), the
  2628.          name labeled as "(preferred MIME name)" SHALL be used.
  2629.  
  2630.          Some examples are:
  2631.  
  2632.            'utf-8':  ISO 10646 Universal Multiple-Octet Coded Character Set
  2633.               (UCS) represented as the UTF-8 [RFC2044] transfer encoding scheme
  2634.               in which US-ASCII is a subset charset.  The 'utf-8' charset value
  2635.               supplied in the "attributes-charset" operation attribute (see
  2636.               Section 3.1.3), which is used to identify the charset of 'text'
  2637.               and 'name' attributes, SHALL be restricted to conformance level 2
  2638.               of ISO 10646 [ISO10646-1], so that accented letters SHALL NOT be
  2639.               represented with non-spacing accents.  This same 'utf-8' value
  2640.               supplied in the "document-format" operation attribute (see
  2641.               Sections 3.2.1.1 and 3.3.1.1), MAY include level 3 of ISO 10646.
  2642.            'US-ASCII':  7-bit American Standard Code for Information
  2643.               Interchange (ASCII), ANSI X3.4-1986 [ASCII].  This standard
  2644.               defines US-ASCII, but RFC 2045 [46] eliminates most of the
  2645.               control characters from conformant usage in MIME and IPP.
  2646.            'iso-8859-1':  8-bit One-Byte Coded Character Set, Latin Alphabet
  2647.               Nr 1 [ISO8859-1].  This defines a coded character set that is
  2648.               used by Latin languages in the Western Hemisphere and Western
  2649.               Europe.  US-ASCII is a subset charset.
  2650.  
  2651.          Some attribute descriptions MAY place additional requirements on
  2652.          charset values that may be used, such as MANDATORY values the MUST be
  2653.          supported or additional restrictions, such as requiring that the
  2654.          charset have US-ASCII as a subset charset.
  2655.  
  2656.          4.1.8 'naturalLanguage'
  2657.  
  2658.          The 'naturalLanguage' attribute syntax is a standard identifier for a
  2659.          natural language and optionally a country.  The values for this syntax
  2660.          type are taken from RFC 1766 [RFC1766].  As specified in RFC 1766, the
  2661.          values SHALL be case-insensitive and SHALL be in US-ASCII.  Examples
  2662.          include:
  2663.  
  2664.  
  2665.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 46]
  2666.                                  Expires April 14, 1998
  2667.  
  2668.  
  2669.  
  2670.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  2671.  
  2672.  
  2673.            'en':  for English
  2674.            'en-us': for US English
  2675.            'FR': for French
  2676.            'de':  for German
  2677.  
  2678.          4.1.9 'mimeType'
  2679.  
  2680.          The 'mimeType' attribute syntax is the standard defined Internet Media
  2681.          Type (sometimes called MIME type) as defined by RFC 2046 [RFC2046] and
  2682.          registered according to the procedures of RFC 2048 [RFC2048] for
  2683.          identifying a document format.  The value MAY include a charset
  2684.          parameter, depending on the specification of the Media Type in the
  2685.          IANA Registry [IANA-MT]. Examples:
  2686.  
  2687.            'text/html': An HTML document
  2688.            'text/plain': A plain text document in US-ASCII (RFC 2046 indicates
  2689.               that in the absence of the charset parameter SHALL mean US-ASCII
  2690.               rather than simply unspecified) [RFC2046].
  2691.            'text/plain; charset=US-ASCII':  A plain text document in US-ASCII
  2692.               [52, 56].
  2693.            'text/plain; charset=ISO-8859-1':  A plain text document in ISO
  2694.               8859-1 (Latin 1) [ISO8859-1].
  2695.            'text/plain; charset=utf-8':  A plain text document in ISO 10646
  2696.               represented as UTF-8 [RFC2044]
  2697.            'text/plain, charset=iso-10646-ucs-2':  A plain text document in
  2698.               ISO 10646 represented in two octets (UCS-2) [ISO10646-1]
  2699.            'application/postscript':  A PostScript document [RFC2046]
  2700.            'application/vnd.hp-PCL':  A PCL document [IANA-MT] (charset escape
  2701.               sequence embedded in the document data)
  2702.            'application/octet-stream':  Auto-sense - see below
  2703.  
  2704.          One special type is 'application/octet-stream'.   If the Printer
  2705.          object supports this value, the Printer object or the device SHALL be
  2706.          capable of auto-sensing the format of the document data. If the
  2707.          Printer object's default value attribute is set to 'application/octet-
  2708.          stream' the Printer object not only supports auto-sensing of the
  2709.          document format, but will depend on the result of applying its auto-
  2710.          sensing algorithm in the case of missing information not supplied by
  2711.          the client.  If the client supplies a document format value, the
  2712.          Printer SHOULD rely on the supplied attribute, rather than trust its
  2713.          auto-sensing algorithm.  To summarize:
  2714.  
  2715.            1. If the client does not supply a document format value, the
  2716.               Printer MUST rely on its default value setting (which may be
  2717.               'application/octet-stream' indicating an auto-sensing mechanism).
  2718.            2. If the client supplies a value other than 'application/octet-
  2719.               stream', the client is supplying valid information about the
  2720.               format of the document data and the Printer object SHOULD trust
  2721.  
  2722.  
  2723.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 47]
  2724.                                  Expires April 14, 1998
  2725.  
  2726.  
  2727.  
  2728.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  2729.  
  2730.  
  2731.               the client supplied value more than the outcome of applying an
  2732.               automatic format detection mechanism.  For example, the client
  2733.               may be requesting the printing of a PostScript file as a
  2734.               'text/plain' document.  The Printer object SHOULD print a text
  2735.               representation of the PostScript commands rather than interpret
  2736.               the stream of PostScript commands and print the result.
  2737.            3. If the client supplies a value of 'application/octet-stream',
  2738.               the client is indicating that the Printer object SHOULD use its
  2739.               auto-sensing mechanism whether auto-sensing is the Printer
  2740.               object's default or not.
  2741.  
  2742.          4.1.10 'octetString'
  2743.  
  2744.          The 'octetString' attribute syntax is a sequence of octets.  This
  2745.          syntax type is used for opaque data
  2746.  
  2747.          4.1.11 'boolean'
  2748.  
  2749.          The 'boolean' attribute syntax is like a keyword with only two values
  2750.          'true' and 'false'.
  2751.  
  2752.          4.1.12 'integer'
  2753.  
  2754.          The 'integer' attribute syntax is an integer value that is in the
  2755.          range from -2**31 to 2**31 - 1. Each individual attribute may specify
  2756.          the range constraint explicitly if the range is different from the
  2757.          full range of possible integer values (e.g., 0 - 100 for the "job-
  2758.          priority" attribute), however, the enforcement of that additional
  2759.          constraint is up to the IPP objects, not the protocol.
  2760.  
  2761.          4.1.13 'rangeOfInteger'
  2762.  
  2763.          The 'rangeOfInteger' attribute syntax is an ordered set of two
  2764.          integers, the smallest first, followed by the largest.  The pair of
  2765.          integers identifies an inclusive range of integer values.
  2766.  
  2767.          4.1.14 'dateTime'
  2768.  
  2769.          The 'dateTime' attribute syntax is a standard, fixed length
  2770.          representation of the "DateAndTime" syntax as defined in RFC 1514
  2771.          [RFC1514] and RFC 1903 [RFC1903].  When accepting 'dateTime' values
  2772.          from users and displaying 'dateTime' values to users, clients SHOULD
  2773.          localize the values to the charset and natural language of the user.
  2774.  
  2775.          4.1.15 'resolution'
  2776.  
  2777.          The 'resolution' attribute syntax specifies a two-dimensional
  2778.          resolution in the indicated units.  It consists of 3 integers: a cross
  2779.  
  2780.  
  2781.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 48]
  2782.                                  Expires April 14, 1998
  2783.  
  2784.  
  2785.  
  2786.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  2787.  
  2788.  
  2789.          feed direction resolution (positive integer value), a feed direction
  2790.          resolution (positive integer value), and a units value.  The semantics
  2791.          of these three components are taken from the Printer MIB [RFC1759]
  2792.          suggested values.  That is, the cross feed direction component
  2793.          resolution component is the same as the
  2794.          prtMarkerAddressabilityXFeedDir object in the Printer MIB, the feed
  2795.          direction component resolution component is the same as the
  2796.          prtMarkerAddressabilityFeedDir in the Printer MIB, and the units
  2797.          component is the same as the prtMarkerAddressabilityUnit object in the
  2798.          Printer MIB (namely dots per inch and dots per centimeter).  All three
  2799.          values MUST be present even if the first two values are the same.
  2800.          Example:  '300', '600', '3' indicates a 300 dpi cross-feed direction
  2801.          resolution, a 600 dpi feed direction resolution, since a '3' indicates
  2802.          dots per inch.
  2803.  
  2804.          4.1.16 '1setOf  X'
  2805.  
  2806.          The '1setOf  X' attribute syntax is 1 or more values of attribute
  2807.          syntax type X.  This syntax type is used for multi-valued attributes.
  2808.          The syntax type is called '1setOf' rather than just 'setOf' as a
  2809.          reminder that the set of values SHALL NOT be empty (i.e., a set of
  2810.          size 0).  Sets are normally unordered, however each attribute
  2811.          description of this type may specify that the values MUST be in a
  2812.          certain order for that attribute.
  2813.  
  2814.  
  2815.          4.2 Job Template Attributes
  2816.  
  2817.          Job Template attributes describe job processing behavior.  Support for
  2818.          Job Template attributes by a Printer object is OPTIONAL (see section
  2819.          12.2.3 for a description of support for OPTIONAL attributes).  Also,
  2820.          clients OPTIONALLY supply Job Template attributes in create requests.
  2821.  
  2822.          Job Template attributes conform to the following rules.  For each Job
  2823.          Template attribute called "foo":
  2824.  
  2825.            1. The Printer object OPTIOINALLY supports a "foo-supported"
  2826.               attribute that describes which job processing behaviors are
  2827.               supported by that Printer object.  A client can query the Printer
  2828.               object to find out what foo-related behaviors are supported by
  2829.               inspecting the returned values of the "foo-supported" attribute.
  2830.  
  2831.            2. The Printer also OPTIONALLY supports a default value attribute
  2832.               named "foo-default". This default value attribute describes what
  2833.               will be done when no other job processing information is supplied
  2834.               by the client (either explicitly as an IPP attribute in the
  2835.               create request or implicitly as an embedded instruction within
  2836.               the document data). If the Printer supports either the "foo-
  2837.  
  2838.  
  2839.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 49]
  2840.                                  Expires April 14, 1998
  2841.  
  2842.  
  2843.  
  2844.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  2845.  
  2846.  
  2847.               default" default value attribute or the "foo-supported"
  2848.               attribute, the Printer MUST support both.
  2849.  
  2850.            3. "foo" is OPTIOINALLY supplied by the client in a create request.
  2851.               If "foo" is supplied, the client is specifying that the Printer
  2852.               SHALL apply the corresponding job processing behavior to this Job
  2853.               while processing the Job.  When "foo" is not supplied, the client
  2854.               is specifying that the Printer apply the default job processing
  2855.               behavior.
  2856.  
  2857.               NOTE: Since an administrator MAY change the default value
  2858.               attribute after a Job has been submitted but before it has been
  2859.               processed, the default value used by the Printer object at job
  2860.               processing time may be different that the default value in effect
  2861.               at job submission time.
  2862.  
  2863.          If an application wishes to present an end user with a list of
  2864.          supported values from which to choose, the application SHOULD query
  2865.          the Printer for the supported values.  The application SHOULD also
  2866.          query the default value attributes. If the application then limits
  2867.          selectable values to only those value that are supported, the
  2868.          application can guarantee that the values supplied by the client in
  2869.          the create request all fall within the set of supported values at the
  2870.          Printer.  When querying the Printer, the client MAY enumerate each
  2871.          attribute by name in the Get-Attributes Request, or the client MAY
  2872.          just name the "job-template" group in order to get the complete set of
  2873.          supported attributes (both supported and default attributes).
  2874.  
  2875.          The "finishings" attribute is an example of a Job Template attribute.
  2876.          It can take on a set of values such as 'staple', 'punch', and/or
  2877.          'cover'.  A client can query the Printer object for the "finishings-
  2878.          supported" attribute and the "finishings-default" attribute.  The
  2879.          supported attribute contains a set of supported values.  The default
  2880.          value attribute contains the finishing value(s) that will be used for
  2881.          a new Job if the client does not supply a "finishings" attribute in
  2882.          the create request.  If the client does supply the "finishings"
  2883.          attribute in the create request, the Printer validates the value or
  2884.          values to make sure that they are a subset of the supported values.
  2885.          If the client-supplied values are all supported, the Job object is
  2886.          created with a "finishings" attribute that is populated with the
  2887.          values supplied by the client.  Subsequently, when the Job object is
  2888.          queried, it returns the values supplied by the client.  If the client
  2889.          does not supply a "finishings" attribute in the create request, the
  2890.          Job object is created, but no "finishings" attribute is associated
  2891.          with the new Job object.  A subsequent query of the Job object will
  2892.          return no "finishings" attribute.  In this case, the querying client
  2893.          knows that there were was no client supplied "finishings" attribute.
  2894.          If the client is interested to know what the default value is that the
  2895.  
  2896.  
  2897.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 50]
  2898.                                  Expires April 14, 1998
  2899.  
  2900.  
  2901.  
  2902.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  2903.  
  2904.  
  2905.          Printer will use for the missing attribute, the client can query the
  2906.          Printer object's default value "finishings-default" attribute to find
  2907.          out how the Job will be finished.
  2908.  
  2909.          The table below summarizes the names and relationships for all Job
  2910.          Template attributes. The first column of the table (labeled "Job")
  2911.          shows the name and syntax for each Job Template attribute in the Job
  2912.          object. These are the attributes that can optionally be supplied by
  2913.          the client in a create request.   The last two columns (labeled
  2914.          "Printer: Default Value" and "Printer: Supported Values") shows the
  2915.          name and syntax for each Job Template attribute in the Printer object
  2916.          (the default value attribute and the supported values attribute).  A
  2917.          "No" in the table means the Printer SHALL NOT support the attribute
  2918.          (that is the attribute is simply not applicable).
  2919.  
  2920.  
  2921.  
  2922.  
  2923.  
  2924.  
  2925.  
  2926.  
  2927.  
  2928.  
  2929.  
  2930.  
  2931.  
  2932.  
  2933.  
  2934.  
  2935.  
  2936.  
  2937.  
  2938.  
  2939.  
  2940.  
  2941.  
  2942.  
  2943.  
  2944.  
  2945.  
  2946.  
  2947.  
  2948.  
  2949.  
  2950.  
  2951.  
  2952.  
  2953.  
  2954.  
  2955.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 51]
  2956.                                  Expires April 14, 1998
  2957.  
  2958.  
  2959.  
  2960.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  2961.  
  2962.  
  2963.            +===================+======================+======================+
  2964.            | Job Attribute     |Printer: Default Value|  Printer: Supported  |
  2965.            |                   |   Attribute          |   Values Attribute   |
  2966.            +===================+======================+======================+
  2967.            | job-sheets        | job-sheets-default   |job-sheets-supported  |
  2968.            | (type4 keyword,   | (type4 keyword,      |(1setOf type4 keyword,|
  2969.            |    name)          |    name)             |    name)             |
  2970.            |                   |                      |                      |
  2971.            +-------------------+----------------------+----------------------+
  2972.          | job-priority      | job-priority-default |job-priority-supported|
  2973.            | (integer 1:100)   | (integer 1:100)      |(integer 1:100)       |
  2974.            |                   |                      |                      |
  2975.            +-------------------+----------------------+----------------------+
  2976.            | job-hold-until    | job-hold-until-      |job-hold-until-       |
  2977.            | (type4 keyword,   |  default             | supported            |
  2978.            |    name)          |  (type4 keyword,     |(1setOf type4 keyword,|
  2979.            |    name)          |    name)             |    name)             |
  2980.            +-------------------+----------------------+----------------------+
  2981.            |multiple-document- |multiple-document-    |multiple-document-    |
  2982.            | handling          | handling-default     |handling-supported    |
  2983.            | (type2 keyword)   | (type2 keyword)      |(1setOf type2 keyword)|
  2984.            +-------------------+----------------------+----------------------+
  2985.            | media             | media-default        | media-supported      |
  2986.            | (type4 keyword,   | (type4 keyword,      |(1setOf type4 keyword,|
  2987.            |    name)          |    name)             |    name)             |
  2988.            |                   |                      |                      |
  2989.            |                   |                      | media-ready          |
  2990.            |                   |                      |(1setOf type4 keyword,|
  2991.            |                   |                      |    name)              |
  2992.            |                   |                      |                      |
  2993.            +-------------------+----------------------+----------------------+
  2994.            | number-up         | number-up-default    | number-up-supported  |
  2995.            | (integer)         | (integer)            |(1setOf integer)      |
  2996.            |                   |                      |                      |
  2997.            +-------------------+----------------------+----------------------+
  2998.            | sides             | sides-default        | sides-supported      |
  2999.            | (type2 keyword)   | (type2 keyword)      |(1setOf type2 keyword)|
  3000.            |                   |                      |                      |
  3001.            +-------------------+----------------------+----------------------+
  3002.            | printer-resolution| printer-resolution-  | printer-resolution-  |
  3003.            | (resolution)      |  default             | supported            |
  3004.            |                   | (resolution)         |(1setOf resolution)   |
  3005.            +-------------------+----------------------+----------------------+
  3006.            | print-quality     | print-quality-default| print-quality-       |
  3007.            | (type2 enum)      | (type2 enum)         | supported            |
  3008.            |                   |                      |(1setOf type2 enum)   |
  3009.            +-------------------+----------------------+----------------------+
  3010.            | finishings        | finishings-default   | finishings-supported |
  3011.  
  3012.  
  3013.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 52]
  3014.                                  Expires April 14, 1998
  3015.  
  3016.  
  3017.  
  3018.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  3019.  
  3020.  
  3021.            |(1setOf type2 enum)|(1setOf type2 enum)   |(1setOf type2 enum)   |
  3022.            |                   |                      |                      |
  3023.            +-------------------+----------------------+----------------------+
  3024.            | copies            | copies-default       | copies-supported     |
  3025.            | (integer: 1:MAX)  | (integer: 1:MAX)     | (integer: 1:MAX)     |
  3026.            |                   |                      |                      |
  3027.            |                   |                      | collated-copies-     |
  3028.            |                   |                      | supported            |
  3029.            |                   |                      | (integer: 1:MAX)     |
  3030.            |                   |                      |                      |
  3031.            +-------------------+----------------------+----------------------+
  3032.            | page-ranges       | No                   | page-ranges-         |
  3033.            | (1setOf           |                      | supported (boolean)  |
  3034.            |   rangeOfInteger) |                      |                      |
  3035.            +-------------------+----------------------+----------------------+
  3036.            | orientation       | orientation-default  | orientation-         |
  3037.            | (type2 enum)      |  (type2 enum)        | supported            |
  3038.            |                   |                      |  (1setOf type2 enum) |
  3039.            +-------------------+----------------------+----------------------+
  3040.            | document-format   | document-format-     | document-format-     |
  3041.            | (mimeType)        |  default             | supported            |
  3042.            |                   |  (mimeType)          |(1setOf mimeType)     |
  3043.            +-------------------+----------------------+----------------------+
  3044.            | compression       | No                   | compression-supported|
  3045.            | (type3 keyword)   |                      |(1setOf type3 keyword)|
  3046.            |                   |                      |                      |
  3047.            +-------------------+----------------------+----------------------+
  3048.            | job-k-octets      | No                   |job-k-octets-supported|
  3049.            | (integer)         |                      | (rangeOf integer)    |
  3050.            |                   |                      |                      |
  3051.            +-------------------+----------------------+----------------------+
  3052.            | job-              | No                   | job-impressions-     |
  3053.            | impressions       |                      | supported            |
  3054.            | (integer)         |                      | (rangeOf integer)    |
  3055.            +-------------------+----------------------+----------------------+
  3056.            | job-media-        | No                   | job-media-sheets-    |
  3057.            | sheets            |                      | supported            |
  3058.            | (integer)         |                      | (rangeOf integer)    |
  3059.            +-------------------+----------------------+----------------------+
  3060.  
  3061.  
  3062.  
  3063.          4.2.1 job-sheets (type4 keyword, name)
  3064.  
  3065.          This attribute determines which if any banner page(s) SHALL be printed
  3066.          with a job.
  3067.  
  3068.          Standard values are:
  3069.  
  3070.  
  3071.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 53]
  3072.                                  Expires April 14, 1998
  3073.  
  3074.  
  3075.  
  3076.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  3077.  
  3078.  
  3079.            'none': no job sheet is printed
  3080.            'standard': one or more site specific standard job sheets are
  3081.               printed, e.g. a single start sheet or both start and end sheet is
  3082.               printed
  3083.  
  3084.          An administrator MAY define additional values using the 'name' or
  3085.          'keyword' attribute syntax, depending on implementation.
  3086.  
  3087.          Note: The effect of this attribute on jobs with multiple documents is
  3088.          controlled by the "multiple-document-handling" job attribute (section
  3089.          4.2.4).
  3090.  
  3091.          4.2.2 job-priority (integer(1:100))
  3092.  
  3093.          This attribute specifies a priority for scheduling the Job. A higher
  3094.          value specifies a higher priority. The value 1 indicates the lowest
  3095.          possible priority. The value 100 indicates the highest possible
  3096.          priority.  Among those jobs that are ready to print, a Printer SHALL
  3097.          print all jobs with a priority value of n before printing those with a
  3098.          priority value of n-1 for all n.
  3099.  
  3100.          The syntax for the "job-priority-supported" is an integer(1:100).
  3101.          This single integer value indicates the number of priority levels
  3102.          supported.  For example, if the value of "job-priority-supported" is
  3103.          '3', then the Printer object supports 3 levels of job priorities
  3104.          (let's call them 'high', 'medium', and 'low'). In this case, a client
  3105.          MUST assume the following:
  3106.  
  3107.            A client supplied value in the range 1-33 is the same as any other
  3108.               value in the range 1-33 and any one of those values corresponds
  3109.               to the 'low' priority.
  3110.            A client supplied value in the range 34-66 is the same as any other
  3111.               value in the range 34-66 and any one of those values corresponds
  3112.               to the 'medium' priority.
  3113.            A client supplied value in the range 67-100 is the same as any
  3114.               other value in the range 67-100 and any one of those values
  3115.               corresponds to the 'high' priority.
  3116.  
  3117.          For another example, if the value of "job-priority-supported" is '10',
  3118.          then the Printer object supports 3 levels of job priorities, (let's
  3119.          call them 'one', 'two', ..., and 'ten' with 'one' being the lowest
  3120.          priority and 'ten' being the highest). In this case, a client MUST
  3121.          assume the following:
  3122.  
  3123.            A client supplied value in the range 1-10 is the same as any other
  3124.               value in the range 1-10 and any one of those values corresponds
  3125.               to the 'one' priority.
  3126.  
  3127.  
  3128.  
  3129.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 54]
  3130.                                  Expires April 14, 1998
  3131.  
  3132.  
  3133.  
  3134.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  3135.  
  3136.  
  3137.            A client supplied value in the range 11-20 is the same as any other
  3138.               value in the range 11-20 and any one of those values corresponds
  3139.               to the 'two' priority.
  3140.            ...
  3141.            A client supplied value in the range 91-100 is the same as any
  3142.               other value in the range 91-100 and any one of those values
  3143.               corresponds to the 'ten' priority.
  3144.  
  3145.          4.2.3 job-hold-until (type4 keyword, name)
  3146.  
  3147.          This job attribute specifies the named time period during which the
  3148.          Job SHALL become a candidate for printing.
  3149.  
  3150.          Standard values for named time periods are:
  3151.  
  3152.            'no-hold': immediately, if there are not other reasons to hold the
  3153.               job.
  3154.            'day-time': during the day.
  3155.            'evening': evening
  3156.            'night': night
  3157.            'weekend': weekend
  3158.            'second-shift': second-shift
  3159.            'third-shift': third-shift (after midnight)
  3160.  
  3161.  
  3162.          An administrator SHALL associate allowable print times with a named
  3163.          time period (by means outside IPP 1.0).  An administrator is
  3164.          encouraged to pick names that suggest the type of time period. An
  3165.          administrator MAY define additional values using the 'name' or
  3166.          'keyword' attribute syntax, depending on implementation.
  3167.  
  3168.          If the value of this attribute specifies a time period that is in the
  3169.          future, the Printer SHALL add the 'job-hold-until-specified' value to
  3170.          the job's "job-state-reasons" attribute, move the job to the 'pending-
  3171.          held' state, and SHALL NOT schedule the job for printing until the
  3172.          specified time-period arrives.  When the specified time period
  3173.          arrives, the Printer SHALL remove the 'job-hold-until-specified' value
  3174.          from the job's "job-state-reason" attribute and, if no other job
  3175.          reasons that keep it in the 'pending-held' state remain, the Printer
  3176.          SHALL consider the job as a candidate for processing by moving the job
  3177.          to the 'pending' state.
  3178.  
  3179.          If this job attribute value is the named value 'no-hold', or specified
  3180.          time period is in effect has already started, the job SHALL be a
  3181.          candidate for processing immediately.
  3182.  
  3183.  
  3184.  
  3185.  
  3186.  
  3187.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 55]
  3188.                                  Expires April 14, 1998
  3189.  
  3190.  
  3191.  
  3192.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  3193.  
  3194.  
  3195.          4.2.4 multiple-document-handling (type2 keyword)
  3196.  
  3197.          This job attribute is relevant only if a job consists of two or more
  3198.          documents. The attribute controls finishing operations and the
  3199.          placement of print-stream pages into imposed pages and onto media
  3200.          sheets.  When   the value of the "copies" attribute exceeds 1, it also
  3201.          controls the order in which the copies that result from processing the
  3202.          documents are produced. For the purposes of this explanations, if "a"
  3203.          represents an instance of document data, then the result of processing
  3204.          the data in document "a" is a sequence of media sheets represented by
  3205.          "a(*)".
  3206.  
  3207.          Standard values are:
  3208.  
  3209.            'single-document': If a Job object has multiple documents, say the
  3210.               document data is called a and b, then the result of processing
  3211.               all the document data (a and then b) SHALL be treated as a single
  3212.               sequence of media sheets for finishing operations; that is,
  3213.               finishing would be performed on the concatenation of the
  3214.               seqeunces a(*),b(*).  The Printer SHALL NOT force the data in
  3215.               each document instance to be formatted onto a new print-stream
  3216.               page, nor to start a new imposed page or a new media sheet. If
  3217.               more than one copy is made, the ordering of the sets of media
  3218.               sheets resulting from processing the document data SHALL be a(*),
  3219.               b(*), a(*), b(*),...., and the Printer SHALL force each copy to
  3220.               start on a new media sheet.
  3221.            'separate-documents-uncollated-copies': If a Job object has
  3222.               multiple documents, say the document data is called a and b, then
  3223.               the result of processing the data in each document instance SHALL
  3224.               be treated as a single sequence of media sheets for finishing
  3225.               operations; that is, the sets a(*) and b(*) would each be
  3226.               finished separately. The Printer SHALL force each copy of the
  3227.               result of process the data in a single document to start on a new
  3228.               media sheet. If more than one copy is made, the ordering of the
  3229.               sets of media sheets resulting from processing the document data
  3230.               SHALL be a(*), a(*), b(*), b(*) ....
  3231.            'separate-documents-collated-copies': If a Job object has multiple
  3232.               documents, say the document data is called a and b, then the
  3233.               result of processing the data in each document instance SHALL be
  3234.               treated as a single sequence of media sheets for finishing
  3235.               operations; that is, the sets a(*) and b(*) would each be
  3236.               finished separately. If more than one copy is made, the ordering
  3237.               of the sets of media sheets resulting from processing the
  3238.               document data SHALL be a(*), b(*), a(*), b(*), ...., and the
  3239.               Printer SHALL force each document copy to start on a new sheet .
  3240.  
  3241.          'separate-documents-collated-copies' is the same as 'single-document'
  3242.          with respect to ordering of pages, but not media sheet generation,
  3243.  
  3244.  
  3245.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 56]
  3246.                                  Expires April 14, 1998
  3247.  
  3248.  
  3249.  
  3250.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  3251.  
  3252.  
  3253.          since the latter will put the first page of the next document on the
  3254.          back side of a sheet if an odd number of pages have been produced so
  3255.          far for the job, while the former case always force the next document
  3256.          or document copy on to a new sheet.
  3257.  
  3258.          4.2.5 media (type4 keyword, name)
  3259.  
  3260.          This job attribute identifies the medium that the Printer uses for all
  3261.          pages of the Job.
  3262.  
  3263.          The values for "media" include medium-names, medium-sizes, input-trays
  3264.          and electronic forms so that one attribute specifies the media. If a
  3265.          printer allows a client to specify a medium name as the value of this
  3266.          attribute, such a medium name implicitly selects an input-tray that
  3267.          contains the specified medium.  If a printer allows a client to
  3268.          specify a medium size as the value of this attribute, such a medium
  3269.          size implicitly selects a medium name that in turn implicitly selects
  3270.          an input-tray that contains the medium with the specified size.  If a
  3271.          printer allows a client to specify an input-tray as the value of this
  3272.          attribute, such an input-tray implicitly selects the medium that is in
  3273.          that input-tray at the time the job prints. This case includes manual-
  3274.          feed input-trays.  If a printer allows a client to specify an
  3275.          electronic form as the value of this attribute, such an electronic
  3276.          form implicitly selects a medium-name that in turn implicitly selects
  3277.          an input-tray that contains the medium specified by the electronic
  3278.          form. The electronic form also implicitly selects an image that the
  3279.          Printer SHALL merge with the document data as its prints each page.
  3280.  
  3281.          Standard values are (taken from ISO DPA and the Printer MIB) and are
  3282.          listed in section 14. An administrator MAY define additional values
  3283.          using the 'name' or 'keyword' attribute syntax, depending on
  3284.          implementation.
  3285.  
  3286.          There is also an additional attribute named "media-ready" which
  3287.          differs from "media-supported" in that legal values only include the
  3288.          subset of "media-supported" values that are physically loaded and
  3289.          ready for printing with no operator intervention required.
  3290.  
  3291.          The relationship of this attribute and the other attributes that
  3292.          control document processing is described in section 15.4.
  3293.  
  3294.          4.2.6 number-up (integer)
  3295.  
  3296.          This job attribute specifies the number of source page-images to
  3297.          impose upon a single side of an instance of a selected medium.  For
  3298.          example, if the value is
  3299.  
  3300.  
  3301.  
  3302.  
  3303.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 57]
  3304.                                  Expires April 14, 1998
  3305.  
  3306.  
  3307.  
  3308.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  3309.  
  3310.  
  3311.            '1': The Printer SHALL place one logical page on a single side of
  3312.               an instance of the selected medium (MAY add some sort of
  3313.               translation, scaling, or rotation).
  3314.            '2': The Printer SHALL place two logical pages on a single side of
  3315.               an instance of the selected medium (MAY add some sort of
  3316.               translation, scaling, or rotation).
  3317.            '4': The Printer SHALL place four logical pages on a single side of
  3318.               an instance of the selected medium (MAY add some sort of
  3319.               translation, scaling, or rotation).
  3320.  
  3321.          This attribute primarily controls the translation, scaling and
  3322.          rotation of page images, but a site may choose to add embellishments,
  3323.          such as borders to each logical page.
  3324.  
  3325.          Note: The effect of this attribute on jobs with multiple documents is
  3326.          controlled by the "multiple-document-handling" job attribute (section
  3327.          4.2.4) and the relationship of this attribute and the other attributes
  3328.          that control document processing is described in section 15.4.
  3329.  
  3330.          ISSUE: Steve Z.: should this section be changed to include "print-
  3331.          stream page" and "layout page"?? rather than "source page" and
  3332.          "logical page"?
  3333.  
  3334.          4.2.7 sides (type2 keyword)
  3335.  
  3336.          This attribute specifies how source page-images are to be imposed upon
  3337.          the sides of an instance of a selected medium.
  3338.  
  3339.          The standard values are:
  3340.  
  3341.            'one-sided': imposes each consecutive source page-image upon the
  3342.               same side of consecutive media sheets.
  3343.            'two-sided-long-edge': imposes each consecutive pair of source
  3344.               page-image upon front and back sides of consecutive media sheets,
  3345.               such that the orientation of each pair of source-pages on the
  3346.               medium would be correct for the reader as if for binding on the
  3347.               long edge.  This imposition is sometimes called 'duplex' or
  3348.               'head-to-head'.
  3349.            'two-sided-short-edge': imposes each consecutive pair of source
  3350.               page-image upon front and back sides of consecutive media sheets,
  3351.               such that the orientation of each pair of source-pages on the
  3352.               medium would be correct for the reader as if for binding on the
  3353.               short edge.  This imposition is sometimes called 'tumble' or
  3354.               'head-to-toe'.
  3355.  
  3356.          'two-sided-long-edge', 'two-sided-short-edge', 'tumble', and 'duplex'
  3357.          all work the same for portrait or landscape.  However 'head-to-toe' is
  3358.          'tumble' in portrait but 'duplex' in landscape.  'head-to-head' also
  3359.  
  3360.  
  3361.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 58]
  3362.                                  Expires April 14, 1998
  3363.  
  3364.  
  3365.  
  3366.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  3367.  
  3368.  
  3369.          switches between 'duplex' and 'tumble' when using portrait and
  3370.          landscape modes.
  3371.  
  3372.          Note: The effect of this attribute on jobs with multiple documents is
  3373.          controlled by the "multiple-document-handling" job attribute (section
  3374.          4.2.4) and the relationship of this attribute and the other attributes
  3375.          that control document processing is described in section 15.4.
  3376.  
  3377.          4.2.8  printer-resolution (resolution)
  3378.  
  3379.          This attribute identifies the resolution that Printer uses for a
  3380.          certain Job.
  3381.  
  3382.          4.2.9 print-quality (type2 enum)
  3383.  
  3384.          This attribute specifies the print quality that the Printer SHALL use
  3385.          for a certain Job.
  3386.  
  3387.          The standard values are:
  3388.  
  3389.            '3'     'draft': lowest quality available on the printer
  3390.            '4'     'normal': normal or intermediate quality on the printer
  3391.            '5'     'high': highest quality available on the printer
  3392.  
  3393.  
  3394.          4.2.10 finishings (1setOf type2 enum)
  3395.  
  3396.          This attribute identifies the finishing operations that the Printer
  3397.          uses for each copy of each printed document in a particular Job. For
  3398.          Jobs with multiple documents, the "multiple-document-handling"
  3399.          attribute determines what constitutes a _copy_ for purposes of
  3400.          finishing.
  3401.  
  3402.          Standard values are:
  3403.  
  3404.            '3'     'none':  Perform no finishing
  3405.            '4'     'staple':  Bind the document(s) with one or more staples.
  3406.                         The exact number and placement of the staples is site-
  3407.                         defined.
  3408.            '5'     'punch':  This value indicates that holes are required in
  3409.                         the finished document. The exact number and placement
  3410.                         of the holes is site-defined  The punch specification
  3411.                         MAY be satisfied (in a site- and implementation-
  3412.                         specific manner) either by drilling/punching, or by
  3413.                         substituting pre-drilled media.
  3414.            '6'     'cover':  This value is specified when it is desired to
  3415.                         select a non-printed (or pre-printed) cover for the
  3416.                         document. This does not supplant the specification of a
  3417.  
  3418.  
  3419.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 59]
  3420.                                  Expires April 14, 1998
  3421.  
  3422.  
  3423.  
  3424.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  3425.  
  3426.  
  3427.                         printed cover (on cover stock medium) by the document
  3428.                         itself.
  3429.            '7'     'bind':  This value indicates that a binding is to be
  3430.                         applied to the document; the type and placement of the
  3431.                         binding is site-defined."
  3432.  
  3433.          Note: The effect of this attribute on jobs with multiple documents is
  3434.          controlled by the "multiple-document-handling" job attribute (section
  3435.          4.2.4).
  3436.  
  3437.          If the client supplies a value of 'none' along with any other
  3438.          combination of values, it is the same as if only that other
  3439.          combination of values had been supplied (that is the 'none' value has
  3440.          no effect).
  3441.  
  3442.  
  3443.          4.2.11 copies (integer(1:2**31 - 1))
  3444.  
  3445.          This attribute specifies the number of copies to be printed.  On many
  3446.          devices the supported number of collated copies will be limited by the
  3447.          number of physical output bins on the device, and may be different
  3448.          from the number of uncollated copies which can be supported. The
  3449.          "copies-supported" attribute is the limit on the number of uncollated
  3450.          copies supported.  The "collated-copies-supported" attribute is the
  3451.          limit on the number of collated copies supported.  The value in the
  3452.          "copies-default" default value attribute applies to either collated or
  3453.          uncollated as determined by the value in the "multiple-document-
  3454.          handling-default" attribute.
  3455.  
  3456.          Note: The effect of this attribute on jobs with multiple documents is
  3457.          controlled by the "multiple-document-handling" job attribute (section
  3458.          4.2.4) and the relationship of this attribute and the other attributes
  3459.          that control document processing is described in section 15.4.
  3460.  
  3461.          4.2.12 page-ranges (1setOf rangeOfInteger)
  3462.  
  3463.          This attribute specifies the pages of a document which are to be
  3464.          printed. In most cases, the exact pages to be printed will be
  3465.          generated by a device driver and this attribute would not be required.
  3466.          However, when printing an archived document which has already been
  3467.          formatted, the end user may elect to print just a subset of the pages
  3468.          contained in the document. In this case, if page-range = n.m is
  3469.          specified, the first page to be printed will be page n. All subsequent
  3470.          pages of the document will be printed through and including page m.
  3471.  
  3472.          "page-ranges-supported" is a boolean value indicating whether or not
  3473.          the printer is capable of supporting the printing of page ranges.
  3474.          This capability may differ from one PDL to another. There is no "page-
  3475.  
  3476.  
  3477.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 60]
  3478.                                  Expires April 14, 1998
  3479.  
  3480.  
  3481.  
  3482.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  3483.  
  3484.  
  3485.          ranges-default" attribute.  If the "page-ranges" attribute is not
  3486.          supplied by the client, all pages of the document will be printed.
  3487.  
  3488.          4.2.13 orientation (type2 enum)
  3489.  
  3490.          This attribute specifies the orientation of the content on the output
  3491.          pages to be printed.  In most cases, the orientation of the content is
  3492.          specified within the document format generated by the device driver at
  3493.          print time. However, some document formats (such as 'text/plain') do
  3494.          not support the notion of page orientation, and it is possible to bind
  3495.          the orientation after the document content has been generated.  This
  3496.          attribute provides an end user with the means to specify orientation
  3497.          for such documents.
  3498.  
  3499.          Standard values are:
  3500.  
  3501.            '1'     'portrait':  The content will be imaged across the short
  3502.                         edge of the medium.
  3503.            '2'     'landscape':  The content will be imaged across the long
  3504.                         edge of the medium.  Landscape is defined to be a
  3505.                         rotation of the logical page to be imaged by +90
  3506.                         degrees with respect to the medium (i.e. anti-
  3507.                         clockwise) from the portrait orientation.  Note:  The
  3508.                         +90 direction was chosen because simple finishing on
  3509.                         the long edge is the same edge whether portrait or
  3510.                         landscape
  3511.            '3'     'reverse-landscape':  The content will be imaged across the
  3512.                         long edge of the medium.  Reverse-landscape is defined
  3513.                         to be a rotation of the logical page to be imaged by -
  3514.                         90 degrees with respect to the medium (i.e. clockwise)
  3515.                         from the portrait orientation.  Note: The 'reverse-
  3516.                         landscape' value was added because some applications
  3517.                         rotate landscape -90 degrees from portrait, rather than
  3518.                         +90 degrees.
  3519.  
  3520.          Note: The effect of this attribute on jobs with multiple documents is
  3521.          controlled by the "multiple-document-handling" job attribute (section
  3522.          4.2.4) and the relationship of this attribute and the other attributes
  3523.          that control document processing is described in section 15.4.
  3524.  
  3525.          4.2.14 document-format (mimeType)
  3526.  
  3527.          This attribute identifies the document format of the data to be
  3528.          printed.  The standard values for this attribute are Internet Media
  3529.          types which are sometimes called MIME types.  See the description of
  3530.          the 'mimeType' attribute syntax in Section 4.1.9.
  3531.  
  3532.  
  3533.  
  3534.  
  3535.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 61]
  3536.                                  Expires April 14, 1998
  3537.  
  3538.  
  3539.  
  3540.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  3541.  
  3542.  
  3543.          4.2.15 compression (type3 keyword)
  3544.  
  3545.          This attribute identifies compression algorithms used on compressed
  3546.          document data.  The value of this attribute does not apply the
  3547.          encoding of the IPP operation itself.
  3548.  
  3549.          Standard values are :
  3550.  
  3551.            'none': no compression is used.
  3552.            'deflate':  ZIP public domain inflate/deflate) compression
  3553.               technology
  3554.            `gzip' GNU zip compression technology described in RFC 1952.
  3555.            'compress': UNIX compression technology
  3556.  
  3557.          4.2.16 job-k-octets (integer(0:2**31 - 1))
  3558.  
  3559.          This attribute specifies the total size of the document data in K
  3560.          octets, i.e., in units of 1024 octets requested to be  processed in
  3561.          the job.  The value SHALL be rounded up, so that a job between 1 and
  3562.          1024 octets SHALL be indicated as being 1, 1025 to 2048 SHALL be 2,
  3563.          etc.
  3564.  
  3565.          This value SHALL not include the multiplicative factors contributed by
  3566.          the number of copies specified by the "copies" attribute, independent
  3567.          of whether the device can process multiple copies without making
  3568.          multiple passes over the document data and independent of whether the
  3569.          output is collated or not.  Thus the value is independent of the
  3570.          implementation.
  3571.  
  3572.          Note:  This attribute and the following two attributes ("job-
  3573.          impressions" and "job-media-sheets") are not intended to be counters;
  3574.          they are intended to be useful routing and scheduling information if
  3575.          known. For these three attributes,  the Printer may try to compute the
  3576.          value if it is not supplied in the create request.  Even if the client
  3577.          does supply a value for this attribute in the create request, the
  3578.          Printer may choose to change the value if the Printer is able to
  3579.          compute a value which is more accurate than the client supplied value.
  3580.          The Printer may be able to determine the correct value for this
  3581.          attribute either right at job submission time or at any later point in
  3582.          time.  If the value of this attribute is unknown, the Printer may
  3583.          choose to respond with a value of '-2' (which signifies "unknown")
  3584.          rather than choose to not support the attribute at all.
  3585.  
  3586.          4.2.17 job-impressions (integer(0:2**31 - 1))
  3587.  
  3588.          This attribute specifies the total number of impressions of the
  3589.          document(s) being requested by this job to produce.
  3590.  
  3591.  
  3592.  
  3593.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 62]
  3594.                                  Expires April 14, 1998
  3595.  
  3596.  
  3597.  
  3598.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  3599.  
  3600.  
  3601.          This value SHALL not include the multiplicative factors contributed by
  3602.          the number of copies specified by the "copies" attribute, independent
  3603.          of whether the device can process multiple copies without making
  3604.          multiple passes over the document data and independent of whether the
  3605.          output is collated or not.  Thus the value is independent of the
  3606.          implementation.
  3607.  
  3608.          4.2.18 job-media-sheets (integer(0:2**31 - 1))
  3609.  
  3610.          This attribute specifies the total number of media sheets to be
  3611.          processed for this job.
  3612.  
  3613.          Unlike the "job-k-octets" and the "job-impressions" attributes, this
  3614.          value SHALL include the multiplicative factors contributes by the
  3615.          number of copies specified by the "copies" attribute
  3616.  
  3617.  
  3618.          4.3 Job Description Attributes
  3619.  
  3620.          The attributes in this section form the attribute group called "job-
  3621.          description".  The following table summarizes these attributes.  The
  3622.          third column indicates whether the attribute is a MANDATORY attribute
  3623.          that MUST be supported by Printer objects.  If it is not MANDATORY,
  3624.          then it is OPTIONAL.
  3625.  
  3626.  
  3627.  
  3628.  
  3629.  
  3630.  
  3631.  
  3632.  
  3633.  
  3634.  
  3635.  
  3636.  
  3637.  
  3638.  
  3639.  
  3640.  
  3641.  
  3642.  
  3643.  
  3644.  
  3645.  
  3646.  
  3647.  
  3648.  
  3649.  
  3650.  
  3651.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 63]
  3652.                                  Expires April 14, 1998
  3653.  
  3654.  
  3655.  
  3656.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  3657.  
  3658.  
  3659.          +----------------------------+----------------------+----------------+
  3660.          |      Attribute             |     Syntax           |   MANDATORY?   |
  3661.          +----------------------------+----------------------+----------------+
  3662.          | job-uri                    | uri                  |  MANDATORY     |
  3663.          +----------------------------+----------------------+----------------+
  3664.          | job-id                     | integer(1:MAX)       |  MANDATORY     |
  3665.          +----------------------------+----------------------+----------------+
  3666.          | job-more-info              | uri                  |                |
  3667.          +----------------------------+----------------------+----------------+
  3668.          | job-name                   | name                 |  MANDATORY     |
  3669.          +----------------------------+----------------------+----------------+
  3670.          | job-originating-user       | octetString          |  MANDATORY     |
  3671.          +----------------------------+----------------------+----------------+
  3672.          | job-state                  | type1 enum           |  MANDATORY     |
  3673.          +----------------------------+----------------------+----------------+
  3674.          | job-state-reasons          | 1setOf type2 keyword |                |
  3675.          +----------------------------+----------------------+----------------+
  3676.          | job-state-message          | text                 |                |
  3677.          +----------------------------+----------------------+----------------+
  3678.          | number-of-documents        | integer              |                |
  3679.          +----------------------------+----------------------+----------------+
  3680.          | output-device-assigned     | name                 |                |
  3681.          +----------------------------+----------------------+----------------+
  3682.          | time-of-creation           | integer              |                |
  3683.          +----------------------------+----------------------+----------------+
  3684.          | time-at-processing         | integer              |                |
  3685.          +----------------------------+----------------------+----------------+
  3686.          | time-at-completed          | integer              |                |
  3687.          +----------------------------+----------------------+----------------+
  3688.          | number-of-intervening-jobs | integer              |                |
  3689.          +----------------------------+----------------------+----------------+
  3690.          | job-message-from-operator  | text                 |                |
  3691.          +----------------------------+----------------------+----------------+
  3692.          | job-k-octets-processed     | integer              |                |
  3693.          +----------------------------+----------------------+----------------+
  3694.          | job-impressions-completed  | integer              |                |
  3695.          +----------------------------+----------------------+----------------+
  3696.          | job-media-sheets-completed | integer              |                |
  3697.          +----------------------------+----------------------+----------------+
  3698.          | attributes-charset         | charSet              |  MANDATORY     |
  3699.          +----------------------------+----------------------+----------------+
  3700.          | attributes-natural-language| naturalLanguage      |  MANDATORY     |
  3701.          +----------------------------+----------------------+----------------+
  3702.  
  3703.  
  3704.          4.3.1 job-uri (uri)
  3705.  
  3706.  
  3707.  
  3708.  
  3709.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 64]
  3710.                                  Expires April 14, 1998
  3711.  
  3712.  
  3713.  
  3714.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  3715.  
  3716.  
  3717.          This attribute contains the URI for the job.  The Printer, on receipt
  3718.          of a new job, generates a URI which identifies the new Job on that
  3719.          Printer. The Printer returns the value of the "job-uri" attribute as
  3720.          part of the response to a create request.   This MUST be an HTTP
  3721.          schemed URI, however the precise format of a Job URI is implementation
  3722.          dependent.
  3723.  
  3724.          For a description of this attribute and its relationship to the
  3725.          following "job-id" attribute, see the discussion in section 2.4 on
  3726.          "Object Identity".
  3727.  
  3728.          4.3.2 job-id (integer(1:MAX))
  3729.  
  3730.          This attribute contains the ID of the job.  The Printer, on receipt of
  3731.          a new job, generates an ID which identifies the new Job on that
  3732.          Printer. The Printer returns the value of the "job-id" attribute as
  3733.          part of the response to a create request.
  3734.  
  3735.          For a description of this attribute and its relationship to the
  3736.          previous "job-uri" attribute, see the discussion in section 2.4 on
  3737.          "Object Identity".
  3738.  
  3739.          4.3.3 job-more-info (uri)
  3740.  
  3741.          Similar to "printer-more-info", this attribute contains the URI
  3742.          referencing some resource with more information about this Job object,
  3743.          perhaps an HTML page containing information about the Job.
  3744.  
  3745.          4.3.4 job-name (name)
  3746.  
  3747.          This attribute is the name of the job.  It is a name that is more user
  3748.          friendly than the "job-uri" attribute value.  It does not need to be
  3749.          unique between Jobs.  The Job's "job-name" attribute is set to the
  3750.          value supplied by the client in the "job-name" operation attribute in
  3751.          the create request.   If, however, if the "job-name" operation
  3752.          attribute is not supplied by the client in the create request, the
  3753.          Printer, on creation of the Job, SHALL generate a name. The printer
  3754.          SHOULD generate the value of the Job's "job-name" attribute from the
  3755.          first of the following sources that produces a value: 1) the
  3756.          "document-URI" attribute of the first (or only) document, 2) the
  3757.          "document-name" operation attribute of the first (or only) document,
  3758.          or 3) any other piece of Job specific information.
  3759.  
  3760.          4.3.5 job-originating-user (octetString)
  3761.  
  3762.          This attribute contains the identity of the end user that submitted
  3763.          the print job.  The Printer object sets this attribute to the most
  3764.  
  3765.  
  3766.  
  3767.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 65]
  3768.                                  Expires April 14, 1998
  3769.  
  3770.  
  3771.  
  3772.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  3773.  
  3774.  
  3775.          authenticated name that it can obtain from the authentication service
  3776.          over which the IPP operation was received.
  3777.  
  3778.          4.3.6 job-state (type1 enum)
  3779.  
  3780.          This attribute identifies the current state of the job.  Even though
  3781.          the IPP protocol defines eight values for job states, implementations
  3782.          only need to support those states which are appropriate for the
  3783.          particular implementation.  In other words, a Printer supports only
  3784.          those job states implemented by the output device and available to the
  3785.          Printer object implementation.
  3786.  
  3787.          Standard values are:
  3788.  
  3789.            'unknown'(2):  The job state is not known, or its state is
  3790.               indeterminate.
  3791.            'pending'(3):  The job is a candidate to start processing, but is
  3792.               not yet processing.
  3793.            'pending-held'(4):  The job is not a candidate for processing for
  3794.               any number of reasons but will return to the 'pending' state as
  3795.               soon as the reasons are no longer present.  The job's "job-state-
  3796.               reason" attribute SHALL indicate why the job is no longer a
  3797.               candidate for processing.
  3798.            'processing'(5):  One or more of:
  3799.               1.  the job is using, or is attempting to use, one or more purely
  3800.                 software processes that are analyzing, creating, or
  3801.                 interpreting a PDL, etc.,
  3802.               2.  the job is using, or is attempting to use, one or more
  3803.                 hardware devices that are interpreting a PDL, making marks on
  3804.                 a medium, and/or performing finishing, such as stapling, etc.,
  3805.               3. the server has made the job ready for printing, but the output
  3806.                 device is not yet printing it, either because the job hasn't
  3807.                 reached the output device or because the job is queued in the
  3808.                 output device or some other spooler, awaiting the output
  3809.                 device to print it.
  3810.  
  3811.               Implementations MAY, though they NEED NOT, include additional
  3812.               values in the job's "job-state-reasons" attribute to indicate the
  3813.               progress of the job, such as adding the 'job-printing' value to
  3814.               indicate when the device is actually making marks on a medium.
  3815.               When the job is in the 'processing' state, the entire job state
  3816.               includes the detailed status represented in the printer's
  3817.               "printer-state", "printer-state-reasons", and "printer-state-
  3818.               message" attributes.
  3819.               Implementations MAY include additional values in the job's "job-
  3820.               state-reasons" attribute to indicate the progress of the job,
  3821.               such as adding the 'job-printing' value to indicate when the
  3822.               output device is actually making marks on paper and/or the
  3823.  
  3824.  
  3825.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 66]
  3826.                                  Expires April 14, 1998
  3827.  
  3828.  
  3829.  
  3830.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  3831.  
  3832.  
  3833.               'processing-to-stop-point' value to indicate that the server or
  3834.               device is in the process of canceling or aborting the job.  Most
  3835.               implementations won't bother with this nuance.
  3836.            'processing-stopped'(6):  The job has stopped while processing for
  3837.               any number of reasons and will return to the 'processing' state
  3838.               as soon as the reasons are no longer present.
  3839.  
  3840.               The job's "job-state-reason" attribute MAY indicate why the job
  3841.               has stopped processing.  For example, if the output device is
  3842.               stopped, the 'printer-stopped' value MAY be included in the job's
  3843.               "job-state-reasons" attribute.
  3844.  
  3845.               Note:  When an output device is stopped, the device usually
  3846.               indicates its condition in human readable form locally at the
  3847.               device.  A client can obtain more complete device status remotely
  3848.               by querying the printer's "printer-state", "printer-state-
  3849.               reasons" and "printer-state-message" attributes.
  3850.  
  3851.            'canceled'(7):  The job has been canceled by a Cancel-Job operation
  3852.               and the Printer has completed canceling the job  and all job
  3853.               status attributes have reached their final values for the job.
  3854.               While the Printer is canceling the job, the job's "job-state-
  3855.               reasons" attribute SHOULD contain the 'processing-to-stop-point'
  3856.               value and one of the 'canceled-by-user', 'canceled-by-operator',
  3857.               or 'canceled-at-device' value.
  3858.            'aborted'(8):  The job has been aborted by the system, usually
  3859.               while the job was in the 'processing' or 'processing-stopped'
  3860.               state and the Printer has completed aborting the job and all job
  3861.               status attributes have reached their final values for the job.
  3862.               While the server or device is aborting the job, the job's "job-
  3863.               state-reasons" attribute MAY contain the 'processing-to-stop-
  3864.               point' and 'aborted-by-system' values.  If supported, the
  3865.               'aborted-by-system' value SHALL remain while the job is in the
  3866.               'aborted' state.
  3867.            'completed'(9):  The job has completed successfully or with
  3868.               warnings or errors after processing and all of the job media
  3869.               sheets have been successfully stacked in the appropriate output
  3870.               bin(s).  The job's "job-state-reasons" attribute SHOULD contain
  3871.               one of: 'completed-successfully', 'completed-with-warnings', or
  3872.               'completed-with-errors' values.
  3873.  
  3874.          The final value for this attribute SHALL be one of: 'completed',
  3875.          'canceled', or 'aborted' before the Printer removes the job
  3876.          altogether.  The length of time that jobs remain in the 'canceled',
  3877.          'aborted', and 'completed' states depends on implementation.
  3878.  
  3879.          The following figure shows the normal job state transitions.
  3880.  
  3881.  
  3882.  
  3883.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 67]
  3884.                                  Expires April 14, 1998
  3885.  
  3886.  
  3887.  
  3888.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  3889.  
  3890.  
  3891.                                                             +----> canceled
  3892.                                                            /
  3893.              +----> pending --------> processing ---------+------> completed
  3894.              |         ^                   ^               \
  3895.          --->+         |                   |                +----> aborted
  3896.              |         v                   v               /
  3897.              +----> pending-held    processing-stopped ---+
  3898.  
  3899.          Normally a job progresses from left to right.  Other state transitions
  3900.          are unlikely, but are not forbidden.  Not shown are the transitions to
  3901.          the 'canceled' state from the 'pending', 'pending-held', and
  3902.          'processing-stopped' states.
  3903.  
  3904.          Jobs reach one of the three terminal states: 'completed', 'canceled',
  3905.          or 'aborted', after the jobs have completed all activity, including
  3906.          stacking output media, after the jobs have completed all activity, and
  3907.          all job status attributes have reached their final values for the job.
  3908.  
  3909.          4.3.7 job-state-reasons (1setOf  type2 keyword)
  3910.  
  3911.          This attribute provides additional information about the job's current
  3912.          state, i.e., information that augments the value of the job's "job-
  3913.          state" attribute.
  3914.  
  3915.          Implementation of these values is OPTIONAL, i.e., a Printer NEED NOT
  3916.          implement them, even if (1) the output device supports the
  3917.          functionality represented by the reason and (2) is available to the
  3918.          Printer object implementation.  These values MAY be used with any job
  3919.          state or states for which the reason makes sense.  Furthermore, when
  3920.          implemented, the Printer SHALL return these values when the reason
  3921.          applies and SHALL NOT return them when the reason no longer applies
  3922.          whether the value of the Job's "job-state" attribute changed or not.
  3923.          When the Job does not have any reasons for being in its current state,
  3924.          the Printer MAY set the value of the Job's "job-state-reasons"
  3925.          attribute to 'none'.
  3926.  
  3927.          NOTE - While values cannot be added to the 'job-state' attribute
  3928.          without impacting deployed clients that take actions upon receiving
  3929.          "job-state" values, it is the intent that additional "job-state-
  3930.          reasons" values can be defined and registered without impacting such
  3931.          deployed clients.  In other words, the "job-state-reasons" attribute
  3932.          is intended to be extensible.
  3933.  
  3934.          The following standard values are defined.  For ease of understanding,
  3935.          the values are presented in the order in which the reasons are likely
  3936.          to occur (if implemented), starting with the 'job-incoming' value:
  3937.  
  3938.            'none':  There are no reasons for the job's current state.
  3939.  
  3940.  
  3941.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 68]
  3942.                                  Expires April 14, 1998
  3943.  
  3944.  
  3945.  
  3946.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  3947.  
  3948.  
  3949.            'job-incoming':  The CreateJob operation has been accepted by the
  3950.               Printer, but the Printer is expecting additional Send-Document
  3951.               and/or Send-URI operations and/or is accessing/accepting document
  3952.               data.
  3953.            'submission-interrupted':  The job was not completely submitted for
  3954.               some unforeseen reason, such as: (1) the Printer has crashed
  3955.               before the job was closed by the client, (2) the Printer or the
  3956.               document transfer method has crashed in some non-recoverable way
  3957.               before the document data was entirely transferred to the Printer,
  3958.               (3) the client crashed or failed to close the job before the
  3959.               time-out period.
  3960.            'job-outgoing':  The Printer is transmitting the job to the output
  3961.               device.
  3962.            'job-hold-until-specified':  The value of the job's "job-hold-
  3963.               until" attribute was specified with a time period that is still
  3964.               in the future.  The job SHALL NOT be a candidate for processing
  3965.               until this reason is removed and there are no other reasons to
  3966.               hold the job.
  3967.            'resources-are-not-ready':  At least one of the resources needed by
  3968.               the job, such as media, fonts, resource objects, etc., is not
  3969.               ready on any of the physical printer's for which the job is a
  3970.               candidate.  This condition MAY be detected when the job is
  3971.               accepted, or subsequently while the job is pending or processing,
  3972.               depending on implementation.
  3973.            'printer-stopped-partly':  The value of the Printer's "printer-
  3974.               state-reasons" attribute contains the value 'stopped-partly'.
  3975.            'printer-stopped':  The value of the Printer's "printer-state"
  3976.               attribute is 'stopped'.
  3977.            'job-interpreting': Job is in the 'processing' state, but more
  3978.               specifically, the Printer is interpreting the document data.
  3979.            'job-queued': Job is in the 'processing' state, but more
  3980.               specifically, the Printer has queued the document data.
  3981.            'job-transforming': Job is in the 'processing' state, but more
  3982.               specifically, the Printer is interpreting document data and
  3983.               producing another electronic representation.
  3984.            'job-printing':  The output device is marking media. This value is
  3985.               useful for Printers which spend a great deal of time processing
  3986.               (1) when no marking is happening and then want to show that
  3987.               marking is now happening or (2) when the job is in the process of
  3988.               being canceled or aborted while the job remains in the
  3989.               'processing' state, but the marking has not yet stopped so that
  3990.               impression or sheet counts are still increasing for the job.
  3991.            'job-canceled-by-user':  The job was canceled by the owner of the
  3992.               job using the Cancel-Job request, i.e., by a user whose name is
  3993.               the same as the value of the job's "job-originating-user"
  3994.               attribute, or by some other authorized end-user, such as a member
  3995.               of the job owner's security group.
  3996.  
  3997.  
  3998.  
  3999.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 69]
  4000.                                  Expires April 14, 1998
  4001.  
  4002.  
  4003.  
  4004.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  4005.  
  4006.  
  4007.            'job-canceled-by-operator':  The job was canceled by the operator
  4008.               using the Cancel-Job request, i.e., by a user who has been
  4009.               authenticated as having operator privileges (whether local or
  4010.               remote).
  4011.            'job-canceled-at-device':  The job was canceled by an unidentified
  4012.               local user, i.e., a user at a console at the device.
  4013.            'aborted-by-system':  The job (1) is in the process of being
  4014.               aborted, (2) has been aborted by the system and placed in the
  4015.               'aborted' state, or (3) has been aborted by the system and placed
  4016.               in the 'pending-held' state, so that a user or operator can
  4017.               manually try the job again.
  4018.            'processing-to-stop-point':  The requester has issued a Cancel-job
  4019.               operation or the Printer object has aborted the job, but is still
  4020.               performing some actions on the job until a specified stop point
  4021.               occurs or job termination/cleanup is completed.
  4022.  
  4023.               This reason is recommended to be used in conjunction with the
  4024.               'processing' job state to indicate that the Printer object is
  4025.               still performing some actions on the job while the job remains in
  4026.               the 'processing' state.  After all the job's job description
  4027.               attributes have stopped incrementing, the Printer object moves
  4028.               the job from the 'processing' state to the 'canceled' or
  4029.               'aborted' job states.
  4030.  
  4031.            'service-off-line':  The Printer is off-line and accepting no jobs.
  4032.               All 'pending' jobs are put into the 'pending-held' state.  This
  4033.               situation could be true if the service's or document transform's
  4034.               input is impaired or broken.
  4035.            'job-completed-successfully':  The job completed successfully.
  4036.            'job-completed-with-warnings':  The job completed with warnings.
  4037.            'job-completed-with-errors':  The job completed with errors (and
  4038.               possibly warnings too).
  4039.  
  4040.  
  4041.          4.3.8 job-state-message (text)
  4042.  
  4043.          This attributes specifies supplemental information about the Job State
  4044.          in human readable text. The Printer object SHALL be able to generate
  4045.          this message in any of the natural languages identified by the
  4046.          Printer's "natural-language-supported" attribute (see the "attributes-
  4047.          natural-language" operation attribute specified in Section 3.1.3.1).
  4048.  
  4049.          4.3.9 number-of-documents (integer(0:2**31 - 1))
  4050.  
  4051.          This attribute indicates the number of documents in the job, i.e, the
  4052.          number of Send-Document, Send-URI, Print-Job, or Print-URI operations
  4053.          that the Printer has accepted for this job, regardless of whether the
  4054.          document data has reached the Printer or not.
  4055.  
  4056.  
  4057.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 70]
  4058.                                  Expires April 14, 1998
  4059.  
  4060.  
  4061.  
  4062.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  4063.  
  4064.  
  4065.          Implementations supporting the OPTIONAL Create-Job/Send-Document/Send-
  4066.          URI operations SHOULD support this attribute.
  4067.  
  4068.          4.3.10 output-device-assigned (name)
  4069.  
  4070.          This attribute identifies the Output Device to which the Printer has
  4071.          assigned this job.  If an output device implements an embedded IPP
  4072.          Printer, the Printer NEED NOT set this attribute.  If a Print Server
  4073.          implements a Printer, the value MAY be empty until the Printer assigns
  4074.          an output device to the job.
  4075.  
  4076.          4.3.11 time-of-creation (integer)
  4077.  
  4078.          This attribute indicates the point in time at which the Job object was
  4079.          created.  In order to populate this attribute, the Printer object uses
  4080.          the value in its "printer-up-time" attribute at the time the Job
  4081.          object is created.
  4082.  
  4083.          4.3.12 time-at-processing (integer)
  4084.  
  4085.          This attribute indicates the point in time at which the Job object
  4086.          began processing.  In order to populate this attribute, the Printer
  4087.          object uses the value in its "printer-up-time" attribute at the time
  4088.          the Job object is moved into the 'processing' state for the first
  4089.          time.
  4090.  
  4091.          4.3.13 time-at-completed (integer)
  4092.  
  4093.          This attribute indicates the point in time at which the Job object
  4094.          completed (or was cancelled or aborted).  In order to populate this
  4095.          attribute, the Printer object uses the value in its "printer-up-time"
  4096.          attribute at the time the Job object is moved into the 'completed' or
  4097.          'canceled' or 'aborted' state.
  4098.  
  4099.          4.3.14 number-of-intervening-jobs (integer(0:2**31 - 1))
  4100.  
  4101.          This attribute indicates the number of jobs that are "ahead" of this
  4102.          job in the relative chronological order of expected time to complete
  4103.          (i.e., the current scheduled order). For efficiency, it is only
  4104.          necessary to calculate this value when an operation is performed that
  4105.          requests this attribute.
  4106.  
  4107.          4.3.15 job-message-from-operator (text)
  4108.  
  4109.          This attribute provides a message from an operator, system
  4110.          administrator or "intelligent" process to indicate to the end user the
  4111.          reasons for modification or other management action taken on a job.
  4112.  
  4113.  
  4114.  
  4115.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 71]
  4116.                                  Expires April 14, 1998
  4117.  
  4118.  
  4119.  
  4120.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  4121.  
  4122.  
  4123.          4.3.16 job-k-octets-processed (integer(0:2**31 - 1))
  4124.  
  4125.          This attribute specifies the number of octets processed in K octets,
  4126.          i.e., in units of 1024 octets.  The value SHALL be rounded up, so that
  4127.          a job between 1 and 1024 octets SHALL be indicated as being 1, 1025 to
  4128.          2048 SHALL be 2, etc.
  4129.  
  4130.          For implementations where multiple copies are produced by the
  4131.          interpreter with only a single pass over the data, the final value
  4132.          SHALL be equal to the value of the "job-k-octets" attribute.  For
  4133.          implementations where multiple copies are produced by the interpreter
  4134.          by processing the data for each copy, the final value SHALL be a
  4135.          multiple of the value of the "job-k-octets" attribute.
  4136.  
  4137.          Note: This attribute and the following two attributes ("job-
  4138.          impressions-completed" and "job-sheets-completed") are intended to be
  4139.          counters. That is, if the "job-state" is 'processing' or 'processing-
  4140.          stopped', this value is intended to contain the amount of the job that
  4141.          has been processed to the time at which the attributes are requested.
  4142.          For any of these three attributes, the Printer may choose to return
  4143.          the value '-2' (which represents "unknown") rather than choose to not
  4144.          support the attribute at all.
  4145.  
  4146.          4.3.17 job-impressions-completed  (integer(0:2**31 - 1))
  4147.  
  4148.          This job attribute specifies the number of impressions completed for
  4149.          the job so far.  For printing devices, the impressions completed
  4150.          includes interpreting, marking, and stacking the output. This
  4151.          attribute is intended to be a counter as in the Job Monitoring MIB.
  4152.  
  4153.          For implementations where multiple copies are produced by the
  4154.          interpreter with only a single pass over the data, the final value
  4155.          SHALL be equal to the value of the "job-impressions" attribute.  For
  4156.          implementations where multiple copies are produced by the interpreter
  4157.          by processing the data for each copy, the final value SHALL be a
  4158.          multiple of the value of the "job-impressions" attribute.
  4159.  
  4160.          4.3.18 job-media-sheets-completed (integer(0:2**31 - 1))
  4161.  
  4162.          This job attribute specifies the media-sheets completed marking and
  4163.          stacking for the entire job so far whether those sheets have been
  4164.          processed on one side or on both. This attribute is intended to be a
  4165.          counter as in the Job Monitoring MIB.
  4166.  
  4167.          4.3.19 attributes-charset (charSet)
  4168.  
  4169.          This attribute is populated using the value in the client supplied
  4170.          "attributes-charset" attribute in the create request.  It identifies
  4171.  
  4172.  
  4173.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 72]
  4174.                                  Expires April 14, 1998
  4175.  
  4176.  
  4177.  
  4178.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  4179.  
  4180.  
  4181.          the charset (coded character set and encoding method) used for any Job
  4182.          attributes with attribute syntax 'text' and 'name' whether supplied by
  4183.          the client and/or returned by the Printer object.  See Section 3.1.3
  4184.          for a complete description of the "attributes-charset" operation
  4185.          attribute.
  4186.  
  4187.          4.3.20 attributes-natural-language (naturalLanguage)
  4188.  
  4189.  
  4190.          4.4 This attribute is populated using the value in the client supplied
  4191.          "attributes-natural-language" attribute in the create request.  It
  4192.          identifies the natural language used for any Job attributes with
  4193.          attribute syntax 'text' and 'name' whether supplied by the client
  4194.          and/or returned by the Printer object.  See Section 3.1.3 for a
  4195.          complete description of the "attributes-natural-language" operation
  4196.          attribute.  See Section 4.1.1 for how an exception natural languages
  4197.          may be supplied explicitly for each 'text' and 'name' attribute value
  4198.          that differs from the value identified by the "job-natural-language"
  4199.          attribute.Printer Description Attributes
  4200.  
  4201.          These attributes form the attribute group called "printer-
  4202.          description".  A Printer object may be realized in either a print
  4203.          server or output device.  Note: How these attributes are set by an
  4204.          Administrator is outside the scope of this specification.  The
  4205.          following table summarizes these attributes, their syntax, and whether
  4206.          or not they are MANDATORY for a Printer object to support.  If they
  4207.          are not MANDATORY, they are OPTIONAL.
  4208.  
  4209.  
  4210.  
  4211.  
  4212.  
  4213.  
  4214.  
  4215.  
  4216.  
  4217.  
  4218.  
  4219.  
  4220.  
  4221.  
  4222.  
  4223.  
  4224.  
  4225.  
  4226.  
  4227.  
  4228.  
  4229.  
  4230.  
  4231.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 73]
  4232.                                  Expires April 14, 1998
  4233.  
  4234.  
  4235.  
  4236.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  4237.  
  4238.  
  4239.          +----------------------------+----------------------+----------------+
  4240.          |      Attribute             |     Syntax           |   MANDATORY?   |
  4241.          +----------------------------+----------------------+----------------+
  4242.          | printer-uri                | uri                  |  MANDATORY     |
  4243.          +----------------------------+----------------------+----------------+
  4244.          | printer-name               | name                 |  MANDATORY     |
  4245.          +----------------------------+----------------------+----------------+
  4246.          | printer-location           | text                 |                |
  4247.          +----------------------------+----------------------+----------------+
  4248.          | printer-info               | text                 |                |
  4249.          +----------------------------+----------------------+----------------+
  4250.          | printer-more-info          | uri                  |                |
  4251.          +----------------------------+----------------------+----------------+
  4252.          | printer-driver-installer   | uri                  |                |
  4253.          +----------------------------+----------------------+----------------+
  4254.          | printer-make-and-model     | text                 |                |
  4255.          +----------------------------+----------------------+----------------+
  4256.          | printer-more-info-         | uri                  |                |
  4257.          | manufacturer               |                      |                |
  4258.          +----------------------------+----------------------+----------------+
  4259.          | printer-state              | type1 enum           |  MANDATORY     |
  4260.          +----------------------------+----------------------+----------------+
  4261.          | printer-state-reasons      | 1setOf type2 keyword |                |
  4262.          +----------------------------+----------------------+----------------+
  4263.          | printer-state-message      | text                 |                |
  4264.          +----------------------------+----------------------+----------------+
  4265.          | operations-supported       | 1setOf operation     |  MANDATORY     |
  4266.          +----------------------------+----------------------+----------------+
  4267.          | printer-charset            | charSet              |  MANDATORY     |
  4268.          +----------------------------+----------------------+----------------+
  4269.          | charsets-supported         | 1setOf charSet       |  MANDATORY     |
  4270.          +----------------------------+----------------------+----------------+
  4271.          | printer-natural-language   | naturalLanguage      |  MANDATORY     |
  4272.          +----------------------------+----------------------+----------------+
  4273.          | natural-languages-supported| 1setOf               |  MANDATORY     |
  4274.          |                            |   naturalLanguage    |                |
  4275.          +----------------------------+----------------------+----------------+
  4276.          | printer-is-accepting-jobs  | boolean              |  MANDATORY     |
  4277.          +----------------------------+----------------------+----------------+
  4278.          | queued-job-count           | integer              |                |
  4279.          +----------------------------+----------------------+----------------+
  4280.          | printer-message-from-      | text                 |                |
  4281.          | operator                   |                      |                |
  4282.          +----------------------------+----------------------+----------------+
  4283.          | color-supported            | boolean              |                |
  4284.          +----------------------------+----------------------+----------------+
  4285.          | pdl-override               | type2 keyword        |  MANDATORY     |
  4286.          +----------------------------+----------------------+----------------+
  4287.  
  4288.  
  4289.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 74]
  4290.                                  Expires April 14, 1998
  4291.  
  4292.  
  4293.  
  4294.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  4295.  
  4296.  
  4297.          | security-mechanisms-       | 1setOf keyword       |                |
  4298.          | supported                  |                      |                |
  4299.          +----------------------------+----------------------+----------------+
  4300.          | printer-up-time            | integer              |  MANDATORY     |
  4301.          +----------------------------+----------------------+----------------+
  4302.          | printer-current-time       | dateTime             |                |
  4303.          +----------------------------+----------------------+----------------+
  4304.          | multiple-operation-time-out| integer              |                |
  4305.          +----------------------------+----------------------+----------------+
  4306.  
  4307.          4.4.1 printer-uri (uri)
  4308.  
  4309.          This attribute contains the URI for the printer.  An administrator
  4310.          determines a printer's URI and sets this attribute to that URI.  This
  4311.          MUST be an HTTP schemed URI, however the precise format of a printer
  4312.          URI is implementation dependent.
  4313.  
  4314.          4.4.2 printer-name (name)
  4315.  
  4316.          This attribute contains the name of the printer. It is a name that is
  4317.          more user friendly than the printer-URI. An administrator determines a
  4318.          printer's name and sets this attribute to that name. This name may be
  4319.          the last part of the printer's URI or it may be unrelated. In non-US-
  4320.          English locales, a name may contain characters that are not allowed in
  4321.          a URI.
  4322.  
  4323.          4.4.3 printer-location (text)
  4324.  
  4325.          This attribute identifies the location of this printer. This could
  4326.          include things like: _in Room 123A, second floor of building XYZ_.
  4327.  
  4328.          4.4.4 printer-info (text)
  4329.  
  4330.          This attribute identifies the descriptive information about this
  4331.          Printer.  This could include things like: "This printer can be used
  4332.          for printing color transparencies for HR presentations", or "Out of
  4333.          courtesy for others, please print only small (1-5 page) jobs at this
  4334.          printer", or even "This printer is going away on July 1, 1997, please
  4335.          find a new printer".
  4336.  
  4337.          4.4.5 printer-more-info (uri)
  4338.  
  4339.          This attribute contains a URI used to obtain more information about
  4340.          this specific printer.  For example, this could be an HTTP type URI
  4341.          referencing an HTML page accessible to a Web Browser.  The information
  4342.          obtained from this URI is intended for end user consumption. Features
  4343.          outside the scope of IPP can be accessed from this URI.  The
  4344.          information is intended to be specific to this printer instance and
  4345.  
  4346.  
  4347.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 75]
  4348.                                  Expires April 14, 1998
  4349.  
  4350.  
  4351.  
  4352.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  4353.  
  4354.  
  4355.          site specific services (e.g. job pricing, services offered, end user
  4356.          assistance). The device manufacturer may initially populate this
  4357.          attribute.
  4358.  
  4359.          4.4.6 printer-driver-installer (uri)
  4360.  
  4361.          This attribute contains a URI to use to locate the driver installer
  4362.          for this printer.   This attribute is intended for consumption by
  4363.          automata. The mechanics of print driver installation is outside the
  4364.          scope of IPP.  The device manufacturer may initially populate this
  4365.          attribute.
  4366.  
  4367.          4.4.7 printer-make-and-model (text)
  4368.  
  4369.          This attribute identifies the make and model of the printer.
  4370.  
  4371.          4.4.8 printer-more-info-manufacturer (uri)
  4372.  
  4373.          This attribute contains a URI used to obtain more information about
  4374.          this type of printer.  The information obtained from this URI is
  4375.          intended for end user consumption.  Features outside the scope of IPP
  4376.          can be accessed from this URI (e.g., latest firmware, upgrades, print
  4377.          drivers, optional features available).  The information is intended to
  4378.          be germane to this printer without regard to site specific
  4379.          modifications or services. The device manufacturer may initially
  4380.          populate this attribute.
  4381.  
  4382.          4.4.9 printer-state (type1 enum)
  4383.  
  4384.          This attribute identifies the current state of the printer.  The
  4385.          "printer-state reasons" attribute augments the "printer-state"
  4386.          attribute to give more detailed information about the Printer in the
  4387.          given printer state.
  4388.  
  4389.          A Printer object need only update this attribute before responding to
  4390.          an operation which requests the attribute; the Printer object NEED NOT
  4391.          update this attribute continually.  A Printer NEED NOT implement all
  4392.          values if they are not applicable to a given implementation.
  4393.  
  4394.          The following standard values are defined:
  4395.  
  4396.            'unknown'(2):  The Printer state is not known, or is indeterminate.
  4397.               A Printer SHALL use this state only if it cannot determine its
  4398.               actual state.
  4399.  
  4400.            'idle'(3):  If a Printer receives a job (whose required resources
  4401.               are ready) while in this state, such a job SHALL transit into the
  4402.               processing state immediately.  If the printer-state-reasons
  4403.  
  4404.  
  4405.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 76]
  4406.                                  Expires April 14, 1998
  4407.  
  4408.  
  4409.  
  4410.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  4411.  
  4412.  
  4413.               attribute contains any reasons, they SHALL be reasons that would
  4414.               not prevent a job from transiting into the processing state
  4415.               immediately, e.g., toner-low. Note: if a Printer controls more
  4416.               than one output device, the above definition implies that a
  4417.               Printer is idle if at least one output device is idle.
  4418.  
  4419.            'processing'(4):  If a Printer receives a job (whose required
  4420.               resources are ready) while in this state, such a job SHALL
  4421.               transit into the pending state immediately. Such a job SHALL
  4422.               transit into the processing state only after jobs ahead of it
  4423.               complete.  If the printer-state-reasons attribute contains any
  4424.               reasons, they SHALL be reasons that do not prevent the current
  4425.               job from printing, e.g. toner-low.  Note: if a Printer controls
  4426.               more than one output device, the above definition implies that a
  4427.               Printer is processing if at least one output device is
  4428.               processing, and none is idle.
  4429.  
  4430.            'stopped'(5):  If a Printer receives a job (whose required
  4431.               resources are ready) while in this state, such a job SHALL
  4432.               transit into the pending state immediately. Such a job SHALL
  4433.               transit into the processing state only after some human fixes the
  4434.               problem that stopped the printer and after jobs ahead of it
  4435.               complete printing.  The "printer-state-reasons" attribute SHALL
  4436.               contain at least one reason, e.g. media-jam, which prevents it
  4437.               from either processing the current job or transiting a pending
  4438.               job to the processing state.
  4439.  
  4440.               Note: if a Printer controls more than one output device, the
  4441.               above definition implies that a Printer is stopped only if all
  4442.               output devices are stopped.  Also, it is tempting to define
  4443.               stopped as when a sufficient number of output devices are stopped
  4444.               and leave it to an implementation to define the sufficient
  4445.               number.  But such a rule complicates the definition of stopped
  4446.               and processing. For example, with this alternate definition of
  4447.               stopped, a job can move from idle to processing without human
  4448.               intervention, even though the Printer is stopped.
  4449.  
  4450.          4.4.10 printer-state-reasons (1setOf type2 keyword)
  4451.  
  4452.          This attribute supplies additional detail about the printer's state.
  4453.  
  4454.          Each MAY have a suffix to indicate its level of severity.  The three
  4455.          levels are: report (least severe), warning, and error (most severe).
  4456.  
  4457.            - '-report':  This suffix indicates that the reason is a "report".
  4458.               An implementation may choose to omit some or all reports. Some
  4459.               reports specify finer granularity about the printer state; others
  4460.  
  4461.  
  4462.  
  4463.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 77]
  4464.                                  Expires April 14, 1998
  4465.  
  4466.  
  4467.  
  4468.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  4469.  
  4470.  
  4471.               serve as a precursor to a warning. A report SHALL contain nothing
  4472.               that could affect the printed output.
  4473.            - '-warning': This suffix indicates that the reason is a "warning".
  4474.               An implementation may choose to omit some or all warnings.
  4475.               Warnings serve as a precursor to an error. A warning SHALL
  4476.               contain nothing that prevents a job from completing, though in
  4477.               some cases the output may be of lower quality.
  4478.            - '-error': This suffix indicates that the reason is an "error".
  4479.               An implementation SHALL include all errors. If this attribute
  4480.               contains one or more errors, printer SHALL be in the stopped
  4481.               state.
  4482.  
  4483.          If the implementation does not add any one of the three suffixes, all
  4484.          parties SHALL assume that the reason is an "error".
  4485.  
  4486.          If a Printer object controls more than one output device, each value
  4487.          of this attribute MAY apply to one or more of the output devices.  An
  4488.          error on one output device that does not stop the Printer object as a
  4489.          whole MAY appear as a warning in the Printer's "printer-state-reasons
  4490.          attribute".  If the "printer-state" for such a Printer has a value of
  4491.          'stopped', then there MUST be an error reason among the values in the
  4492.          "printer-state-reasons" attribute.
  4493.  
  4494.          The following standard values are defined:
  4495.  
  4496.            'other': The printer has detected an error other than one listed in
  4497.               this document.
  4498.            'unknown': The printer is unable to give additional detail about
  4499.               the state of the printer.  This state reason is semantically
  4500.               equivalent to printer-state-reasons without any value.
  4501.            'media-needed': A tray has run out of media.
  4502.            'media-jam': The printer has a media jam.
  4503.            'paused': Someone has paused the Printer. In this state, a Printer
  4504.               SHALL not produce printed output, but it SHALL perform other
  4505.               operations requested by a client. If a Printer had been printing
  4506.               a job when the Printer was paused, the Printer SHALL resume
  4507.               printing that job when the Printer is no longer paused and leave
  4508.               no evidence in the printed output of such a pause.
  4509.            'shutdown': Someone has removed a Printer from service, and it may
  4510.               be powered down or physical removed. In this state, a Printer
  4511.               SHALL not produce printed output, and unless the Printer is
  4512.               realized by a print server that is still active, the Printer
  4513.               SHALL perform no other operations requested by a client,
  4514.               including returning this value. If a Printer had been printing a
  4515.               job when it was shutdown, the Printer need not resume printing
  4516.               that job when the Printer is no longer shutdown. If the Printer
  4517.               resumes printing such a job, it may leave evidence in the printed
  4518.  
  4519.  
  4520.  
  4521.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 78]
  4522.                                  Expires April 14, 1998
  4523.  
  4524.  
  4525.  
  4526.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  4527.  
  4528.  
  4529.               output of such a shutdown, e.g. the part printed before the
  4530.               shutdown may be printed a second time after the shutdown.
  4531.            'connecting-to-device': The server has scheduled a job on the
  4532.               Printer and is in the process of connecting to a shared network
  4533.               output device (and might not be able to actually start printing
  4534.               the job for an arbitrarily long time depending on the usage of
  4535.               the output device by other servers on the network).
  4536.            'timed-out': The server was able to connect to the output device
  4537.               (or is always connected), but was unable to get a response from
  4538.               the output device.
  4539.            'stopping': The printer will be stopping in a while and will change
  4540.               its reason to printer-stopped. This reason is a non-critical,
  4541.               even for a Printer with a single output device. When an output-
  4542.               device ceases accepting jobs, the Printer will have this reason
  4543.               while the output device completes printing.
  4544.            'stopped-partly': When a Printer controls more than one output
  4545.               device, this reason indicates that one or more output devices are
  4546.               stopped. If the reason is a report, fewer than half of the output
  4547.               devices are stopped. If the reason is a warning, fewer than all
  4548.               of the output devices are stopped.
  4549.            'toner-low': The Printer is low on toner.
  4550.            'marker-supply-low': The Printer is low on marker supply (ink,
  4551.               paint, etc.).
  4552.            'spool-area-full': The limit of persistent storage allocated for
  4553.               spooling has been reached.
  4554.            'cover-open': One or more covers on the printer is open.
  4555.            'interlock-open': One or more interlock devices on the printer is
  4556.               unlocked.
  4557.            'door-open': One or more doors on the printer are open.
  4558.            'input-tray-missing': One or more input trays are not in the
  4559.               printer.
  4560.            'media-low': At least one input tray is low on media.
  4561.            'media-empty': At least one input tray is empty.
  4562.            'output-tray-missing': One or more output trays are not in the
  4563.               printer
  4564.            'output-area-almost-full': One or more output area is almost full
  4565.               (e.g. tray, stacker, collator).
  4566.            'output-area-full': One or more output area is full. (e.g. tray,
  4567.               stacker, collator)
  4568.            'marker-supply-low': The Printer is low on at least one marker
  4569.               supply. (e.g. toner, ink, ribbon)
  4570.            'marker-supply-empty: The Printer is out of at least one marker
  4571.               supply. (e.g. toner, ink, ribbon)
  4572.            'marker-waste-almost-full': The Printer marker supply waste
  4573.               receptacle is almost full.
  4574.            'marker-waste-full': The Printer marker supply waste receptacle is
  4575.               full.
  4576.            'fuser-over-temp': The fuser temperature is above normal.
  4577.  
  4578.  
  4579.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 79]
  4580.                                  Expires April 14, 1998
  4581.  
  4582.  
  4583.  
  4584.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  4585.  
  4586.  
  4587.            'fuser-under-temp': The fuser temperature is below normal.
  4588.            'opc-near-eol': The optical photo conductor is near end of life.
  4589.            'opc-life-over': The optical photo conductor is no longer
  4590.               functioning.
  4591.            'developer-low': The Printer is low on developer.
  4592.            'developer-empty: The Printer is out of developer.
  4593.            'interpreter-resource-unavailable': An interpreter resource is
  4594.               unavailable (i.e. font, form)
  4595.  
  4596.  
  4597.          4.4.11 printer-state-message (text)
  4598.  
  4599.          This attribute specifies the additional information about the printer
  4600.          state and printer state reasons in human readable text.  The Printer
  4601.          object SHALL be able to generate this message in any of the natural
  4602.          languages identified by the Printer's "natural-language-supported"
  4603.          attribute (see the "attributes-natural-language" operation attribute
  4604.          specified in Section 3.1.3.1).
  4605.  
  4606.          4.4.12 operations-supported (1setOf operation)
  4607.  
  4608.          This attribute specifies the set of supported operations for this
  4609.          Printer.  The syntax of type of "operation" is the same as "type2
  4610.          enum" except that the range of values is 0x0000 to 0x8FFF.
  4611.  
  4612.          The following standard values are defined:
  4613.  
  4614.            0x0000  reserved, not used
  4615.            0x0001  reserved, not used
  4616.            0x0002  Print-Job
  4617.            0x0003  Print-URI
  4618.            0x0004  Validate-Job
  4619.            0x0005  Create-Job
  4620.            0x0006  Send-Document
  4621.            0x0007  Send-URI
  4622.            0x0008  Cancel-Job
  4623.            0x000A  Get-Jobs
  4624.            0x0009  Get-Attributes
  4625.            0x000A-0x3FFF          reserved for future operations
  4626.            0x4000-0x8FFF          reserved for private extensions
  4627.  
  4628.          This allows for certain vendors to implement private extensions that
  4629.          are guaranteed to not conflict with future registered extensions.
  4630.          However, there is no guarantee that two or more private extensions
  4631.          will not conflict.
  4632.  
  4633.  
  4634.  
  4635.  
  4636.  
  4637.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 80]
  4638.                                  Expires April 14, 1998
  4639.  
  4640.  
  4641.  
  4642.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  4643.  
  4644.  
  4645.          4.4.13 printer-charset (charSet)
  4646.  
  4647.          This MANDATORY attribute identifies the charset that the Printer
  4648.          object has been configured to represent 'text' and 'name' Printer
  4649.          attributes that are set by the operator, system administrator, or
  4650.          manufacturer, i.e., for "printer-name" (name), "printer-location"
  4651.          (text), "printer-info" (text), and "printer-make-and-model" (text).
  4652.          Therefore, the value of the "printer-charset" attribute SHALL also be
  4653.          among the values of the Printer's "charset-supported" attribute.
  4654.  
  4655.          4.4.14 charsets-supported (1setOf charSet)
  4656.  
  4657.          This MANDATORY attribute identifies the set of charsets that the
  4658.          Printer object supports in attributes with attribute syntax 'text' and
  4659.          'name', i.e., that the Printer object SHALL (1) accept in requests,
  4660.          (2) return in responses, and (3) send in notification messages.  At
  4661.          least the value 'utf-8' SHALL be present, since a Printer object SHALL
  4662.          support the UTF-8 [RFC2044] charset.
  4663.  
  4664.          If more charsets than UTF-8 are supported, the Printer object SHALL
  4665.          perform charset conversion between the charsets as described in
  4666.          Section 3.1.3.1.
  4667.  
  4668.          4.4.15 printer-natural-language (naturalLanguage)
  4669.  
  4670.          This MANDATORY attribute identifies the natural language that the
  4671.          Printer object has been configured to represent 'text' and 'name'
  4672.          Printer attributes that are set by the operator, system administrator,
  4673.          or manufacturer, i.e., for "printer-name" (name), "printer-location"
  4674.          (text), "printer-info" (text), and "printer-make-and-model" (text).
  4675.          When returning these Printer attributes, the Printer object MAY return
  4676.          them in the configured natural language specified by this attribute,
  4677.          instead of the natural language requested by the client in the
  4678.          "attributes-natural-language" operation attribute.  See Section
  4679.          3.1.3.1 for the specification of the OPTIONAL multiple natural
  4680.          language support.  Therefore, the value of the "printer-natural-
  4681.          language" attribute SHALL also be among the values of the Printer's
  4682.          "natural-language-supported" attribute.
  4683.  
  4684.          4.4.16 natural-languages-supported (1setOf naturalLanguage)
  4685.  
  4686.          This MANDATORY attribute identifies the natural language(s) that the
  4687.          Printer object supports in attributes with attribute syntax 'text' and
  4688.          'name', i.e., that the Printer object SHALL (1) accept in requests,
  4689.          (2) return in responses, and (3) send in notification messages.  The
  4690.          natural language(s) supported depends on implementation and/or
  4691.          configuration.
  4692.  
  4693.  
  4694.  
  4695.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 81]
  4696.                                  Expires April 14, 1998
  4697.  
  4698.  
  4699.  
  4700.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  4701.  
  4702.  
  4703.          For any of the attributes for which the Printer generates messages,
  4704.          i.e., for the "job-state-message" and "printer-state-message"
  4705.          attributes and Operation Messages (see Section 3.1.4) in operation
  4706.          responses, the Printer object SHALL be able to generate messages in
  4707.          any of its supported natural languages.  See section 3.1.3.1 for the
  4708.          specification of 'text' and 'name' attributes in operation requests
  4709.          and responses.
  4710.  
  4711.          Note: A Printer object that supports multiple natural languages, often
  4712.          has separate catalogs of messages, one for each natural language
  4713.          supported.
  4714.  
  4715.          4.4.17 printer-is-accepting-jobs (boolean)
  4716.  
  4717.          This attribute indicates whether the printer is currently accepting
  4718.          job.  If the value is true, the printer is accepting jobs. If the
  4719.          value is false, the printer is currently rejecting any jobs submitted
  4720.          to it.
  4721.  
  4722.          Note: This value is independent of the printer state and printer-
  4723.          state-reasons because its value does not affect the current job;
  4724.          rather it affects future jobs. This attribute may cause the Printer to
  4725.          reject jobs when the printer-state is idle or it may cause the Printer
  4726.          to accepts jobs when the printer-state is stopped.
  4727.  
  4728.          4.4.18 queued-job-count (integer(0:2**31 - 1))
  4729.  
  4730.          This attribute contains a count of the number of jobs that are either
  4731.          'pending', 'processing', 'pending-held', or 'processing-stopped' and
  4732.          is set by the Printer.
  4733.  
  4734.          4.4.19 printer-message-from-operator (text)
  4735.  
  4736.          This attribute provides a message from an operator, system
  4737.          administrator or "intelligent" process to indicate to the end user
  4738.          information or status of the printer, such as why it is unavailable or
  4739.          when it is expected to be available.
  4740.  
  4741.          4.4.20 color-supported (boolean)
  4742.  
  4743.          This attribute identifies whether the Printer is capable of any type
  4744.          of color printing at all.  All document instructions having to do with
  4745.          color are embedded within the document PDL (none are external IPP
  4746.          attributes).
  4747.  
  4748.  
  4749.  
  4750.  
  4751.  
  4752.  
  4753.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 82]
  4754.                                  Expires April 14, 1998
  4755.  
  4756.  
  4757.  
  4758.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  4759.  
  4760.  
  4761.          4.4.21 reference-uri-schemes-supported (1setOf uriScheme)
  4762.  
  4763.          This attribute specifies which URI schemes are supported for use in
  4764.          the "document-uri" operation attribute of the Print-URI or Send-URI
  4765.          operation.  If a Printer object supports these optional operations, it
  4766.          MUST support URIs of the following type:
  4767.  
  4768.            'http':  The Printer object will perform an HTTP/1.1 GET operation
  4769.            'ftp':  The Printer object will use an FTP 'get' operation.  If the
  4770.               URI does not indicate a name or password in the URI itself, the
  4771.               Printer object will use anonymous FTP generating (if prompted)
  4772.               some password in the form of an Internet mail address.
  4773.  
  4774.          The Printer object OPTIONALLY supports other URI schemes (see section
  4775.          4.1.6).
  4776.  
  4777.          4.4.22 pdl-override (type2 keyword)
  4778.  
  4779.          This attribute expresses the ability for a particular Printer
  4780.          implementation to either attempt to override document data
  4781.          instructions with IPP attributes or not.
  4782.  
  4783.          This MANDATORY attribute takes on the following values:
  4784.  
  4785.            - 'attempted': This value indicates that the Printer attempts to
  4786.               make sure that IPP attribute values take precedence over embedded
  4787.               instructions in the document data, however there is no guarantee.
  4788.            - 'not-attempted': This value indicates that the Printer makes no
  4789.               attempt to ensure that IPP attribute values take precedence over
  4790.               embedded instructions in the print data.
  4791.  
  4792.          Section 15 contains a full description of how this attribute interacts
  4793.          with and affects other IPP attributes, especially the "ipp-attribute-
  4794.          fidelity" attribute.
  4795.  
  4796.          4.4.23 security-mechanisms-supported (1setOf keyword)
  4797.  
  4798.          This attribute indicates the security mechanisms supported.  Standard
  4799.          values are:
  4800.  
  4801.            'tls': Transport Layer Security (TLS)
  4802.            'ssl': Secure Sockets Layer (SSL)
  4803.            'http-digest': HTTP/1.1 Digest Authentication
  4804.            'http-basic': HTTP/1.1 Basic Authentication
  4805.  
  4806.  
  4807.  
  4808.  
  4809.  
  4810.  
  4811.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 83]
  4812.                                  Expires April 14, 1998
  4813.  
  4814.  
  4815.  
  4816.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  4817.  
  4818.  
  4819.          4.4.24 printer-up-time (integer(1:MAX))
  4820.  
  4821.          This attribute is a MANDATORY attribute.  It indicates the amount of
  4822.          time (in seconds) that this instance of this Printer implementation
  4823.          has been up and running.  This value is used to populate the Job
  4824.          attributes "time-of-creation", "time-at-processing", and "time-at-
  4825.          completed".  These time values are all measured in seconds and all
  4826.          have meaning only relative to this attribute, "printer-up-time".  The
  4827.          value is a monotonically increasing value starting from 1 when the
  4828.          Printer object is started-up (initialized, booted, etc.).
  4829.  
  4830.          If the Printer object goes down at some value 'n', and comes back up,
  4831.          the implementation MAY:
  4832.  
  4833.            1. Know how long it has been down, and resume at some value greater
  4834.               than 'n', or
  4835.            2. Restart from 1.
  4836.  
  4837.          In the first case, the Printer SHOULD not tweak any existing related
  4838.          Job attributes ("time-of-creation", "time-at-processing", and "time-
  4839.          at-completed").  In the second case, the Printer object SHOULD be
  4840.          reset to 0.  If a client queries a time-related Job attribute and
  4841.          finds the value to be 0, the client MUST assume that the Job was
  4842.          submitted in some life other than the Printer's current life.
  4843.  
  4844.          4.4.25 printer-current-time (dateTime)
  4845.  
  4846.          This attribute is an OPTIONAL attribute.  It indicates the current
  4847.          absolute wall-clock time.  If an implementation supports this
  4848.          attribute, then a client could calculate the absolute wall-clock time
  4849.          each Job's "time-of-creation", "time-at-processing", and "time-at-
  4850.          completed" attributes by using both "printer-up-time" and this
  4851.          attribute, "printer-current-time".  If an implementation does not
  4852.          support this attribute, a client can only calculate the relative time
  4853.          of certain events based on the MANDATORY "printer-up-time" attribute.
  4854.  
  4855.          4.4.26 multiple-operation-time-out (integer)
  4856.  
  4857.          This attributes identifies how long (in seconds) the Printer object
  4858.          waits for additional Send-Document or Send-URI operations to follow a
  4859.          still-open multi-document Job object.
  4860.  
  4861.  
  4862.          5. Conformance
  4863.  
  4864.          This section describes conformance issues and requirements. This
  4865.          document introduces model entities such as objects, operations,
  4866.  
  4867.  
  4868.  
  4869.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 84]
  4870.                                  Expires April 14, 1998
  4871.  
  4872.  
  4873.  
  4874.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  4875.  
  4876.  
  4877.          attributes, and attribute values.  These conformance sections describe
  4878.          the conformance requirements which apply to these model entities.
  4879.  
  4880.  
  4881.          5.1 Client Conformance Requirements
  4882.  
  4883.          A conforming client SHALL send operations that conform to the protocol
  4884.          defined in _Internet Printing Protocol/1.0: Protocol Specification_
  4885.          [IPP-PRO]. For each attribute included in an operation request, a
  4886.          conforming client SHALL send a value whose type and value syntax
  4887.          conforms to the requirement of this document
  4888.  
  4889.          Otherwise, there are no conformance requirements placed on the user
  4890.          interfaces provided by IPP clients or their applications.  For
  4891.          example, one application might not allow an end user to submit
  4892.          multiple documents per job, while another does.  One application might
  4893.          first query a Printer object in order to supply a graphical user
  4894.          interface (GUI) dialogue box with supported and default values whereas
  4895.          a different implementation might not.  For presentation purposes,
  4896.          truncation of long attribute values is not recommended.  A recommended
  4897.          approach would be for the client implementation to allow the user to
  4898.          scroll through long attribute values.
  4899.  
  4900.          When sending a Get-Attributes or create request, an IPP client NEED
  4901.          NOT supply any OPTIONAL attributes.
  4902.  
  4903.          A client SHALL be able to accept any of the attribute syntaxes defined
  4904.          in Section 4.1, including their full range, that may be returned to it
  4905.          in a response from a Printer object.
  4906.  
  4907.          A query response may contain attributes and values that the client
  4908.          does not expect.  Therefore, a client implementation MUST gracefully
  4909.          handle such responses and not refuse to inter-operate with a
  4910.          conforming Printer that is returning extended registered or private
  4911.          attributes and/or attribute values that conform to Section 6.  Clients
  4912.          may choose to ignore any parameters, attributes, or values that it
  4913.          does not understand.
  4914.  
  4915.  
  4916.          5.2 Printer Object Conformance Requirements
  4917.  
  4918.          This section specifies the conformance requirements for conforming
  4919.          Printer object implementations with respect to objects, operations,
  4920.          and attributes.
  4921.  
  4922.  
  4923.  
  4924.  
  4925.  
  4926.  
  4927.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 85]
  4928.                                  Expires April 14, 1998
  4929.  
  4930.  
  4931.  
  4932.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  4933.  
  4934.  
  4935.          5.2.1 Objects
  4936.  
  4937.          Conforming Printer implementations SHALL implement all of the model
  4938.          objects as defined in this specification in the indicated sections:
  4939.  
  4940.            Section 2.1 Printer Object
  4941.            Section 2.2 Job Object
  4942.  
  4943.          5.2.2 Operations
  4944.  
  4945.          Conforming Printer implementations SHALL implement all of the
  4946.          MANDATORY model operations, including mandatory responses, as defined
  4947.          in this specification in the indicated sections:
  4948.  
  4949.            For a Printer object:
  4950.               Print-Job (section 3.2.1)                    MANDATORY
  4951.               Print-URI (section 3.2.2)                    OPTIONAL
  4952.               Validate-Job (section 3.2.3)            MANDATORY
  4953.               Create-Job (section 3.2.4)              OPTIONAL
  4954.               Get-Attributes (section 3.2.5)               MANDATORY
  4955.               Get-Jobs (section 3.2.6)                MANDATORY
  4956.  
  4957.            For a Job object:
  4958.               Send-Document (section 3.3.1)           OPTIONAL
  4959.               Send-URI (section 3.3.2)                OPTIONAL
  4960.               Cancel-Job (section 3.3.3)                   MANDATORY
  4961.               Get-Attributes (section 3.3.4)                    MANDATORY
  4962.  
  4963.          Conforming Printer implementations SHALL support all operation
  4964.          attributes and all values of such attributes, except for attributes
  4965.          that are collections of attributes. The following section on
  4966.          attributes specifies the support required for attributes.
  4967.  
  4968.          5.2.3 Attributes
  4969.  
  4970.          Conforming Printer implementations SHALL support all of the MANDATORY
  4971.          attributes, as defined in this specification in the indicated
  4972.          sections.
  4973.  
  4974.          If a Printer supports an attribute, it SHALL support only those values
  4975.          specified in this document or through the extension mechanism
  4976.          described in the next section. It MAY support any non-empty subset of
  4977.          these values. That is, it SHALL support at least one of the specified
  4978.          values and at most all of them.
  4979.  
  4980.  
  4981.  
  4982.  
  4983.  
  4984.  
  4985.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 86]
  4986.                                  Expires April 14, 1998
  4987.  
  4988.  
  4989.  
  4990.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  4991.  
  4992.  
  4993.          5.2.4 Printer extensions
  4994.  
  4995.          A conforming Printer may support registered extensions and private
  4996.          extensions, as long as they meet the requirements specified in Section
  4997.          6.
  4998.  
  4999.          A conforming Printer SHALL send responses that conform to the protocol
  5000.          defined in _Internet Printing Protocol/1.0: Protocol Specification_
  5001.          [IPP-PRO]. For each attribute included in an operation response, a
  5002.          conforming printer SHALL send a value whose type and value syntax
  5003.          conforms to the requirement of this document
  5004.  
  5005.          5.2.5 Attribute Syntaxes
  5006.  
  5007.          A Printer SHALL be able to accept any of the attribute syntaxes
  5008.          defined in Section 4.1, including their full range, in any operation
  5009.          in which a client may supply attributes.  Furthermore, a Printer SHALL
  5010.          return attributes to the client in operation responses that conform to
  5011.          the syntax specified in Section 4.1, including their full range if
  5012.          supplied previously by a client.
  5013.  
  5014.  
  5015.          5.3 Security Conformance Requirements
  5016.  
  5017.          All clients and IPP objects SHALL support the two authentication
  5018.          mechanisms for HTTP/1.1 as defined in RFC 2068 [RFC2068] and RFC 2069
  5019.          [RFC2069].
  5020.  
  5021.          Clients and IPP objects that need mutual authentication and/or
  5022.          encryption SHOULD also support a secure connection protocol. For this
  5023.          purpose it is the intention to define standardization of IPP in
  5024.          combination with Transport Layer Security (TLS), when the TLS
  5025.          specifications are agreed and on the IETF standards track.
  5026.  
  5027.          For a detailed discussion of security considerations, see section 8.
  5028.  
  5029.  
  5030.          6. IANA Considerations (registered and private extensions)
  5031.  
  5032.          During the development of this standard, the IPP working group
  5033.          (working with IANA) will register additional keywords and enums while
  5034.          the standard is in the proposed and draft states according to the
  5035.          procedures described in this section.  IANA will handle registration
  5036.          of additional enums after this standard is approved in cooperation
  5037.          with an IANA-appointed registration editor from the IPP working group
  5038.          according to the procedures described in this section.
  5039.  
  5040.  
  5041.  
  5042.  
  5043.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 87]
  5044.                                  Expires April 14, 1998
  5045.  
  5046.  
  5047.  
  5048.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  5049.  
  5050.  
  5051.          6.1 Typed Extensions
  5052.  
  5053.          This document uses prefixes to the "keyword" and "enum" basic syntax
  5054.          type in order to communicate extra information to the reader through
  5055.          its name. This extra information need not be represented in an
  5056.          implementation because it is unimportant to a client or Printer.  The
  5057.          list below describes the prefixes and their meaning.
  5058.  
  5059.            "type1":  The IPP standard must be revised to add a new keyword or
  5060.               a new enum.  No private keywords or enums are allowed.
  5061.  
  5062.            "type2":  Implementers can, at any time, add new keyword or enum
  5063.               values by proposing the specification to the IPP working group
  5064.               for registration (or an IANA-appointed registry advisor after the
  5065.               IPP working group is no longer certified) where they are reviewed
  5066.               for approval.  IANA keeps the registry and assigned the number
  5067.               for enum values
  5068.  
  5069.            "type3":  Implementers can, at any time, add new keyword and enum
  5070.               values by submitting the complete specification directly to IANA,
  5071.               no IPP working group or IANA-appointed registry advisor review is
  5072.               required. IANA keeps the registry and assigned the number for
  5073.               enum values
  5074.  
  5075.            "type4":  Anyone (system administrators, system integrators, site
  5076.               managers, etc.) can, at any time, add new installation-defined
  5077.               values (keywords or new enum values) to a local system. Care
  5078.               SHOULD be taken by the implementers to see that keywords do not
  5079.               conflict with other keywords defined by the standard or as
  5080.               defined by the implementing product. There is no registration or
  5081.               approval procedure for type 4 keywords.
  5082.  
  5083.          By definition, each of the four types above assert some sort of
  5084.          registry or review process in order for extensions to be considered
  5085.          valid.  Each higher level (1, 2, 3, 4) tends to be decreasingly less
  5086.          stringent than the previous level.   Therefore, any typeN value MAY be
  5087.          registered using a process for some typeM where M is less than N,
  5088.          however such registration is NOT REQUIRED.  For example, a type4 value
  5089.          MAY be registered in a type 1 manner (by being included in a future
  5090.          version of an IPP specification) however it is NOT REQUIRED.
  5091.  
  5092.          This specification defines keyword and enum values for all of the
  5093.          above types, including type4 keywords.
  5094.  
  5095.          For private (unregistered) keyword extensions, implementers SHOULD use
  5096.          keywords with a suitable distinguishing prefix, such as "xxx-" where
  5097.          xxx is the (lowercase) fully qualified company name registered with
  5098.          IANA for use in domain names [RFC1035].
  5099.  
  5100.  
  5101.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 88]
  5102.                                  Expires April 14, 1998
  5103.  
  5104.  
  5105.  
  5106.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  5107.  
  5108.  
  5109.          Note: RFC 1035 [RFC1035] indicates that while upper and lower case
  5110.          letters are allowed in domain names, no significance is attached to
  5111.          the case.  That is, two names with the same spelling but different
  5112.          case are to be treated as if identical.  Also, the labels in a domain
  5113.          name must follow the rules for ARPANET host names:  They must start
  5114.          with a letter, end with a letter or digit, and have as interior
  5115.          characters only letters, digits, and hyphen.  Labels must be 63
  5116.          characters or less.  Labels are separated by the "." character.
  5117.  
  5118.          For private (unregistered) enum extension, implementers SHOULD use
  5119.          values in the reserved integer range which is 2**30 to 2**31-1.
  5120.  
  5121.  
  5122.          6.2 Registration of MIME types/sub-types for document-formats
  5123.  
  5124.          The "document-format" attribute's syntax is "mimeType".  This means
  5125.          that valid values are Internet media types.  RFC 2045 [RFC2045]
  5126.          defines the syntax for valid Internet media types.  Also, IANA is the
  5127.          registry for all Internet media types.
  5128.  
  5129.  
  5130.          6.3 Attribute Extensibility
  5131.  
  5132.          Attribute names are considered to be set of type2 keywords.
  5133.          Therefore, new attributes may be registered and have the same status
  5134.          as attributes in this document by following the type2 extension rules.
  5135.  
  5136.  
  5137.          6.4 Attribute Syntax Extensibility
  5138.  
  5139.          Attribute syntaxes are considered to be set of type2 enums.
  5140.          Therefore, new attribute syntaxes may be registered and have the same
  5141.          status as attribute syntaxes in this document by following the type2
  5142.          extension rules.
  5143.  
  5144.  
  5145.          7. Internationalization Considerations
  5146.  
  5147.          Some of the attributes have values that are text strings and names
  5148.          intended for human understanding rather than machine understanding.
  5149.          See the 'text' and 'name' attribute syntaxes in Sections 4.1.1 and
  5150.          4.1.2.
  5151.  
  5152.          In each operation request, the client SHALL identify the charset and
  5153.          natural language of the request which affects each supplied 'text' and
  5154.          'name' attribute value and requests the charset and natural language
  5155.          for attributes returned by the Printer object in operation responses
  5156.          and notifications as described in Section 3.1.3.1. In addition, the
  5157.  
  5158.  
  5159.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 89]
  5160.                                  Expires April 14, 1998
  5161.  
  5162.  
  5163.  
  5164.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  5165.  
  5166.  
  5167.          client MAY separately and individually identify the "exception"
  5168.          natural language of a supplied 'text' or 'name' attribute using the
  5169.          technique described for the 'text' attribute syntax in Section 4.1.1.
  5170.  
  5171.          The Printer object SHALL support the UTF-8 [RFC2044] charset in all
  5172.          'text' and 'name' attributes supported.  If the Printer object
  5173.          supports more than the UTF-8 charset, the Printer object SHALL convert
  5174.          between them in order to return the requested charset to the client
  5175.          according to Section 3.1.3.2.  If the Printer object supports more
  5176.          than one natural language, the Printer object SHOULD return 'text' and
  5177.          'name' values in the natural language requested for those that are
  5178.          generated by the Printer (see Section 3.1.3.1).
  5179.  
  5180.          For Printers that support multiple charsets and/or multiple natural
  5181.          languages in 'text' and 'name' attributes, different jobs may have
  5182.          been submitted in differing charsets and/or natural languages.  All
  5183.          responses SHALL be returned in the charset requested by the client.
  5184.          However, the Get-Jobs operation provides for a mechanism to identify
  5185.          the differing natural languages with each job returned.
  5186.  
  5187.          The Printer object also has a configured charset and natural language
  5188.          attribute that it uses when the requested charset or natural language
  5189.          are not supported.  The client can query the Printer object to
  5190.          determine the list of charsets and natural languages supported by the
  5191.          Printer object and what the Printer object's configured values are.
  5192.          See the "printer-charset", "charset-supported", "printer-natural-
  5193.          language", and "natural-language-supported" Printer description
  5194.          attributes.
  5195.  
  5196.          The 'text' and 'name' attributes specified in this version of this
  5197.          document (additional ones will be registered according to the
  5198.          procedures in Section 6) are:
  5199.  
  5200.  
  5201.  
  5202.            Operation Attributes:
  5203.               job-name (name)
  5204.               document-name (name)
  5205.  
  5206.            Job Attributes:
  5207.               job-name (name)
  5208.               job-originating-user (name)
  5209.               job-state-message (text)
  5210.               job-message-from-operator (text)
  5211.  
  5212.            Printer Attributes:
  5213.               printer-name (name)
  5214.               printer-location (text)
  5215.  
  5216.  
  5217.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 90]
  5218.                                  Expires April 14, 1998
  5219.  
  5220.  
  5221.  
  5222.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  5223.  
  5224.  
  5225.               printer-info (text)
  5226.               printer-make-and-model (text)
  5227.               printer-state-message (text)
  5228.               printer-message-from-operator (text)
  5229.  
  5230.  
  5231.          8. Security Considerations
  5232.  
  5233.          It is required that the IPP be able to operate within a secure
  5234.          environment.  IPP attempts to make use of existing security protocols
  5235.          and services, wherever possible. Examples of such services include the
  5236.          Digest Access Authentication in HTTP 1.1 [RFC2069] and the Transport
  5237.          Layer Security (TLS) services, currently under development in the
  5238.          IETF.
  5239.  
  5240.          It is difficult to anticipate the security risks that might exist in
  5241.          any given IPP environment. For example, if IPP is used within a given
  5242.          corporation over a private network, the risks of exposing document
  5243.          data may be low enough that the corporation will choose not to use
  5244.          encryption on that data.  However, if the connection between the
  5245.          client and the IPP object is over a public network, the client may
  5246.          wish to protect the content of the information during transmission
  5247.          through the network with encryption.
  5248.  
  5249.          Furthermore, the value of the information being printed may vary from
  5250.          one use of the protocol to the next. Printing payroll checks, for
  5251.          example, would have a different value than printing public information
  5252.          from a file.  In addition, there is always the threat of a virus
  5253.          attack.  However, there are no known viruses or potential for viruses
  5254.          that are self-propagated throughout distributed printing environments.
  5255.          Therefore, IPP implementations may choose to implement protection
  5256.          against printer-damaging print jobs.
  5257.  
  5258.          Since the security levels or the specific threats that any given IPP
  5259.          print administrator may be concerned with cannot be anticipated, IPP
  5260.          MUST be capable of operating with different security mechanisms and
  5261.          security policies as required by the individual installation. Security
  5262.          policies might vary from very strong, to very weak, to none at all,
  5263.          and corresponding security mechanisms will be required.
  5264.  
  5265.          The initial security needs of IPP are derived from two primary
  5266.          considerations:
  5267.  
  5268.            - First, the printing environments envisioned for IPP include
  5269.               configurations where the client, the Printer, and the document(s)
  5270.               to be printed may all exist in different security domains. When
  5271.               objects are in different security domains the requirements for
  5272.  
  5273.  
  5274.  
  5275.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 91]
  5276.                                  Expires April 14, 1998
  5277.  
  5278.  
  5279.  
  5280.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  5281.  
  5282.  
  5283.               authentication and message protection are much stronger than when
  5284.               they are in the same domain.
  5285.  
  5286.            - Second, the sensitivity and value of the content being printed
  5287.               will vary. For example, a publicly available document does not
  5288.               require the same level of privacy that a payroll document
  5289.               requires. There are at least two parties that have an interest in
  5290.               the value of the information being printed, the person asking to
  5291.               have the information printed and the person who originated the
  5292.               information. This brings into the picture the need to worry about
  5293.               copyrights and protection of the content.
  5294.  
  5295.          The following sections describe specific security attacks for IPP
  5296.          environments.  Where examples are provided they should be considered
  5297.          illustrative of the environment and not an exhaustive set. Not all of
  5298.          these environments will necessarily be addressed in initial
  5299.          implementations of IPP.
  5300.  
  5301.  
  5302.          8.1 Client and Printer in the Same Security Domain
  5303.  
  5304.          This environment is typical of internal networks where traditional
  5305.          office workers print the output of personal productivity applications
  5306.          on shared work-group printers, or where batch applications print their
  5307.          output on large production printers. Although the identity of the user
  5308.          may be trusted in this environment, a user might want to protect the
  5309.          content of a document against such attacks as eavesdropping, replaying
  5310.          or tampering.
  5311.  
  5312.  
  5313.          8.2 Client and Printer in Different Security Domains
  5314.  
  5315.          Examples of this environment include printing a document created by
  5316.          the client on a publicly available printer, such as at a commercial
  5317.          print shop; or printing a document remotely on a business partner's
  5318.          printer. This latter operation is functionally equivalent to sending
  5319.          the document to the business partner as a facsimile. Printing
  5320.          sensitive information on a Printer in a different security domain
  5321.          requires strong security measures. In this environment authentication
  5322.          of the printer is required as well as protection against unauthorized
  5323.          use of print resources. Since the document crosses security domains,
  5324.          protection against eavesdropping and document tampering are also
  5325.          required. It will also be important in this environment to protect
  5326.          Printers against "spamming" and malicious document content code.
  5327.  
  5328.  
  5329.  
  5330.  
  5331.  
  5332.  
  5333.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 92]
  5334.                                  Expires April 14, 1998
  5335.  
  5336.  
  5337.  
  5338.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  5339.  
  5340.  
  5341.          8.3 Print by Reference
  5342.  
  5343.          When the document is not stored on the client, printing can be done by
  5344.          reference. That is, the print request can contain a reference, or
  5345.          pointer, to the document instead of the actual document itself. If the
  5346.          client physically gets the document before it prints it, then this
  5347.          defaults to one of the previous cases.
  5348.  
  5349.          8.3.1 Unprotected Documents
  5350.  
  5351.          In many cases, documents to be printed are literally available to
  5352.          anyone. Documents, such as this Internet Draft which are stored on
  5353.          anonymous FTP sites, are good examples of this. No security mechanisms
  5354.          are required to protect access to these documents.
  5355.  
  5356.          8.3.2 Protected Documents
  5357.  
  5358.          Clearly, there are cases where the nature of a document requires that
  5359.          access to it be protected by some authentication and/or authorization
  5360.          mechanism, or where the right to print the document must be paid for.
  5361.          This would be the case for sensitive or confidential information, or
  5362.          where documents are copyrighted or sold for profit. Unauthorized
  5363.          access to content is a major concern in this environment. Protection
  5364.          against eavesdropping, document tampering and unauthorized access to
  5365.          the document are also concerns if the content is sensitive.
  5366.  
  5367.  
  5368.          8.4 Common Security Scenarios
  5369.  
  5370.          As discussed earlier, we cannot anticipate the security levels or the
  5371.          specific threats that any given IPP print administrator may be
  5372.          concerned with.  Security policies might vary from very strong, to
  5373.          very weak, to none at all.  In this section we will describe what we
  5374.          believe to be four common usage scenarios.
  5375.  
  5376.            1) No security at all
  5377.            2) Message protection during transmission
  5378.            3) Client authentication and authorization
  5379.            4) Mutual authentication, authorization, and message protection
  5380.  
  5381.  
  5382.          8.4.1 No Security
  5383.  
  5384.          If the server requires no authorization and the client wants no
  5385.          message protection the client can send the print job, i.e., the job
  5386.          content and the job attributes without invoking any security
  5387.          mechanisms. The printer will print the job for the client. Print by
  5388.  
  5389.  
  5390.  
  5391.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 93]
  5392.                                  Expires April 14, 1998
  5393.  
  5394.  
  5395.  
  5396.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  5397.  
  5398.  
  5399.          reference also works well in this environment as long as no security
  5400.          mechanisms are required to access the documents to be printed.
  5401.  
  5402.          8.4.2 Message Protection During Transmission
  5403.  
  5404.          There are two types of security that could be used to provide message
  5405.          protection. These are channel security and object security. In the
  5406.          first case, the channel can be made secure using the Transport Layer
  5407.          Security (TLS) protocol, currently under development in the IETF.  In
  5408.          the case of object security, each object is encrypted and sent over
  5409.          either a secure or insecure channel.  The recipient has the
  5410.          corresponding key to decrypt the object and get the content. Several
  5411.          object security mechanisms are currently under study in the IETF.  IPP
  5412.          neither mandates the use of these object security mechanisms nor does
  5413.          it prohibit the use of them.  IPP will define a recommended mechanism
  5414.          for channel security, which is deemed more suitable to meet the IPP
  5415.          requirements.
  5416.  
  5417.          8.4.3 Client Authentication and Authorization
  5418.  
  5419.          This scenario requires client authentication. The authenticated user
  5420.          ID may be used for authorization purposes, and may be encrypted by the
  5421.          lower security layer.  TLS supports both one sided and mutual
  5422.          authentication.  IPP does not mandate the use of any specific
  5423.          authorization mechanism (see section 3.1.5.1).
  5424.  
  5425.          8.4.4 Mutual Authentication, Authorization and Message Protection
  5426.  
  5427.          This scenario requires mutual authentication and message protection.
  5428.          TLS can be used for this security feature in these configurations.
  5429.  
  5430.  
  5431.          8.5 Recommended Security Mechanisms
  5432.  
  5433.          IPP requires all IPP clients and Printers to support the
  5434.          authentication features in HTP 1.1 and intends to mandate TLS for
  5435.          scenarios requiring channel security, once these specifications have
  5436.          become stabilized.
  5437.  
  5438.          IPP implementations should provide a range of security options to meet
  5439.          the needs of different installations and user populations.  Many of
  5440.          the security services that are enabled at a given site will be done so
  5441.          by a site administrator. The mechanisms used to establish these
  5442.          services and to define user IDs and passwords to the system are
  5443.          implementation defined and outside the scope of IPP.
  5444.  
  5445.          The security protocol used by a particular IPP operation will depend
  5446.          upon the security services implemented on the Printer, the security
  5447.  
  5448.  
  5449.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 94]
  5450.                                  Expires April 14, 1998
  5451.  
  5452.  
  5453.  
  5454.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  5455.  
  5456.  
  5457.          policy established by a site administrator, and the selection made by
  5458.          the client. This requires that the right handshake messages be passed
  5459.          to invoke the selected security  service. These are described in the
  5460.          references for each security mechanism and are normally invoked by the
  5461.          client. The "security-mechanisms-supported" and "printer-more-info"
  5462.          attributes can be queried to help the end user know what to expect in
  5463.          terms of security. These attributes should also appear in the
  5464.          directory entry for each Printer.
  5465.  
  5466.          Note: When utilizing HTTP/1.1 as a transport for IPP [IPP-PRO], the
  5467.          security considerations outlined in HTTP/1.1 apply. When set by an
  5468.          administrator, IPP servers MUST generate a 401 (Unauthorized) response
  5469.          code to request client authentication and IPP clients should correctly
  5470.          respond with the proper Authorization header. Both basic
  5471.          authentication and digest authentication flavors of authentication
  5472.          should be supported. The administrator chooses which type(s) of
  5473.          authentication to accept. Digest authentication is a more secure
  5474.          method and is always preferred to basic authentication.
  5475.  
  5476.          For secure communication (privacy in particular), IPP should be run
  5477.          using a secure communications channel. TLS provides secure
  5478.          communications channels and provides for mutual authentication. The
  5479.          secure communications channel must be initiated prior to running the
  5480.          IPP protocol. There is no mechanism for bootstrapping a secure
  5481.          communication channel from within the IPP protocol itself.
  5482.  
  5483.          It is possible to combine a secure communication channel with either
  5484.          Basic or Digest Authentication.
  5485.  
  5486.          For a Printer object that supports only non-secure access, the Printer
  5487.          object supports only the "printer-uri" attribute.  For a Printer
  5488.          object that supports only secure access, the Printer object supports
  5489.          only the "printer-tls-uri".  For a Printer object that supports both
  5490.          secure and non-secure access, the Printer object supports both the
  5491.          "printer-uri" and the "printer-tls-uri" attributes.
  5492.  
  5493.  
  5494.          9. References
  5495.  
  5496.           [ASCII]
  5497.               Coded Character Set - 7-bit American Standard Code for
  5498.               Information Interchange (ASCII), ANSI X3.4-1986. This standard is
  5499.               the specification of the 'US-ASCII' charset.
  5500.  
  5501.          [CS-POL]
  5502.               H. Alvestrand, "IETF Policy on Character Sets and Languages, work
  5503.               in progress <draft-alvestrand-charset-policy-01.txt>, August 29,
  5504.               1997.
  5505.  
  5506.  
  5507.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 95]
  5508.                                  Expires April 14, 1998
  5509.  
  5510.  
  5511.  
  5512.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  5513.  
  5514.  
  5515.          [HTPP]
  5516.               J. Barnett, K. Carter, R. DeBry,  "Initial Draft - Hypertext
  5517.               Printing Protocol - HTPP/1.0", October 1996,
  5518.               ftp://ftp.pwg.org/pub/pwg/ipp/historic/htpp/ overview.ps.gz
  5519.  
  5520.          [IANA-CS]
  5521.               IANA Registry of Coded Character Sets:  ftp://ftp.isi.edu/in-
  5522.               notes/iana/assignments/character-sets
  5523.  
  5524.          [IANA-CSa]
  5525.               N. Freed, J. Postel:  IANA CharSet Registration Procedures, Work
  5526.               in Progress (draft-freed-charset-reg-02.txt).
  5527.  
  5528.          [IANA-MT]
  5529.               IANA Registry of Media Types:  ftp://ftp.isi.edu/in-
  5530.               notes/iana/assignments/media-types/
  5531.  
  5532.          [IPP-PRO]
  5533.               Herriot, R. (et al), " Internet Printing Protocol/1.0: Protocol
  5534.               Specifications", draft-ipp-pro-03.txt, November, 1997.
  5535.  
  5536.          [IPP-RAT]
  5537.               Zilles, S., "Rationale for the Structure and Model and Protocol
  5538.               for the Internet Printing Protocol", draft-ipp-rat-01.txt,
  5539.               November, 1997.
  5540.  
  5541.          [IPP-REQ]
  5542.               Wright, D., "Requirements for an Internet Printing Protocol",
  5543.               draft-ipp-req-01.txt, November, 1997.
  5544.  
  5545.          [ISO10646-1]
  5546.               ISO/IEC 10646-1:1993, "Information technology -- Universal
  5547.               Multiple-Octet Coded Character Set (UCS) - Part 1: Architecture
  5548.               and Basic Multilingual Plane, JTC1/SC2."
  5549.  
  5550.          [ISO8859-1]
  5551.               ISO/IEC 8859-1:1987, "Information technology -- 8-bit One-Byte
  5552.               Coded Character Set - Part 1: Latin Alphabet Nr 1", 1987,
  5553.               JTC1/SC2.
  5554.  
  5555.          [ISODPA]
  5556.               ISO/IEC 10175 Document Printing Application (DPA), June 1996.
  5557.  
  5558.           [LDPA]
  5559.               T. Hastings,  S. Isaacson,  M. MacKay, C. Manros, D. Taylor, P.
  5560.               Zehler,  "LDPA - Lightweight Document Printing Application",
  5561.               October 1996,
  5562.               ftp://ftp.pwg.org/pub/pwg/ipp/historic/ldpa/ldpa8.pdf.gz
  5563.  
  5564.  
  5565.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 96]
  5566.                                  Expires April 14, 1998
  5567.  
  5568.  
  5569.  
  5570.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  5571.  
  5572.  
  5573.          [P1387.4]
  5574.               Kirk, M. (editor), POSIX System Administration - Part 4: Printing
  5575.               Interfaces, POSIX 1387.4 D8, 1994.
  5576.  
  5577.          [PSIS]    Herriot, R. (editor), X/Open A Printing System
  5578.               Interoperability Specification (PSIS), August 1995.
  5579.  
  5580.          [RFC1035]
  5581.               P. Mockapetris, "DOMAIN NAMES - IMPLEMENTATION AND
  5582.               SPECIFICATION", RFC 1035, November 1987.
  5583.  
  5584.          [RFC1179]
  5585.               McLaughlin, L. III, (editor), "Line Printer Daemon Protocol" RFC
  5586.               1179, August 1990.
  5587.  
  5588.          [RFC1514]
  5589.               ?, "  ", RFC 1514, ?.
  5590.  
  5591.           [RFC1521]
  5592.               Borenstein, N., and Freed, N., "MIME (Multi-purpose Internet Mail
  5593.               Extensions) Part One: Mechanism for Specifying and Describing the
  5594.               Format of Internet Message Bodies", RFC 1521, September, 1993.
  5595.  
  5596.          [RFC1630]
  5597.               T. Berners-Lee, "Universal Resource Identifiers in WWW: A
  5598.               Unifying Syntax for the Expression of Names and Addresses of
  5599.               Objects on the Network as used in the World-Wide Web", RFC 1630,
  5600.               June 1994.
  5601.  
  5602.          [RFC1738]
  5603.               Berners-Lee, T., Masinter, L., McCahill, M. , "Uniform Resource
  5604.               Locators (URL)", RFC 1738, December, 1994.
  5605.  
  5606.          [RFC1759]
  5607.               Smith, R., Wright, F., Hastings, T., Zilles, S., and Gyllenskog,
  5608.               J., "Printer MIB", RFC 1759, March 1995.
  5609.  
  5610.          [RFC1766]
  5611.               H. Alvestrand, " Tags for the Identification of Languages", RFC
  5612.               1766, March 1995.
  5613.  
  5614.          [RFC1808]
  5615.               ?, "  ", RFC 1808, ?.
  5616.  
  5617.          [RFC1825]
  5618.               R. Atkinson, "Security Architecture for the Internet Protocol",
  5619.               RFC 1825, August 1995
  5620.  
  5621.  
  5622.  
  5623.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 97]
  5624.                                  Expires April 14, 1998
  5625.  
  5626.  
  5627.  
  5628.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  5629.  
  5630.  
  5631.          [RFC1903]
  5632.               ?, "  ", RFC 1903, ?.
  5633.  
  5634.           [RFC2044]
  5635.               F. Yergeau, "UTF-8, a transformation format of Unicode and ISO
  5636.               10646", RFC 2044, October 1996.
  5637.  
  5638.          [RFC2068]
  5639.               R. Fielding, J. Gettys, J. Mogul, H. Frystyk, T. Berners-Lee,
  5640.               "Hypertext Transfer Protocol - HTTP/1.1", RFC 2068, January 1997
  5641.  
  5642.          [RFC2069]
  5643.               J. Franks, P. Hallam-Baker, J. Hostetler, P. Leach, A. Luotonen,
  5644.               E. Sink, L. Stewart, "An Extension to HTTP: Digest Access
  5645.               Authentication", RFC-2069, Jan 1997.
  5646.  
  5647.          [RFC2119]
  5648.               S. Bradner, "Key words for use in RFCs to Indicate Requirement
  5649.               Levels", RFC 2119 , March 1997
  5650.  
  5651.          [RFC2130]
  5652.               ?, "  ", RFC 2130, ?.
  5653.  
  5654.           [RFC2045]
  5655.               N. Fried, N. Borenstein, ", Multipurpose Internet Mail Extensions
  5656.               (MIME) Part One: Format of Internet Message Bodies " RFC 2045,
  5657.               November 1996.
  5658.  
  5659.          [RFC2046]
  5660.               Multipurpose Internet Mail Extensions (MIME) Part Two: Media
  5661.               Types. N. Freed & N. Borenstein. November 1996. (Obsoletes
  5662.               RFC1521, RFC1522, RFC1590), RFC 2046.
  5663.  
  5664.          [RFC2048]
  5665.               Multipurpose Internet Mail Extension (MIME) Part Four:
  5666.               Registration Procedures. N. Freed, J. Klensin & J. Postel.
  5667.               November 1996. (Format: TXT=45033 bytes) (Obsoletes RFC1521,
  5668.               RFC1522, RFC1590) (Also BCP0013), RFC 2048.
  5669.  
  5670.          [RFC2184]
  5671.               N. Fried, K. Moore, "MIME Parameter Value and Encoded Word
  5672.               Extensions: Character Sets, Languages, and Continuations", RFC
  5673.               2184, August 1997
  5674.  
  5675.          [SWP]
  5676.               P. Moore, B. Jahromi, S. Butler, "Simple Web Printing SWP/1.0",
  5677.               May 7, 1997, ftp://ftp.pwg.org/pub/pwg/ipp/new_PRO/swp9705.pdf
  5678.  
  5679.  
  5680.  
  5681.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 98]
  5682.                                  Expires April 14, 1998
  5683.  
  5684.  
  5685.  
  5686.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  5687.  
  5688.  
  5689.          10. Copyright Notice
  5690.  
  5691.          Copyright (C) The Internet Society (date). All Rights Reserved.
  5692.  
  5693.          This document and translations of it may be copied and furnished to
  5694.          others, and derivative works that comment on or otherwise explain it
  5695.          or assist in its implementation may be prepared, copied, published and
  5696.          distributed, in whole or in part, without restriction of any kind,
  5697.          provided that the above copyright notice and this paragraph are
  5698.          included on all such copies and derivative works.  However, this
  5699.          document itself may not be modified in any way, such as by removing
  5700.          the copyright notice or references to the Internet Society or other
  5701.          Internet organizations, except as needed for the  purpose of
  5702.          developing Internet standards in which case the procedures for
  5703.          copyrights defined in the Internet Standards process must be followed,
  5704.          or as required to translate it into languages other than English.
  5705.  
  5706.          The limited permissions granted above are perpetual and will not be
  5707.          revoked by the Internet Society or its successors or assigns.
  5708.  
  5709.          This document and the information contained herein is provided on an
  5710.          "AS IS" basis and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING
  5711.          TASK FORCE DISCLAIMS ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING BUT
  5712.          NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION HEREIN
  5713.          WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
  5714.          MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
  5715.  
  5716.  
  5717.  
  5718.  
  5719.  
  5720.  
  5721.          11. Author's Address
  5722.  
  5723.               Scott A. Isaacson (Editor)
  5724.               Novell, Inc.
  5725.               122 E 1700 S
  5726.               Provo, UT   84606
  5727.  
  5728.               Phone: 801-861-7366
  5729.               Fax:   801-861-4025
  5730.               EMail: scott_isaacson@novell.com
  5731.  
  5732.               Tom Hastings
  5733.               Xerox Corporation
  5734.               701 S. Aviation Blvd.
  5735.               El Segundo, CA   90245
  5736.  
  5737.  
  5738.  
  5739.          deBry, Hastings, Herriot, Isaacson, Powell                  [Page 99]
  5740.                                  Expires April 14, 1998
  5741.  
  5742.  
  5743.  
  5744.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  5745.  
  5746.  
  5747.               Phone: 310-333-6413
  5748.               Fax:   310-333-5514
  5749.               EMail: hastings@cp10.es.xerox.com
  5750.  
  5751.               Robert Herriot
  5752.               Sun Microsystems Inc.
  5753.               901 San Antonio.Road, MPK-17
  5754.               Palo Alto, CA 94303
  5755.  
  5756.               Phone: 415-786-8995 (Area code change to 650 in August 1997)
  5757.               Fax:  415-786-7077 (Area code change to 650 in August 1997)
  5758.               Email: robert.herriot@eng.sun.com
  5759.  
  5760.               Roger deBry
  5761.               HUC/003G
  5762.               IBM Corporation
  5763.               P.O. Box 1900
  5764.               Boulder, CO 80301-9191
  5765.  
  5766.               Phone: (303) 924-4080
  5767.               Fax: (303) 924-9889
  5768.               Email: debry@vnet.ibm.com
  5769.  
  5770.               Patrick Powell
  5771.               San Diego State University
  5772.               9475 Chesapeake Dr., Suite D
  5773.               San Diego, CA  95123
  5774.  
  5775.               Phone: (619) 874-6543
  5776.               Fax: (619) 279-8424
  5777.               Email: papowell@sdsu.edu
  5778.  
  5779.               IPP Mailing List:  ipp@pwg.org
  5780.               IPP Mailing List Subscription:  ipp-request@pwg.org
  5781.               IPP Web Page:  http://www.pwg.org/ipp/
  5782.  
  5783.          Other Participants:
  5784.  
  5785.               Chuck Adams - Tektronix
  5786.               Jeff Barnett - IBM
  5787.               Ron Bergman - Dataproducts Corp.
  5788.               Sylvan Butler, HP
  5789.               Keith Carter, IBM Corporation
  5790.               Jeff Copeland - QMS
  5791.               Andy Davidson - Tektronix
  5792.               Mabry Dozier - QMS
  5793.               Lee Farrell - Canon Information Systems
  5794.               Steve Gebert - IBM
  5795.  
  5796.  
  5797.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 100]
  5798.                                  Expires April 14, 1998
  5799.  
  5800.  
  5801.  
  5802.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  5803.  
  5804.  
  5805.               Babek Jahromi, Microsoft
  5806.               David Kellerman - Northlake Software
  5807.               Rick Landau - Digital
  5808.               Harry Lewis - IBM
  5809.               Pete Loya - HP
  5810.               Ray Lutz - Cognisys Mike MacKay, Novell, Inc.
  5811.               Carl-Uno Manros, Xerox, Corp.
  5812.               Jay Martin - Underscore
  5813.               Stan McConnell - Xerox
  5814.               Ira McDonald, High North Inc. Paul Moore, Microsoft
  5815.               Pat Nogay - IBM
  5816.               Bob Pentecost - HP
  5817.               Rob Rhoads - Intel
  5818.               David Roach - Unisys
  5819.               Stuart Rowley, Kyocera
  5820.               Hiroyuki Sato - Canon
  5821.               Bob Setterbo - Adobe
  5822.               Devon Taylor, Novell, Inc.
  5823.               Mike Timperman - Lexmark
  5824.               Randy Turner - Sharp
  5825.               Atsushi Yuki - Kyocera
  5826.               Lloyd Young - Lexmark
  5827.               Bill Wagner - DPI
  5828.               Jim Walker - DAZEL
  5829.               Chris Wellens - Interworking Labs
  5830.               Rob Whittle - Novell
  5831.               Don Wright - Lexmark
  5832.               Peter Zehler, Xerox, Corp.
  5833.               Steve Zilles, Adobe
  5834.  
  5835.  
  5836.  
  5837.  
  5838.  
  5839.  
  5840.  
  5841.  
  5842.  
  5843.  
  5844.  
  5845.  
  5846.  
  5847.  
  5848.  
  5849.  
  5850.  
  5851.  
  5852.  
  5853.  
  5854.  
  5855.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 101]
  5856.                                  Expires April 14, 1998
  5857.  
  5858.  
  5859.  
  5860.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  5861.  
  5862.  
  5863.  
  5864.          12. APPENDIX A: Terminology
  5865.  
  5866.          This specification uses the terminology defined in this section.
  5867.  
  5868.  
  5869.          12.1 Conformance Terminology
  5870.  
  5871.          The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
  5872.          "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and  "OPTIONAL" in this
  5873.          document are to be interpreted as described in RFC 2119 [RFC2119]. The
  5874.          sections below reiterate these definitions and include some additional
  5875.          ones.
  5876.  
  5877.          12.1.1 MUST
  5878.  
  5879.          This word, or the terms "REQUIRED",  "SHALL" or "MANDATORY", means
  5880.          that the definition is an absolute requirement of the specification.
  5881.  
  5882.          12.1.2 MUST NOT
  5883.  
  5884.          This phrase, or the phrase "SHALL NOT", means that the definition is
  5885.          an absolute prohibition of the specification.
  5886.  
  5887.          12.1.3 SHOULD
  5888.  
  5889.          This word, or the adjective "RECOMMENDED", means that there may exist
  5890.          valid reasons in particular circumstances to ignore a particular item,
  5891.          but the full implications must be understood and carefully weighed
  5892.          before choosing a different course.
  5893.  
  5894.          12.1.4 SHOULD NOT
  5895.  
  5896.          This phrase, or the phrase "NOT RECOMMENDED" means that there may
  5897.          exist valid reasons in particular circumstances when the particular
  5898.          behavior is acceptable or even useful, but the full implications
  5899.          should be understood and the case carefully weighed before
  5900.          implementing any behavior described with this label.
  5901.  
  5902.          12.1.5 MAY
  5903.  
  5904.          This word, or the adjective "OPTIONAL", means that an item is truly
  5905.          optional.  One vendor may choose to include the item because a
  5906.          particular marketplace requires it or because the vendor feels that it
  5907.          enhances the product while another vendor may omit the same item.   An
  5908.          implementation which does not include a particular option MUST be
  5909.          prepared to interoperate with another implementation which does
  5910.          include the option, though perhaps with reduced functionality. In the
  5911.  
  5912.  
  5913.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 102]
  5914.                                  Expires April 14, 1998
  5915.  
  5916.  
  5917.  
  5918.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  5919.  
  5920.  
  5921.          same vein an implementation which does include a particular option
  5922.          MUST be prepared to interoperate with another implementation which
  5923.          does not include the option (except, of course, for the feature the
  5924.          option provides.)
  5925.  
  5926.          12.1.6 NEED NOT
  5927.  
  5928.          The verb "NEED NOT" indicates an action that the subject of the
  5929.          sentence does not have to implement in order to claim conformance to
  5930.          the standard.  The verb "NEED NOT" is used instead of "MAY NOT" since
  5931.          "MAY NOT" sounds like a prohibition.
  5932.  
  5933.  
  5934.          12.2 Model Terminology
  5935.  
  5936.          12.2.1 Keyword
  5937.  
  5938.          Keywords are used within this document as identifiers of semantic
  5939.          entities within the abstract model.  Attribute names, some attribute
  5940.          values, attribute syntaxes, and attribute group names are represented
  5941.          as keywords.  In this document, a keyword is a sequence of characters
  5942.          (length of 1 to 255) which consists of the following ASCII characters:
  5943.          lower-case letters ("a" - "z"), digits ("0" - "9"), hyphen ("-"),
  5944.          period ("."), and underscore ("_").  A keyword starts with a lower-
  5945.          case letter.
  5946.  
  5947.          12.2.2 Attributes
  5948.  
  5949.          An attribute is an item of information that is associated with an
  5950.          instance of an IPP object.  An attribute consists of an attribute name
  5951.          and an attribute value(s).  Each attribute has a specific syntax.  All
  5952.          attributes are defined in section 4.
  5953.  
  5954.          Job Template Attributes described in section 4.2. The client
  5955.          optionally supplies Job Template attributes in a create request
  5956.          (operation requests that create Job objects).  The Printer object has
  5957.          associated attributes which define supported and default values for
  5958.          the Printer.
  5959.  
  5960.          12.2.2.1 Attribute Name
  5961.  
  5962.          Each attribute is uniquely identified in this document by its
  5963.          attribute name.  An attribute name is a keyword.  The keyword
  5964.          attribute name is given in the section header describing that
  5965.          attribute.  In running text in this document, attribute names are
  5966.          indicated inside double quotation marks (") where the quotation marks
  5967.          are not part of the keyword itself.
  5968.  
  5969.  
  5970.  
  5971.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 103]
  5972.                                  Expires April 14, 1998
  5973.  
  5974.  
  5975.  
  5976.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  5977.  
  5978.  
  5979.          12.2.2.2 Attribute Group Name
  5980.  
  5981.          Related attributes are grouped into named groups.  The name of the
  5982.          group is a keyword.  The group name may be used in place of naming all
  5983.          the attributes in the group explicitly.  Attribute groups are defined
  5984.          in section 3.
  5985.  
  5986.          12.2.2.3 Attribute Value
  5987.  
  5988.          Each attribute has one or more values.  Attribute values are
  5989.          represented in the syntax type specified for that attribute. In
  5990.          running text in this document, attribute values are indicated inside
  5991.          single quotation marks ('), whether their attribute syntax is keyword,
  5992.          integer, text, etc. where the quotation marks are not part of the
  5993.          value itself.
  5994.  
  5995.          12.2.2.4 Attribute Syntax
  5996.  
  5997.          Each attribute is defined using an explicit syntax type.  In this
  5998.          document, each syntax type is defined as a keyword with specific
  5999.          meaning.  The protocol specification document [IPP-PRO] indicates the
  6000.          actual "on-the-wire" encoding rules for each syntax type. Attribute
  6001.          syntax types are defined in section 4.1.
  6002.  
  6003.          12.2.3 Supports
  6004.  
  6005.          By definition, a Printer object supports an attribute only if that
  6006.          Printer object responds with the corresponding attribute populated
  6007.          with some value(s) in a response to a query for that attribute.  A
  6008.          Printer object supports an attribute value if the value is one of
  6009.          Printer object's "supported values" attributes.  The device behind a
  6010.          Printer object  may exhibit a behavior that corresponds to some IPP
  6011.          attribute, but if the Printer object, when queried for that attribute,
  6012.          doesn't respond with the attribute, then as far as IPP is concerned,
  6013.          that implementation does not support that feature.  If the Printer
  6014.          object supports Job Template attribute "foo" then it supports both a
  6015.          "foo-default" default value attribute and a "foo-supported" supported
  6016.          values attribute.  If the Printer object's "foo-supported" attribute
  6017.          is not populated with some value (even if that value is a legal value
  6018.          for that attribute), then that Printer object does not support that
  6019.          value.
  6020.  
  6021.          A conforming implementation SHALL support all MANDATORY attributes.
  6022.          However, even for MANDATORY attributes, conformance to IPP does not
  6023.          mandate that all implementations support all possible values
  6024.          representing all possible job processing behaviors and features.  For
  6025.          example, if a given instance of a Printer supports only certain
  6026.          document formats, then that Printer responds with the "document-
  6027.  
  6028.  
  6029.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 104]
  6030.                                  Expires April 14, 1998
  6031.  
  6032.  
  6033.  
  6034.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  6035.  
  6036.  
  6037.          format-supported" attribute populated with a set of values, possibly
  6038.          only one, taken from the entire set of possible values defined for
  6039.          that attribute. This limited set of values represents the Printer's
  6040.          set of supported document formats.  Supporting an attribute and some
  6041.          set of values for that attribute enables IPP end users to be aware of
  6042.          and make use of those features associated with that attribute and
  6043.          those values.  If an implementation chooses to not support an
  6044.          attribute or some specific value, then IPP end users would have no
  6045.          ability to make use of that feature within the context of IPP itself.
  6046.          However, due to existing practice and legacy systems which are not IPP
  6047.          aware, there might be some other mechanism outside the scope of IPP to
  6048.          control or request the "unsupported" feature (such as embedded
  6049.          instructions within the document data itself).
  6050.  
  6051.          For example, consider the "finishings-supported" attribute.  If a
  6052.          Printer is not physically capable of stapling, the "finishings-
  6053.          supported" attribute MUST NOT be populated with the value of 'staple'.
  6054.          If a Printer is physically capable of stapling, an implementation MAY
  6055.          choose to support the "finishings-supported" attribute and the value
  6056.          of 'staple'.  Doing so, would enable end users to be aware of and make
  6057.          use of the stapling feature.  Without support for the value 'staple',
  6058.          an IPP end user would have no means within the protocol itself to
  6059.          request that a Job be stapled.  However an existing document data
  6060.          formatter might be able to request that the document be stapled
  6061.          directly within the document data itself.  In this case, the IPP
  6062.          implementation does not "support" stapling, however the end user is
  6063.          still able to have some control over the stapling of the completed
  6064.          job.
  6065.  
  6066.          Even though support for Job Template attributes by a Printer object is
  6067.          OPTIONAL, it is RECOMMENDED that if the device behind a Printer object
  6068.          is capable of realizing any feature or function that corresponds to an
  6069.          IPP attribute and some associated value, then that implementation
  6070.          support that IPP attribute and value.
  6071.  
  6072.          The set of values in any of the supported value attributes is set
  6073.          (populated) by some administrative process or automatic sensing
  6074.          mechanism that is outside the scope of IPP.  For administrative policy
  6075.          and control reasons, an administrator may choose to make only a subset
  6076.          of possible values visible to the end user.  In this case, the real
  6077.          output device behind the IPP Printer abstraction may be capable of a
  6078.          certain feature, however an administrator is specifying that access to
  6079.          that feature not flow back to the end user through the IPP protocol.
  6080.          Also, since a Printer object may represent a logical print device (not
  6081.          just a physical devices) the actual process for supporting a value is
  6082.          undefined and left up to the implementation.  However, if a Printer
  6083.          object supports a value, some manual human action may be needed to
  6084.          realize the semantic action associated with the value, but no end user
  6085.  
  6086.  
  6087.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 105]
  6088.                                  Expires April 14, 1998
  6089.  
  6090.  
  6091.  
  6092.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  6093.  
  6094.  
  6095.          action is required.  For example, if one of the values in the
  6096.          "finishings-supported" attribute is 'staple', the actual process might
  6097.          be an automatic staple action by a physical device controlled by some
  6098.          command sent to the device.  Or, the actual process of stapling might
  6099.          be a manual action by an operator at an operator attended Printer
  6100.          object.  For another example of how supported attributes function,
  6101.          consider an system administrator that desire to control all print jobs
  6102.          so that no cover sheets are printed in order to conserve paper.  To
  6103.          force no job sheets, the system administrator sets the only supported
  6104.          value for the "job-sheets-supported" attribute to 'none'. In this
  6105.          case, if a client requests anything except 'none', the create request
  6106.          is rejected (depending on the value of "ipp-attribute-fidelity" of
  6107.          course).  To force the use of banner pages on all jobs, the
  6108.          administrator does not include the value 'none' in the "job-sheets-
  6109.          supported" attribute.  In this case, if a client requests 'none', the
  6110.          create request is rejected (again depending on the value of "ipp-
  6111.          attribute-fidelity").
  6112.  
  6113.          12.2.4 print-stream page
  6114.  
  6115.          A "print-stream page" is a page according to the definition of pages
  6116.          in the language used to express the document data.
  6117.  
  6118.          12.2.5 imposed page
  6119.  
  6120.          An "imposed page" is a page created by placing N print-stream pages
  6121.          onto a single media page.
  6122.  
  6123.  
  6124.          13. APPENDIX B:  Status Codes
  6125.  
  6126.          This section defines status code keywords that are used to provide
  6127.          semantic information on the results of an operation request.  Each
  6128.          operation response MUST include a status code.  For error type status
  6129.          codes, the response MAY also contain a status message that provides a
  6130.          short textual description of the status. The status code is intended
  6131.          for use by automata, and the status message is intended for the human
  6132.          end user.  Since the status message is an OPTIONAL component of the
  6133.          operation response, an IPP application (i.e. a browser, GUI, print
  6134.          driver or gateway) is NOT REQUIRED to examine or display the status
  6135.          message.
  6136.  
  6137.          The prefix of the status keyword defines the class of response as
  6138.          follows:
  6139.  
  6140.            "informational" - Request received, continuing process
  6141.            "successful" - The action was successfully received, understood,
  6142.               and accepted
  6143.  
  6144.  
  6145.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 106]
  6146.                                  Expires April 14, 1998
  6147.  
  6148.  
  6149.  
  6150.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  6151.  
  6152.  
  6153.            "redirection" - Further action must be taken in order to complete
  6154.               the request
  6155.            "client-error" - The request contains bad syntax or cannot be
  6156.               fulfilled
  6157.            "server-error" - The server failed to fulfill an apparently valid
  6158.               request
  6159.  
  6160.          Since IPP status codes are type2 enums, they are extensible.  IPP
  6161.          applications are NOT REQUIRED to understand the meaning of all
  6162.          registered status codes, though such understanding is obviously
  6163.          desirable.  However, applications SHALL understand the class of any
  6164.          status code, as indicated by the prefix, and treat any unrecognized
  6165.          response as being equivalent to the first status code of that class,
  6166.          with the exception that an unrecognized response shall not be cached.
  6167.          For example, if an unrecognized status code of "client-error-foo-bar"
  6168.          is received by the client, it can safely assume that there was
  6169.          something wrong with its request and treat the response as if it had
  6170.          received a "client-error-bad-request" status code.  In such cases, IPP
  6171.          applications SHOULD present the OPTIONAL message (if present) to the
  6172.          end user since the message is likely to contain human readable
  6173.          information which will help to explain the unusual status.
  6174.  
  6175.  
  6176.          13.1 Status Codes
  6177.  
  6178.          Each status code is described below. Section 13.2 contains a table
  6179.          that indicates which status codes apply to which operations.
  6180.  
  6181.          13.1.1 Informational
  6182.  
  6183.          This class of status code indicates a provisional response and is to
  6184.          be used for informational purposes only.
  6185.  
  6186.          There are no status codes defined in IPP 1.0 for this class of status
  6187.          code.
  6188.  
  6189.          13.1.2 Successful Status Codes
  6190.  
  6191.          This class of status code indicates that the client's request was
  6192.          successfully received, understood, and accepted.
  6193.  
  6194.          13.1.2.1 successful-ok (0x0000)
  6195.  
  6196.          The request has succeeded.
  6197.  
  6198.  
  6199.  
  6200.  
  6201.  
  6202.  
  6203.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 107]
  6204.                                  Expires April 14, 1998
  6205.  
  6206.  
  6207.  
  6208.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  6209.  
  6210.  
  6211.          13.1.2.2 successful-ok-ignored-or-substituted-attributes (0x0001)
  6212.  
  6213.          The request has succeeded, but since ignoring or substituting of
  6214.          values was requested ("ipp-attribute-fidelity" set to 'false' in the
  6215.          create request), some attributes were ignored or unsupported values
  6216.          were substituted with supported values in order to process the job
  6217.          without rejecting it.
  6218.  
  6219.          13.1.3 Redirection Status Codes
  6220.  
  6221.          This class of status code indicates that further action needs to be
  6222.          taken to fulfill the request.
  6223.  
  6224.          There are no status codes defined in IPP 1.0 for this class of status
  6225.          code.
  6226.  
  6227.          13.1.4 Client Error Status Codes
  6228.  
  6229.          This class of status code is intended for cases in which the client
  6230.          seems to have erred.  The server SHOULD return a message containing an
  6231.          explanation of the error situation and whether it is a temporary or
  6232.          permanent condition.
  6233.  
  6234.          13.1.4.1 client-error-bad-request (0x0400)
  6235.  
  6236.          The request could not be understood by the server due to malformed
  6237.          syntax.  The IPP application SHOULD NOT repeat the request without
  6238.          modifications.
  6239.  
  6240.          13.1.4.2 client-error-forbidden (0x0401)
  6241.  
  6242.          The server understood the request, but is refusing to fulfill it.
  6243.          Additional authentication information or authorization credentials
  6244.          will not help and the request SHOULD NOT be repeated.  This status
  6245.          code is commonly used when the server does not wish to reveal exactly
  6246.          why the request has been refused or when no other response is
  6247.          applicable.
  6248.  
  6249.          13.1.4.3 client-error-not-authenticated (0x0402)
  6250.  
  6251.          The request requires user authentication.  The IPP client may repeat
  6252.          the request with suitable authentication information. If the request
  6253.          already included authentication information, then this status code
  6254.          indicates that authorization has been refused for those credentials.
  6255.          If this response contains the same challenge as the prior response,
  6256.          and the user agent has already attempted authentication at least once,
  6257.          then the response message may contain relevant diagnostic information.
  6258.  
  6259.  
  6260.  
  6261.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 108]
  6262.                                  Expires April 14, 1998
  6263.  
  6264.  
  6265.  
  6266.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  6267.  
  6268.  
  6269.          This status codes reveals more information than "client-error-
  6270.          forbidden" and "client-error-not-authenticated".
  6271.  
  6272.          13.1.4.4 client-error-not-authorized (0x0403)
  6273.  
  6274.          The requester is not authorized to perform the request.  Additional
  6275.          authentication information or authorization credentials will not help
  6276.          and the request SHOULD NOT be repeated.  This status code is used when
  6277.          the server wishes to reveal that the authentication information is
  6278.          understandable, however, the requester is explicitly not authorized to
  6279.          perform the request.  This status codes reveals more information than
  6280.          "client-error-forbidden" and "client-error-not-authenticated".
  6281.  
  6282.          13.1.4.5 client-error-not-possible (0x0404)
  6283.  
  6284.          This status code is used when the request is for something that can
  6285.          not happen.  For example, there might be a request to cancel a job
  6286.          that has already been canceled or aborted by the system.  The IPP
  6287.          client SHOULD NOT repeat the request.
  6288.  
  6289.          13.1.4.6 client-error-timeout (0x0405)
  6290.  
  6291.          The client did not produce a request within the time that the server
  6292.          was prepared to wait.  For example, a client issued a Create-Job
  6293.          operation and then, after a long period of time, issued a Send-
  6294.          Document operation and this error status code was returned in response
  6295.          to the Send-Document request.  The server might have been forced to
  6296.          clean up resources that had been held for the waiting additional
  6297.          Documents.  The server was forced to close the Job since the client
  6298.          took too long.  The client SHOULD NOT repeat the request without
  6299.          modifications.
  6300.  
  6301.          13.1.4.7 client-error-not-found (0x0406)
  6302.  
  6303.          The server has not found anything matching the request URI.  No
  6304.          indication is given of whether the condition is temporary or
  6305.          permanent.  For example, a client with an old reference to a Job (a
  6306.          URI) tries to cancel the Job, however in the mean time the Job might
  6307.          have been completed and all record of it at the Printer has been
  6308.          deleted.  This status code, 'client-error-not-found' is returned
  6309.          indicating that the referenced Job can not be found.  This error
  6310.          status code is also used when a client supplies a URI as a reference
  6311.          to the document data in either a Print-URI or Send-URI operation
  6312.          however the document can not be found.
  6313.  
  6314.          In practice, an IPP application should avoid a not found situation by
  6315.          first querying and presenting a list of valid Printer URIs and Job
  6316.          URIs to the end-user.
  6317.  
  6318.  
  6319.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 109]
  6320.                                  Expires April 14, 1998
  6321.  
  6322.  
  6323.  
  6324.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  6325.  
  6326.  
  6327.          13.1.4.8 client-error-gone (0x0407)
  6328.  
  6329.          The requested object is no longer available at the server and no
  6330.          forwarding address is known.  This condition should be considered
  6331.          permanent.  Clients with link editing capabilities should delete
  6332.          references to the request URI after user approval.  If the server does
  6333.          not know or has no facility to determine, whether or not the condition
  6334.          is permanent, the status code "client-error-not-found" should be used
  6335.          instead.
  6336.  
  6337.          This response is primarily intended to assist the task of web
  6338.          maintenance by notifying the recipient that the resource is
  6339.          intentionally unavailable and that the server owners desire that
  6340.          remote links to that resource be removed. It is not necessary to mark
  6341.          all permanently unavailable resources as "gone" or to keep the mark
  6342.          for any length of time -- that is left to the discretion of the server
  6343.          owner.
  6344.  
  6345.          13.1.4.9 client-error-request-entity-too-large (0x0408)
  6346.  
  6347.          The server is refusing to process a request because the request entity
  6348.          is larger than the server is willing or able to process.  An IPP
  6349.          Printer returns this status code when it limits the size of print jobs
  6350.          and it receives a print job that exceeds that limit or when the
  6351.          attributes are so many that their encoding causes the request entity
  6352.          to exceed server capacity.
  6353.  
  6354.          13.1.4.10 client-error-request-URI-too-long (0x0409)
  6355.  
  6356.          The server is refusing to service the request because the request URI
  6357.          is longer than the server is willing to interpret.  This rare
  6358.          condition is only likely to occur when a client has improperly
  6359.          submitted a request with long query information (e.g. an IPP
  6360.          application allows an end-user to enter an invalid URI), when the
  6361.          client has descended into a URI "black hole" of redirection (e.g., a
  6362.          redirected URI prefix that points to a suffix of itself), or when the
  6363.          server is under attack by a client attempting to exploit security
  6364.          holes present in some servers using fixed-length buffers for reading
  6365.          or manipulating the Request-URI.
  6366.  
  6367.          13.1.4.11 client-error-unsupported-document-format (0x040A)
  6368.  
  6369.          The server is refusing to service the request because the document
  6370.          data is in a format, as specified in the "document-format" input
  6371.          attribute, that is not supported by the Printer object.
  6372.  
  6373.  
  6374.  
  6375.  
  6376.  
  6377.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 110]
  6378.                                  Expires April 14, 1998
  6379.  
  6380.  
  6381.  
  6382.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  6383.  
  6384.  
  6385.          13.1.4.12 client-error-attribute-not-supported (0x040B)
  6386.  
  6387.          For a Create-Job, Print-Job or Validate-Job operation, if the IPP
  6388.          Printer does not support one or more attributes or attribute values
  6389.          supplied in the request, the Printer shall return this status.  For
  6390.          example, if the request indicates 'iso-a4' media, but that media type
  6391.          is not supported by the Printer.  Or, if the client supplies an
  6392.          optional attribute and the attribute itself is not even supported by
  6393.          the Printer.  If "ipp-attribute-fidelity" is set to false, the Printer
  6394.          can ignore or substitute values for unsupported attributes and values
  6395.          rather than reject the request and return this status code.
  6396.  
  6397.          For a Get-Jobs operation, if the IPP Printer does not support one of
  6398.          the requested attributes, the Printer shall return this status.
  6399.  
  6400.          In practice, an IPP application should avoid this situation by
  6401.          querying an IPP Printer for its valid attributes and values before
  6402.          performing an operation on the Printer.
  6403.  
  6404.          13.1.4.13 client-error-uri-scheme-not-supported (0x040C)
  6405.  
  6406.          The type of the client supplied URI in a Print-URI or a Send-URI
  6407.          operation is not supported.
  6408.  
  6409.          13.1.4.14 client-error-charset-not-supported (0x040D)
  6410.  
  6411.          For any operation, if the IPP Printer does not support the charset
  6412.          supplied by the client in the "attributes-charset" operation
  6413.          attribute, the Printer SHALL reject the operation and return this
  6414.          status (see Section 3.1.3.1).
  6415.  
  6416.          13.1.4.15 client-error-natural-language-not-supported (0x040E)
  6417.  
  6418.          For any operation, if the IPP Printer does not support the natural
  6419.          language supplied by the client in the "attributes-natural-language"
  6420.          operation attribute and the implementation has chosen to reject the
  6421.          operation, the Printer SHALL return this status (see Section 3.1.3.1).
  6422.  
  6423.          13.1.5 Server Error Status Codes
  6424.  
  6425.          This class of status codes indicates cases in which the server is
  6426.          aware that it has erred or is incapable of performing the request.
  6427.          The server SHOULD include a message containing an explanation of the
  6428.          error situation, and whether it is a temporary or permanent condition.
  6429.  
  6430.  
  6431.  
  6432.  
  6433.  
  6434.  
  6435.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 111]
  6436.                                  Expires April 14, 1998
  6437.  
  6438.  
  6439.  
  6440.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  6441.  
  6442.  
  6443.          13.1.5.1 server-error-internal- error (0x0500)
  6444.  
  6445.          The server encountered an unexpected condition that prevented it from
  6446.          fulfilling the request.  This error status code differs from "server-
  6447.          error-temporary-error" in that it implies a more permanent type of
  6448.          internal error.  It also differs from "server-error-device-error" in
  6449.          that it implies an unexpected condition (unlike a paper-jam or out-of-
  6450.          toner problem which is undesirable but expected).  This error status
  6451.          code indicates that probably some knowledgeable human intervention is
  6452.          required.
  6453.  
  6454.          13.1.5.2 server-error-operation-not-supported (0x0501)
  6455.  
  6456.          The server does not support the functionality required to fulfill the
  6457.          request. This is the appropriate response when the server does not
  6458.          recognize an operation or is not capable of supporting it.
  6459.  
  6460.          13.1.5.3 server-error-service-unavailable (0x0502)
  6461.  
  6462.          The server is currently unable to handle the request due to a
  6463.          temporary overloading or maintenance of the server.  The implication
  6464.          is that this is a temporary condition which will be alleviated after
  6465.          some delay. If known, the length of the delay may be indicated in the
  6466.          message.  If no delay is given, the IPP application should handle the
  6467.          response as it would for a "server-error-temporary-internal-error"
  6468.          response.  If the condition is more permanent, the error status codes
  6469.          "client-error-gone" or "client-error-not-found" could be used.
  6470.  
  6471.          13.1.5.4 server-error-version-not-supported (0x0503)
  6472.  
  6473.          The server does not support, or refuses to support, the IPP protocol
  6474.          version that was used in the request message.  The server is
  6475.          indicating that it is unable or unwilling to complete the request
  6476.          using the same version as supplied in the request other than with this
  6477.          error message. The response should contain a Message describing why
  6478.          that version is not supported and what other versions are supported by
  6479.          that server.
  6480.  
  6481.          A conforming IPP client shall specify the valid version (IPP 1.0)on
  6482.          each request.  A conforming IPP server (IPP 1.0) SHALL NOT return this
  6483.          status code to a conforming IPP 1.0 client.  An IPP server shall
  6484.          return this status code to a non-conforming IPP client.
  6485.  
  6486.          13.1.5.5 server-error-device-error (0x0504)
  6487.  
  6488.          A printer error, such as a paper jam, occurs while the IPP Printer
  6489.          processes a Print or Send operation.  The response contains the true
  6490.          Job Status (the values of the "job-state" and "job-state-reasons"
  6491.  
  6492.  
  6493.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 112]
  6494.                                  Expires April 14, 1998
  6495.  
  6496.  
  6497.  
  6498.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  6499.  
  6500.  
  6501.          attributes).  Additional information can be returned in the optional
  6502.          "job-state-message" attribute value or in the OPTIONAL status message
  6503.          that describes the error in more detail.  This error status code is
  6504.          only returned in situations where the Printer is unable to accept the
  6505.          create request because of such a device error.  For example, if the
  6506.          Printer is unable to spool, and can only accept one job at a time, the
  6507.          reason it might reject a create request is that the printer currently
  6508.          has a paper jam.  In many cases however, where the Printer object can
  6509.          accept the request even though the Printer has some error condition,
  6510.          the 'successful-ok' status code will be returned.  In such a case, the
  6511.          client would look at the returned Job Object Attributes or later query
  6512.          the Printer to determine its state and state reasons.
  6513.  
  6514.          13.1.5.6 server-error-temporary-error (0x0505)
  6515.  
  6516.          A temporary error such as a buffer full write error, a memory overflow
  6517.          (i.e. the document data exceeds the memory of the Printer), or a disk
  6518.          full condition, occurs while the IPP Printer processes an operation.
  6519.          The client MAY try the unmodified request again at some later point in
  6520.          time with an expectation that the temporary internal error condition
  6521.          may have been cleared.
  6522.  
  6523.  
  6524.  
  6525.  
  6526.  
  6527.  
  6528.  
  6529.  
  6530.  
  6531.  
  6532.  
  6533.  
  6534.  
  6535.  
  6536.  
  6537.  
  6538.  
  6539.  
  6540.  
  6541.  
  6542.  
  6543.  
  6544.  
  6545.  
  6546.  
  6547.  
  6548.  
  6549.  
  6550.  
  6551.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 113]
  6552.                                  Expires April 14, 1998
  6553.  
  6554.  
  6555.  
  6556.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  6557.  
  6558.  
  6559.          13.2 Status Codes for IPP Operations
  6560.  
  6561.          PJ = Print-Job, PU = Print-URI, CJ = Create-Job, SD = Send-Document
  6562.          SU = Send-URI, V = Validate-Job, GA = Get-Attributes, GJ = Get-Jobs
  6563.          C = Cancel-Job
  6564.  
  6565.                                                         IPP Operations
  6566.          IPP Status Keyword                       PJ PU CJ SD SU V GA GJ C
  6567.          ------------------                       -- -- -- -- -- - -- -- -
  6568.          successful-OK                            x  x  x  x  x  x x  x x
  6569.          successful-ok-ignored-or-substituted-    x  x  x  x  x  x
  6570.               attributes
  6571.          client-error-bad-request                 x  x  x  x  x  x x  x x
  6572.          client-error-not-authenticated           x  x  x  x  x  x x  x x
  6573.          client-error-not-authorized              x  x  x  x  x  x x  x x
  6574.          client-error-forbidden                   x  x  x  x  x  x x  x x
  6575.          client-error-not-possible                x  x  x  x  x  x x  x x
  6576.          client-error-not-found                   x  x  x  x  x  x x  x x
  6577.          client-error-timeout                     x  x  x  x  x  x x  x x
  6578.          client-error-gone                        x  x  x  x  x  x x  x x
  6579.          client-error-request-entity-too-large    x  X  X  X  X  X X  X X
  6580.          client-error-request-URI-too-long        x  x  x  x  x  x x  x x
  6581.          client-error-unsupported-document-format x  x     x  x
  6582.          client-error-attribute-value-not-        x  x  x        x
  6583.               supported
  6584.          server-error-internal-error              x  x  x  x  x  x x  x x
  6585.          server-error-service-unavailable         x  x  x  x  x  x x  x x
  6586.          server-error-timeout                     x  x  x  x  x  x x  x x
  6587.          server-error-HTTP-version-not-supported  x  x  x  x  x  x x  x x
  6588.          server-error-IPP-version-not-supported   x  x  x  x  x  x x  x x
  6589.          server-error-device-error                x  x  x  x  x
  6590.          server-error-temporary-error             x  x  x  x  x
  6591.  
  6592.  
  6593.          14. APPENDIX C:  "media" keyword values
  6594.  
  6595.          Standard keyword values are taken from several sources.
  6596.  
  6597.          Standard values are defined (taken from DPA[ISODPA] and the Printer
  6598.          MIB[RFC1759]):
  6599.  
  6600.            'default': The default medium for the output device
  6601.            'iso-a4-white': Specifies the ISO A4 white medium
  6602.            'iso-a4-colored': Specifies the ISO A4 colored medium
  6603.            'iso-a4-transparent' Specifies the ISO A4 transparent medium
  6604.            'iso-a3-white': Specifies the ISO A3 white medium
  6605.            'iso-a3-colored': Specifies the ISO A3 colored medium
  6606.            'iso-a5-white': Specifies the ISO A5 white medium
  6607.  
  6608.  
  6609.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 114]
  6610.                                  Expires April 14, 1998
  6611.  
  6612.  
  6613.  
  6614.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  6615.  
  6616.  
  6617.            'iso-a5-colored': Specifies the ISO A5 colored medium
  6618.            'iso-b4-white': Specifies the ISO B4 white medium
  6619.            'iso-b4-colored': Specifies the ISO B4 colored medium
  6620.            'iso-b5-white': Specifies the ISO B5 white medium
  6621.            'iso-b5-colored': Specifies the ISO B5 colored medium
  6622.            'jis-b4-white': Specifies the JIS B4 white medium
  6623.            'jis-b4-colored': Specifies the JIS B4 colored medium
  6624.            'jis-b5-white': Specifies the JIS B5 white medium
  6625.            'jis-b5-colored': Specifies the JIS B5 colored medium
  6626.  
  6627.  
  6628.          The following standard values are defined for North American media:
  6629.  
  6630.            'na-letter-white': Specifies the North American letter white medium
  6631.            'na-letter-colored': Specifies the North American letter colored
  6632.               medium
  6633.            'na-letter-transparent': Specifies the North American letter
  6634.               transparent medium
  6635.            'na-legal-white': Specifies the North American legal white medium
  6636.            'na-legal-colored': Specifies the North American legal colored
  6637.               medium
  6638.  
  6639.  
  6640.          The following standard values are defined for envelopes:
  6641.  
  6642.            'iso-b4-envelope': Specifies the ISO B4 envelope medium
  6643.            'iso-b5-envelope': Specifies the ISO B5 envelope medium
  6644.            'iso-c3-envelope': Specifies the ISO C3 envelope medium
  6645.            'iso-c4-envelope': Specifies the ISO C4 envelope medium
  6646.            'iso-c5-envelope': Specifies the ISO C5 envelope medium
  6647.            'iso-c6-envelope': Specifies the ISO C6 envelope medium
  6648.            'iso-designated-long-envelope': Specifies the ISO Designated Long
  6649.               envelope medium
  6650.            'na-10x13-envelope': Specifies the North American 10x13 envelope
  6651.               medium
  6652.            'na-9x12-envelope': Specifies the North American 9x12 envelope
  6653.               medium
  6654.            'monarch-envelope': Specifies the Monarch envelope
  6655.            'na-number-10-envelope': Specifies the North American number 10
  6656.               business envelope medium
  6657.            'na-7x9-envelope': Specifies the North American 7x9 inch envelope
  6658.            'na-9x11-envelope': Specifies the North American 9x11 inch envelope
  6659.            'na-10x14-envelope': Specifies the North American 10x14 inch
  6660.               envelope
  6661.            'na-number-9-envelope': Specifies the North American number 9
  6662.               business envelope
  6663.            'na-6x9-envelope': Specifies the North American 6x9 inch envelope
  6664.  
  6665.  
  6666.  
  6667.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 115]
  6668.                                  Expires April 14, 1998
  6669.  
  6670.  
  6671.  
  6672.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  6673.  
  6674.  
  6675.            'na-10x15-envelope': Specifies the North American 10x15 inch
  6676.               envelope
  6677.  
  6678.  
  6679.          The following standard values are defined for the less commonly used
  6680.          media (white-only):
  6681.  
  6682.            'executive-white': Specifies the white executive medium
  6683.            'folio-white': Specifies the folio white medium
  6684.            'invoice-white': Specifies the white invoice medium
  6685.            'ledger-white': Specifies the white ledger medium
  6686.            'quarto-white': Specified the white quarto medium
  6687.            'iso-a0-white': Specifies the ISO A0 white medium
  6688.            'iso-a1-white': Specifies the ISO A1 white medium
  6689.            'iso-a2-white': Specifies the ISO A2 white medium
  6690.            'iso-a6-white': Specifies the ISO A6 white medium
  6691.            'iso-a7-white': Specifies the ISO A7 white medium
  6692.            'iso-a8-white': Specifies the ISO A8 white medium
  6693.            'iso-a9-white': Specifies the ISO A9 white medium
  6694.            'iso-10-white': Specifies the ISO A10 white medium
  6695.            'iso-b0-white': Specifies the ISO B0 white medium
  6696.            'iso-b1-white': Specifies the ISO B1 white medium
  6697.            'iso-b2-white': Specifies the ISO B2 white medium
  6698.            'iso-b3-white': Specifies the ISO B3 white medium
  6699.            'iso-b6-white': Specifies the ISO B6 white medium
  6700.            'iso-b7-white': Specifies the ISO B7 white medium
  6701.            'iso-b8-white': Specifies the ISO B8 white medium
  6702.            'iso-b9-white': Specifies the ISO B9 white medium
  6703.            'iso-b10-white': Specifies the ISO B10 white medium
  6704.            'jis-b0-white': Specifies the JIS B0 white medium
  6705.            'jis-b1-white': Specifies the JIS B1 white medium
  6706.            'jis-b2-white': Specifies the JIS B2 white medium
  6707.            'jis-b3-white': Specifies the JIS B3 white medium
  6708.            'jis-b6-white': Specifies the JIS B6 white medium
  6709.            'jis-b7-white': Specifies the JIS B7 white medium
  6710.            'jis-b8-white': Specifies the JIS B8 white medium
  6711.            'jis-b9-white': Specifies the JIS B9 white medium
  6712.            'jis-b10-white': Specifies the JIS B10 white medium
  6713.  
  6714.  
  6715.          The following standard values are defined for engineering media:
  6716.  
  6717.            'a': Specifies the engineering A size medium
  6718.            'b': Specifies the engineering B size medium
  6719.            'c': Specifies the engineering C size medium
  6720.            'd': Specifies the engineering D size medium
  6721.            'e': Specifies the engineering E size medium
  6722.  
  6723.  
  6724.  
  6725.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 116]
  6726.                                  Expires April 14, 1998
  6727.  
  6728.  
  6729.  
  6730.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  6731.  
  6732.  
  6733.          The following standard values are defined for input-trays (from ISO
  6734.          DPA and the Printer MIB):
  6735.  
  6736.            'top': The top input tray in the printer.
  6737.            'middle': The middle input tray in the printer.
  6738.            'bottom': The bottom input tray in the printer.
  6739.            'envelope': The envelope input tray in the printer.
  6740.            'manual': The manual feed input tray in the printer.
  6741.            'large-capacity': The large capacity input tray in the printer.
  6742.            'main': The main input tray
  6743.            'side': The side input tray
  6744.  
  6745.  
  6746.          The following standard values are defined for media sizes (from ISO
  6747.          DPA):
  6748.  
  6749.            'iso-a0': Specifies the ISO A0 size: 841 mm by 1189 mm as defined
  6750.               in ISO 216
  6751.            'iso-a1': Specifies the ISO A1 size: 594 mm by 841 mm as defined in
  6752.               ISO 216
  6753.            'iso-a2': Specifies the ISO A2 size: 420 mm by 594 mm as defined in
  6754.               ISO 216
  6755.            'iso-a3': Specifies the ISO A3 size: 297 mm by 420 mm as defined in
  6756.               ISO 216
  6757.            'iso-a4': Specifies the ISO A4 size: 210 mm by 297 mm as defined in
  6758.               ISO 216
  6759.            'iso-a5': Specifies the ISO A5 size: 148 mm by 210 mm as defined in
  6760.               ISO 216
  6761.            'iso-a6': Specifies the ISO A6 size: 105 mm by 148 mm as defined in
  6762.               ISO 216
  6763.            'iso-a7': Specifies the ISO A7 size: 74 mm by 105 mm as defined in
  6764.               ISO 216
  6765.            'iso-a8': Specifies the ISO A8 size: 52 mm by 74 mm as defined in
  6766.               ISO 216
  6767.            'iso-a9': Specifies the ISO A9 size: 37 mm by 52 mm as defined in
  6768.               ISO 216
  6769.            'iso-a10': Specifies the ISO A10 size: 26 mm by 37 mm as defined in
  6770.               ISO 216
  6771.            'iso-b0': Specifies the ISO B0 size: 1000 mm by 1414 mm as defined
  6772.               in ISO 216
  6773.            'iso-b1': Specifies the ISO B1 size: 707 mm by 1000 mm as defined
  6774.               in ISO 216
  6775.            'iso-b2': Specifies the ISO B2 size: 500 mm by 707 mm as defined in
  6776.               ISO 216
  6777.            'iso-b3': Specifies the ISO B3 size: 353 mm by 500 mm as defined in
  6778.               ISO 216
  6779.            'iso-b4': Specifies the ISO B4 size: 250 mm by 353 mm as defined in
  6780.               ISO 216
  6781.  
  6782.  
  6783.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 117]
  6784.                                  Expires April 14, 1998
  6785.  
  6786.  
  6787.  
  6788.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  6789.  
  6790.  
  6791.            'iso-b5': Specifies the ISO B5 size: 176 mm by 250 mm as defined in
  6792.               ISO 216
  6793.            'iso-b6': Specifies the ISO B6 size: 125 mm by 176 mm as defined in
  6794.               ISO 216
  6795.            'iso-b7': Specifies the ISO B7 size: 88 mm by 125 mm as defined in
  6796.               ISO 216
  6797.            'iso-b8': Specifies the ISO B8 size: 62 mm by 88 mm as defined in
  6798.               ISO 216
  6799.            'iso-b9': Specifies the ISO B9 size: 44 mm by 62 mm as defined in
  6800.               ISO 216
  6801.            'iso-b10': Specifies the ISO B10 size: 31 mm by 44 mm as defined in
  6802.               ISO 216
  6803.            'na-letter': Specifies the North American letter size: 8.5 inches
  6804.               by 11 inches
  6805.            'na-legal': Specifies the North American legal size: 8.5 inches by
  6806.               14 inches
  6807.            'executive': Specifies the executive size (7.25 X 10.5 in)
  6808.            'folio': Specifies the folio size (8.5 X 13 in)
  6809.            'invoice': Specifies the invoice size (5.5 X 8.5 in)
  6810.            'ledger': Specifies the ledger size (11 X 17 in)
  6811.            'quarto': Specifies the quarto size (8.5 X 10.83 in)
  6812.            'iso-c3': Specifies the ISO C3 size: 324 mm by 458 mm as defined in
  6813.               ISO 269
  6814.            'iso-c4': Specifies the ISO C4 size: 229 mm by 324 mm as defined in
  6815.               ISO 269
  6816.            'iso-c5': Specifies the ISO C5 size: 162 mm by 229 mm as defined in
  6817.               ISO 269
  6818.            'iso-c6': Specifies the ISO C6 size: 114 mm by 162 mm as defined in
  6819.               ISO 269
  6820.            'iso-designated-long': Specifies the ISO Designated Long size: 110
  6821.               mm by 220 mm as defined in ISO 269
  6822.            'na-10x13-envelope': Specifies the North American 10x13 size: 10
  6823.               inches by 13 inches
  6824.            'na-9x12-envelope': Specifies the North American 9x12 size: 9
  6825.               inches by 12 inches
  6826.            'na-number-10-envelope': Specifies the North American number 10
  6827.               business envelope size: 4.125 inches by 9.5 inches
  6828.            'na-7x9-envelope': Specifies the North American 7x9 inch envelope
  6829.               size
  6830.            'na-9x11-envelope': Specifies the North American 9x11 inch envelope
  6831.               size
  6832.            'na-10x14-envelope': Specifies the North American 10x14 inch
  6833.               envelope size
  6834.            'na-number-9-envelope': Specifies the North American number 9
  6835.               business envelope size
  6836.            'na-6x9-envelope': Specifies the North American 6x9 envelope size
  6837.            'na-10x15-envelope': Specifies the North American 10x15 envelope
  6838.               size
  6839.  
  6840.  
  6841.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 118]
  6842.                                  Expires April 14, 1998
  6843.  
  6844.  
  6845.  
  6846.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  6847.  
  6848.  
  6849.            'monarch-envelope': Specifies the Monarch envelope size (3.87 x 7.5
  6850.               in)
  6851.            'jis-b0': Specifies the JIS B0 size: 1030mm x 1456mm
  6852.            'jis-b1': Specifies the JIS B1 size: 728mm x 1030mm
  6853.            'jis-b2': Specifies the JIS B2 size: 515mm x 728mm
  6854.            'jis-b3': Specifies the JIS B3 size: 364mm x 515mm
  6855.            'jis-b4': Specifies the JIS B4 size: 257mm x 364mm
  6856.            'jis-b5': Specifies the JIS B5 size: 182mm x 257mm
  6857.            'jis-b6': Specifies the JIS B6 size: 128mm x 182mm
  6858.            'jis-b7': Specifies the JIS B7 size: 91mm x 128mm
  6859.            'jis-b8': Specifies the JIS B8 size: 64mm x 91mm
  6860.            'jis-b9': Specifies the JIS B9 size: 45mm x 64mm
  6861.            'jis-b10': Specifies the JIS B10 size: 32mm x 45mm
  6862.  
  6863.          15. APPENDIX D: Processing IPP Attributes
  6864.  
  6865.          When submitting a print job to a Printer object, the IPP model allows
  6866.          a client to supply operation and Job Template attributes along with
  6867.          the document data.  These Job Template attributes in the create
  6868.          request affect the rendering, production and finishing of the
  6869.          documents in the job.  Similar types of instructions may also be
  6870.          contained in the document to be printed, that is, embedded within the
  6871.          print data itself.  In addition, the Printer has a set of attributes
  6872.          that describe what rendering and finishing options which are supported
  6873.          by that Printer.  This model, which allows for flexibility and power,
  6874.          also introduces the potential that at job submission time, these
  6875.          client-supplied attributes may conflict with either:
  6876.  
  6877.            - what the implementation is capable of realizing (i.e., what the
  6878.               Printer supports), as well as
  6879.            - the instructions embedded within the print data itself.
  6880.  
  6881.          The following sections describe how these two types of conflicts are
  6882.          handled in the IPP model.
  6883.  
  6884.  
  6885.          15.1 Fidelity
  6886.  
  6887.          If there is a conflict between what the client requests and what a
  6888.          Printer supports, the client may request one of two possible conflict
  6889.          handling mechanisms:
  6890.  
  6891.            1) either reject the job since the job can not be processed exactly
  6892.               as specified, or
  6893.            2) allow the Printer to make any changes necessary to proceed with
  6894.               processing the Job the best it can.
  6895.  
  6896.  
  6897.  
  6898.  
  6899.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 119]
  6900.                                  Expires April 14, 1998
  6901.  
  6902.  
  6903.  
  6904.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  6905.  
  6906.  
  6907.          In the first case the client is indicating to the Printer: "Print the
  6908.          job exactly as specified with no exceptions, and if that can't be
  6909.          done, don't even bother printing the job at all." In the second case,
  6910.          the client is indicating to the Printer: "It is more important to make
  6911.          sure the job is printed rather than be processed exactly as specified;
  6912.          just make sure the job is printed even if client supplied attributes
  6913.          need to be changed or ignored."
  6914.  
  6915.          The IPP model accounts for this situation by introducing an "ipp-
  6916.          attribute-fidelity" attribute.
  6917.  
  6918.          In a create request, "ipp-attribute-fidelity" is a boolean attribute
  6919.          that is OPTIONALLY supplied by the client.  The value 'true' indicates
  6920.          that total fidelity to client supplied attributes and values is
  6921.          required.  The client is requesting that the Job be printed exactly as
  6922.          specified, and if that is not possible then the job must be rejected
  6923.          rather than processed incorrectly.  The value 'false' indicates that a
  6924.          reasonable attempt to print the Job is acceptable.  If a Printer does
  6925.          not support some of the client supplied Job Template attributes or
  6926.          values, the Printer may ignore them or substitute any supported value
  6927.          for unsupported values.  The Printer may choose to substitute the
  6928.          default value associated with that attribute, or use some other
  6929.          supported value that is similar to the unsupported requested value.
  6930.          For example, if a client supplies a "media" value of 'na-letter', the
  6931.          Printer may choose to substitute 'iso-a4' rather than a default value
  6932.          of 'envelope'.  Since this is an OPTIONAL attribute, if the client
  6933.          does not supply a value, the Printer assumes a value of 'false'.
  6934.  
  6935.          Each Printer implementation MUST support both types of "fidelity"
  6936.          printing (that is whether the client supplies a value of 'true' or
  6937.          'false').  This is possible across all types of implementations, since
  6938.          there is a broad range of acceptable actions when substituting or
  6939.          ignoring unsupported attributes and values.  Also, even if the client
  6940.          supplies a value of 'false', a Printer might still reject the Job for
  6941.          any reason including an unsupported attributes and/or values.  In the
  6942.          other case, where the client requests a value of 'true', it is
  6943.          expected that the Printer support this type of printing since the
  6944.          Printer is already indicating functional support corresponding to all
  6945.          advertised supported attributes and values.
  6946.  
  6947.          Since a client can always query a Printer to find out exactly what is
  6948.          and is not supported, "ipp-attribute-fidelity" set to 'false' is
  6949.          useful when:
  6950.  
  6951.            1) The End-User uses a command line interface to request attributes
  6952.               that might not be supported.
  6953.  
  6954.  
  6955.  
  6956.  
  6957.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 120]
  6958.                                  Expires April 14, 1998
  6959.  
  6960.  
  6961.  
  6962.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  6963.  
  6964.  
  6965.            2) In a GUI context, if the End User expects the job might be moved
  6966.               to another printer and prefers a sub-optimal result to nothing at
  6967.               all.
  6968.            3) The End User just wants something reasonable in lieu of nothing
  6969.               at all.
  6970.  
  6971.  
  6972.          15.2 Page Description Language (PDL) Override
  6973.  
  6974.          If there is a conflict between the value of an IPP Job Template
  6975.          attribute and a corresponding instruction in the document data, the
  6976.          value of the IPP attribute SHOULD take precedence over the document
  6977.          instruction.  Consider the case where a previously formatted file of
  6978.          document data is sent to an IPP Printer.  In this case, if the client
  6979.          supplies any attributes at job submission time, the client desires
  6980.          that those attributes override the embedded instructions.  Consider
  6981.          the case were a previously formatted document has embedded in it
  6982.          commands to load 'iso-a4' media.  However, the document is passed to
  6983.          an end user that only has access to a printer with 'na-letter' media
  6984.          loaded.  That end user most likely wants to submit that document to an
  6985.          that IPP Printer with the "media" Job Template attribute set to 'na-
  6986.          letter'.  The job submission attribute should take precedence over the
  6987.          embedded PDL instruction.  However, until companies that supply
  6988.          document data interpreters allow a way for external IPP attributes to
  6989.          take precedence over embedded job production instructions, a Printer
  6990.          might not be able to support the semantics that IPP attributes
  6991.          override the embedded instructions.
  6992.  
  6993.          The IPP model accounts for this situation by introducing a "pdl-
  6994.          override-supported" attribute.
  6995.  
  6996.          This MANDATORY attribute takes on the following values:
  6997.  
  6998.            - 'attempted': This value indicates that the Printer attempts to
  6999.               make sure that IPP attribute values take precedence over embedded
  7000.               instructions in the document data, however there is no guarantee.
  7001.            - 'not-attempted': This value indicates that the Printer makes not
  7002.               attempt to ensure that IPP attribute values take precedence over
  7003.               embedded instructions in the document data.
  7004.  
  7005.          At job processing time, an implementation that supports the value of
  7006.          'attempted' might try to do one of several different actions:
  7007.  
  7008.            1) generate an output device specific command sequence to realize
  7009.               the feature represented by the IPP attribute value
  7010.            2) parse the document data itself and replace the conflicting
  7011.               embedded instruction with a new embedded instruction that matches
  7012.               the intent of the IPP attribute value
  7013.  
  7014.  
  7015.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 121]
  7016.                                  Expires April 14, 1998
  7017.  
  7018.  
  7019.  
  7020.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  7021.  
  7022.  
  7023.            3) indicate to the Printer that external supplied attributes take
  7024.               precedence over embedded instructions and then pass the external
  7025.               IPP attribute values to the document data interpreter
  7026.            4) anything else that allows for the semantics that IPP attributes
  7027.               override embedded document data instructions.
  7028.  
  7029.          Since 'attempted' does not offer any type of guarantee, even though a
  7030.          given implementation might not do a very "good" job of attempting to
  7031.          ensure that IPP attributes take a higher precedence over instructions
  7032.          embedded in the document data, it would still be a conforming
  7033.          implementation.
  7034.  
  7035.          Note:  The "ipp-attribute-fidelity" attribute applies to the Printer's
  7036.          ability to either accept or reject other unsupported attributes.  In
  7037.          other words, if "ipp-attribute-fidelity" is set to 'true', a Job is
  7038.          accepted if and only if the client supplied attributes and values are
  7039.          supported by the Printer.  Whether these attributes actually affect
  7040.          the processing of the Job depends on the ability of the Printer to
  7041.          override the instructions embedded in the document data with the
  7042.          semantics of the IPP attributes.  If the document data attributes can
  7043.          be overridden ("pdl-override-supported" set to 'attempted'), the
  7044.          Printer makes an attempt to use the IPP attributes when processing the
  7045.          Job. If the document data attributes can not be overridden ("pdl-
  7046.          override-supported" set to 'not-attempted'), the Printer makes no
  7047.          attempt to use the IPP attributes when processing the Job, and hence,
  7048.          the IPP attributes may fail to affect the Job processing and output in
  7049.          any manner whatsoever.
  7050.  
  7051.  
  7052.          15.3 Suggested Operation Processing Algorithm
  7053.  
  7054.          When a Printer receives a create request, the Printer either accepts
  7055.          or rejects the request. The Printer accepts the create request and
  7056.          creates a Job object if it is able to accept all Job Template and
  7057.          Document attributes in the request.  The Printer rejects the request
  7058.          and does not create a Job object if the Printer rejects any Job
  7059.          Template or Document attribute in the request.  In order to determine
  7060.          whether or not to accept or reject the request, the Printer SHOULD use
  7061.          the following algorithm:
  7062.  
  7063.            1. The implementation checks to see if the operation is supported.
  7064.               If not, the Printer rejects the request and sets the appropriate
  7065.               status code in the response.
  7066.  
  7067.            2. The implementation checks to see if the requested major version
  7068.               number is supported. If not, the Printer rejects the request and
  7069.               sets the appropriate status code in the response.  Differences in
  7070.               the minor version number requested versus what is supported is OK
  7071.  
  7072.  
  7073.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 122]
  7074.                                  Expires April 14, 1998
  7075.  
  7076.  
  7077.  
  7078.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  7079.  
  7080.  
  7081.               if  a.) the requested version number has the same Major version
  7082.               number and the minor version number is higher than supported by
  7083.               the Printer object, and b.) any attributes that are not known to
  7084.               the recipient of the operation can be ignored (i.e., if the "ipp-
  7085.               attribute-fidelity" attribute has the value 'false'.)
  7086.  
  7087.            3. The implementation checks to see if the client supplied an "ipp-
  7088.               attribute-fidelity" attribute.  If the attribute is missing (not
  7089.               supplied by the client), the Printer assumes that the value is
  7090.               'false'.
  7091.  
  7092.            4.  The Printer loops through all other attributes, checking to see
  7093.               if the requested values are supported (e.g., the value of "foo"
  7094.               in the request is one of the values in the Printer's "foo-
  7095.               supported" attribute).  If the attribute or its value is
  7096.               unsupported, the Printer flags it as unsupported.
  7097.  
  7098.            5. Once all attributes have been checked individually, the Printer
  7099.               checks for any inconsistent values among all the supported
  7100.               values.  For example a Printer might be able to staple and to
  7101.               print on transparencies, however due to physical stapling
  7102.               limitations, the Printer might not be able to staple
  7103.               transparencies.  Any inconsistent values are flagged as
  7104.               unsupported.
  7105.  
  7106.            6.  Once all attributes have been checked and validated, if "ipp-
  7107.               attribute-fidelity" is set to true and there are any attributes
  7108.               flagged as unsupported, the Printer rejects the request and
  7109.               returns all unsupported attributes and values in the response and
  7110.               sets the appropriate status code.
  7111.  
  7112.            7. If "ipp-attribute-fidelity" is set to 'false' (or it was not
  7113.               supplied by the client) and there are any attributes that are
  7114.               flagged as unsupported, the Printer, chooses to either ignore the
  7115.               unsupported attributes or change the requested value to some
  7116.               supported value.  If, for some reason, it is not possible for the
  7117.               implementation to ignore or substitute values and is unable to
  7118.               "just print the job", the Printer is still able to reject the
  7119.               request and return all unsupported attributes and values in the
  7120.               response.  In doing so, the Printer sets the appropriate status
  7121.               code.
  7122.  
  7123.            8a. If the requested operation is the Validate-Job operation and a
  7124.               "document-uri" attribute is supplied in the request, then the
  7125.               "document-uri" is validated as specified in section 3.2.3,
  7126.               Validate-Job Operation. If the Printer is able to accept the
  7127.               request and the validation of any "document-uri" succeeded, then
  7128.               the Printer object returns the status code "successful-ok".
  7129.  
  7130.  
  7131.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 123]
  7132.                                  Expires April 14, 1998
  7133.  
  7134.  
  7135.  
  7136.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  7137.  
  7138.  
  7139.               Otherwise, it returns a set of unsupported attributes and/or the
  7140.               appropriate error status code. In either case the processing of
  7141.               the operation is completed and no objects are created.
  7142.  
  7143.            8b. The operation is a create request. If the Printer is able to
  7144.               accept the create request (either as is or  the "ipp-attribute-
  7145.               fidelity" attribute is set to 'false' and some of the requested
  7146.               attributes can be ignored or have their values substituted), then
  7147.               the Printer creates a new Job object . The Job object is
  7148.               populated with those Job Template attributes from the create
  7149.               request that the Printer object can honor. If the "ipp-attribute-
  7150.               fidelity" attribute is set to 'true', the Job Template attributes
  7151.               associated with the new Job object are necessarily all the Job
  7152.               Template attributes in the accepted create request.  If the "ipp-
  7153.               attribute-fidelity" attribute is set to 'false', the Job Template
  7154.               attributes associated with the new Job object are all the client
  7155.               supplied Job Template attributes that are not ignored and/or have
  7156.               no value substitution. Thus, some of the requested Job Template
  7157.               attributes may not appear in the Job object because the IPP
  7158.               processor was not able to honor those attributes. The attributes
  7159.               that were honored are persistently stored with the Job object for
  7160.               that Job.  A Get-Attributes operation on that Job object will
  7161.               return only those attributes that a persistently stored with the
  7162.               Job object.
  7163.  
  7164.            Note: All Job Template attributes that are persistently stored with
  7165.               the Job object are intended to be "override values"; that is,
  7166.               they that take precedence over whatever other embedded
  7167.               instructions might be in the document data itself.  However, it
  7168.               is not possible for all implementations to realize the semantics
  7169.               of "override". End users may query the Printer's "pdl-override"
  7170.               attribute to determine if the Printer either attempts or does not
  7171.               attempt to override document data instructions with IPP
  7172.               attributes.
  7173.  
  7174.            9. There are some cases, where a Printer supports a Job Template
  7175.               attribute and has an associated default value set for that
  7176.               attribute. In the case where a client does not supply the
  7177.               corresponding attribute, the Printer does not use its default
  7178.               values to populate Job attributes when creating the new Job
  7179.               object; only Job Template attributes actually in the create
  7180.               request are used to populate the Job object. The Printer's
  7181.               default values are only used at Job processing time if no other
  7182.               IPP attribute or instruction embedded in the document data is
  7183.               present.
  7184.  
  7185.            Note: If the default values associated with un-requested Job
  7186.               Template attributes were used to populate the Job object, then
  7187.  
  7188.  
  7189.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 124]
  7190.                                  Expires April 14, 1998
  7191.  
  7192.  
  7193.  
  7194.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  7195.  
  7196.  
  7197.               these values would become "override values" rather than defaults.
  7198.               If the Printer supports the 'attempted' value of the "pdl-
  7199.               override" attribute, then these override values could replace
  7200.               values specified within the document data. This is not the intent
  7201.               of the default value mechanism. A default value for an attrbute
  7202.               SHALL be used only if the create request did not specify that
  7203.               attribute (or it was ignored when allowed by "ipp-attribute-
  7204.               fidelity" being 'false') and no value was provided within the
  7205.               content of the document data.
  7206.  
  7207.            10. If the client does not supply a value for some Job Template
  7208.               attribute, and the Printer does not support that attribute, as
  7209.               far as IPP is concerned, the result of processing that Job (with
  7210.               respect to the missing attribute) is undefined.
  7211.  
  7212.            11. Once the Job object has been created, the Printer responds back
  7213.               to the client with a successful response including Job status
  7214.               attributes that indicate the initial state of the Job ('pending',
  7215.               'processing', etc.).  The Printer uses its own configuration and
  7216.               implementation specific algorithms for scheduling the Job in the
  7217.               correct processing order.  Once the Printer begins processing the
  7218.               Job, the Printer changes the Job's state to 'processing'. If the
  7219.               Printer supports PDL override (the "pdl-override" attribute set
  7220.               to 'attempted'), the implementation does its best to see that IPP
  7221.               attributes take precedence over embedded instructions in the
  7222.               document data.
  7223.  
  7224.            12. The implementation of the Printer object continues to process
  7225.               the Job until it can move the Job into the 'completed' state.  If
  7226.               an Cancel-Job operation is received, the implementation
  7227.               eventually moves the Job into the 'cancelled' state.  If the
  7228.               system encounters errors during processing that do not allow it
  7229.               to progress the Job into a completed state, the implementation
  7230.               halts all processing, cleans up any resources, and moves the Job
  7231.               into the 'aborted' state.
  7232.  
  7233.            13. Once the Job moves to the 'completed', 'aborted', or 'canceled'
  7234.               state, it is an implementation decision as to when to destroy the
  7235.               Job object and release all associated resources.  Once the Job
  7236.               has been destroyed, the Printer would return either the "not-
  7237.               found" or "gone" status codes for operations directed at that
  7238.               Job.
  7239.  
  7240.          Some Printer implementations may support "ipp-attribute-fidelity" set
  7241.          to 'true' and "pdl-override" set to 'attempted' and yet still not be
  7242.          able to realize exactly what the client specifies in the create
  7243.          request.  This is due to legacy decisions and assumptions that have
  7244.          been made about the role of job instructions embedded within the
  7245.  
  7246.  
  7247.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 125]
  7248.                                  Expires April 14, 1998
  7249.  
  7250.  
  7251.  
  7252.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  7253.  
  7254.  
  7255.          document data and external job instructions that accompany the
  7256.          document data and how to handle conflicts between such instructions.
  7257.          The inability to be 100% precise about how a given implementation will
  7258.          behave is also compounded by the fact that the two special attributes,
  7259.          "ipp-attribute-fidelity" and "pdl-override", apply to the whole job
  7260.          rather than specific values for each attribute. For example, some
  7261.          implementations may be able to override almost all Job Template
  7262.          attributes except for "number-up".
  7263.  
  7264.  
  7265.          15.4 Using Job Template Attributes During Document Processing.
  7266.  
  7267.          The Printer object uses some of the Job object's Job Template
  7268.          attributes during the processing of the document data associated with
  7269.          that job.  These include, but are not limited to, "orientation",
  7270.          "number-up", "sides", "media", and "copies".  The processing of each
  7271.          document in a Job Object SHALL follow the algorithm below. This
  7272.          algorithm is intended only to identify when and how attributes are to
  7273.          be used in processing document data and any algorithm that
  7274.          accomplishes the same effect can be used to implement this
  7275.          specification.
  7276.  
  7277.            1. Using the "document-format" attribute or some form of format
  7278.               detection algorithm (if the value of "document-format" is not
  7279.               specific enough), determine whether or not the document data has
  7280.               already been formatted for printing. If the document data has
  7281.               been formatted, then goto step 2. Otherwise, the document data
  7282.               SHALL be formatted. The formatting algorithm is implementation
  7283.               defined and is not specified by this specification. The
  7284.               formatting of the document data uses the "orientation" attribute
  7285.               to determine how the formatted print data is place on a print-
  7286.               stream page, see section 4.2.15 for the details.
  7287.  
  7288.            2. The document data is in the form of a print-stream in a known
  7289.               media type. The "page-range" attribute is used to select, as
  7290.               specified in section 4.2.14, a sub-sequence of the pages in the
  7291.               print-stream that are to be processed and images.
  7292.  
  7293.            3. The input to this step is sequence of print-stream pages. This
  7294.               step is controlled by the "number-up" attribute. If value of
  7295.               "number-up" is N, then during the processing of the print-stream
  7296.               pages, each N print-stream pages are positioned, as specified in
  7297.               section 4.2.8, to create a single imposed page. If a given
  7298.               Document Object does not have N more print-stream pages, then the
  7299.               completion of the imposed page is controlled by the "multiple-
  7300.               document-handling" attribute as described in section 4.2.6; when
  7301.               the value of this attribute is 'separate-documents-collated-
  7302.  
  7303.  
  7304.  
  7305.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 126]
  7306.                                  Expires April 14, 1998
  7307.  
  7308.  
  7309.  
  7310.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  7311.  
  7312.  
  7313.               copies', the document data from subsequent Document Objects is
  7314.               used to complete the imposed page.
  7315.  
  7316.            The size(scaling), position(translation) and rotation of the print-
  7317.               stream pages on the imposed page is implementation defined. Note
  7318.               that during this process the print-stream pages may be rendered
  7319.               to a form suitable for placing on the imposed page; this
  7320.               rendering is controlled by the values of the "printer-resolution"
  7321.               and "print-quality" attributes as described in sections 4.2.10
  7322.               and 4.2.11. In the case N=1, the imposed pages are nearly the
  7323.               same as the print-stream pages; the differences would only be in
  7324.               the size, position and rotation of the print-stream page and/or
  7325.               any decoration, such as a frame to the page, that is added by the
  7326.               implementation.
  7327.  
  7328.            4. The collection of imposed pages is placed, in sequence, onto
  7329.               sides of the print media. This placement is controlled by the
  7330.               "sides" attribute and the orientation of the page, as described
  7331.               in section 4.2.9. The orientation of the page is defined by the
  7332.               orientation of the imposed pages; for example, if "number-up"
  7333.               equals 2, then, typically, two portrait print-stream pages become
  7334.               one landscape imposed page. Note that the placement of imposed
  7335.               pages onto media instances is also controlled by the "multiple-
  7336.               document-handling" attribute as described in section 4.2.6.
  7337.  
  7338.            5. The "copies" and "multiple-document-handling" attributes are
  7339.               used to determine how many copies of each media instance are
  7340.               created and in what order. See sections 4.2.6 and 4.2.13 for the
  7341.               details.
  7342.  
  7343.            6. When the correct number of copies are created, the media
  7344.               instances are finished according to the values of the
  7345.               "finishings" attribute as described in 4.2.12. Note that
  7346.               sometimes finishing operations may require manual intervention to
  7347.               perform the finishing operations on the copies, especially
  7348.               uncollated copies. This specification allows any or all of the
  7349.               processing steps to be performed automatically or manually at the
  7350.               discretion of the Printer object.
  7351.  
  7352.          16. APPENDIX E: Generic Directory Schema
  7353.  
  7354.          This section defines a generic schema for an entry in a directory
  7355.          service.  A directory service is a means by which service users can
  7356.          locate service providers.  In IPP environments, this means that IPP
  7357.          Printers can be registered (either automatically or with the help of
  7358.          an administrator) as entries of type printer in the directory.  IPP
  7359.          clients can search or browse for entries of type printer.  Clients use
  7360.          the directory service to find entries based on naming, organizational
  7361.  
  7362.  
  7363.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 127]
  7364.                                  Expires April 14, 1998
  7365.  
  7366.  
  7367.  
  7368.          INTERNET-DRAFT       IPP/1.0: Model and Semantics    October 14, 1997
  7369.  
  7370.  
  7371.          contexts, or filtered searches on attribute values of entries.  For
  7372.          example, a client can find all printers in the "Local Department"
  7373.          context. Authentication and authorization are also often part of a
  7374.          directory service so that an administrator can place limits on end
  7375.          users so that they are only allowed to find entries to which they have
  7376.          certain access rights.  IPP itself does not require any specific
  7377.          directory service protocol or provider.
  7378.  
  7379.          The generic schema is a subset of IPP Printer attributes (section
  7380.          4.4).  These attributes are identified as either MANDATORY or OPTIONAL
  7381.          for the entry itself.  This conformance labeling is NOT the same
  7382.          conformance labeling applied to the attributes of IPP Printers
  7383.          themselves.  MANDATORY attributes MUST be associated with each
  7384.          directory entry.  OPTIONAL attributes SHOULD be associated with the
  7385.          directory entry (if known or supported).  In addition, all directory
  7386.          entry attributes SHOULD reflect the current attribute values for the
  7387.          corresponding Printer object.
  7388.  
  7389.          In order to bridge between the directory service protocol and IPP, one
  7390.          of the MANDATORY attributes is the "printer-uri" attribute.  The IPP
  7391.          client addresses an IPP Printer using its URI and so the directory
  7392.          entry's "printer-uri" becomes the link between the directory entry and
  7393.          the corresponding IPP Printer.
  7394.  
  7395.          The following attributes define the generic schema for directory
  7396.          entries of type printer:
  7397.  
  7398.            printer-uri                      MANDATORY      Section 4.4.1
  7399.            printer-tls-uri                  OPTIONAL       Section
  7400.            printer-name                     OPTIONAL       Section 4.4.2
  7401.            printer-location                 OPTIONAL       Section 4.4.3
  7402.            printer-info                     OPTIONAL       Section 4.4.4
  7403.            printer-more-info                OPTIONAL       Section 4.4.5
  7404.            printer-make-and-model           OPTIONAL       Section 4.4.7
  7405.            security-mechanisms-supported    MANDATORY      Section 4.4.23
  7406.            media-supported                  OPTIONAL       Section 4.2.5
  7407.            number-up-supported              OPTIONAL       Section 4.2.6
  7408.            sides-supported                  OPTIONAL       Section 4.2.7
  7409.            printer-resolution-supported     OPTIONAL       Section 4.2.8
  7410.            print-quality-supported          OPTIONAL       Section 4.2.9
  7411.            color-supported                  OPTIONAL       Section 4.4.20
  7412.            finishings-supported             OPTIONAL       Section 4.2.10
  7413.            document-formats-supported       OPTAIONL       Section 4.2.14
  7414.  
  7415.  
  7416.  
  7417.  
  7418.  
  7419.  
  7420.  
  7421.          deBry, Hastings, Herriot, Isaacson, Powell                 [Page 128]
  7422.                                  Expires April 14, 1998
  7423.  
  7424.