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-01.txt < prev    next >
Text File  |  1997-06-05  |  198KB  |  4,792 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.        INTERNET-DRAFT
  8.                                                                        R. deBry
  9.                                                                 IBM Corporation
  10.                                                                     T. Hastings
  11.                                                               Xerox Corporation
  12.                                                                      R. Herriot
  13.                                                                Sun Microsystems
  14.                                                                     S. Isaacson
  15.                                                                    Novell, Inc.
  16.                                                                       P. Powell
  17.                                                      San Diego State University
  18.                                                                    June 3, 1997
  19.  
  20.                  Internet Printing Protocol/1.0: Model and Semantics
  21.                              draft-ietf-ipp-model-01.txt
  22.  
  23.        Status of this Memo
  24.  
  25.        This document is an Internet-Draft.  Internet-Drafts are working
  26.        documents of the Internet Engineering Task Force (IETF), its areas, and
  27.        its working groups.  Note that other groups may also distribute working
  28.        documents as Internet-Drafts.
  29.  
  30.        Internet-Drafts are draft documents valid for a maximum of six months
  31.        and may be updated, replaced, or obsoleted by other documents at any
  32.        time.  It is inappropriate to use Internet-Drafts as reference material
  33.        or to cite them other than as "work in progress".
  34.  
  35.        To learn the current status of any Internet-Draft, please check the
  36.        "1id-abstracts.txt" listing contained in the Internet-Drafts Shadow
  37.        Directories on ftp.is.co.za (Africa), nic.nordu.net (Europe),
  38.        munnari.oz.au (Pacific Rim), ds.internic.net (US East Coast), or
  39.        ftp.isi.edu (US West Coast).
  40.  
  41.        Abstract
  42.  
  43.        This document is one of a set of documents, which together describe all
  44.        aspects of a new Internet Printing Protocol (IPP).  IPP is an
  45.        application level protocol that can be used for distributed printing
  46.        using Internet tools and technology.  The protocol is heavily influenced
  47.        by the printing model introduced in the Document Printing Application
  48.        (ISO/IEC 10175 DPA) standard.  Although DPA specifies both end user and
  49.        administrative features, IPP version 1.0 is focused only on end user
  50.        functionality.
  51.  
  52.        The full set of IPP documents includes:
  53.  
  54.  
  55.  
  56.  
  57.        deBry, Hastings, Herriot, Isaacson, Powell                     [Page 1]
  58.                         June 3, 1997, Expires December 3, 1997
  59.  
  60.  
  61.  
  62.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  63.  
  64.  
  65.          Internet Printing Protocol: Requirements
  66.          Internet Printing Protocol/1.0: Model and Semantics
  67.          Internet Printing Protocol/1.0: Security
  68.          Internet Printing Protocol/1.0: Protocol Specification
  69.          Internet Printing Protocol/1.0: Directory Schema
  70.  
  71.        The requirements document takes a broad look at distributed printing
  72.        functionality, and it enumerates real-life scenarios that help to
  73.        clarify the features that need to be included in a printing protocol for
  74.        the Internet.  It identifies requirements for three types of users: end
  75.        users, operators, and administrators.  The requirements document calls
  76.        out a subset of end user requirements that must be satisfied in the
  77.        first version of IPP.  Operator and administrator requirements are out
  78.        of scope for v1.0. The model and semantics document describes a
  79.        simplified model with abstract objects, their attributes, and their
  80.        operations. The model introduces a Printer object and a Job object.  The
  81.        Job object supports multiple documents per job.  The security document
  82.        covers potential threats and proposed counters to those threats.  The
  83.        protocol specification is formal document which incorporates the ideas
  84.        in all the other documents into a concrete mapping using clearly defined
  85.        data representations and transport protocol mappings that real
  86.        implementers can use to develop interoperable client and server side
  87.        components. Finally, the directory schema document shows a generic
  88.        schema for directory service entries that represent instances of IPP
  89.        Printers.
  90.  
  91.        This document is the "Internet Printing Protocol/1.0: Model and
  92.        Semantics" document.
  93.  
  94.  
  95.  
  96.  
  97.  
  98.  
  99.  
  100.  
  101.  
  102.  
  103.  
  104.  
  105.  
  106.  
  107.  
  108.  
  109.  
  110.  
  111.  
  112.  
  113.  
  114.  
  115.        deBry, Hastings, Herriot, Isaacson, Powell                     [Page 2]
  116.                         June 3, 1997, Expires December 3, 1997
  117.  
  118.  
  119.  
  120.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  121.  
  122.  
  123.                                   Table of Contents
  124.  
  125.        1. 6
  126.        Introduction..........................................................7
  127.        2. Terminology........................................................7
  128.           2.1 Conformance Terminology........................................8
  129.              2.1.1 MUST......................................................8
  130.              2.1.2 MUST NOT..................................................8
  131.              2.1.3 SHOULD....................................................8
  132.              2.1.4 SHOULD NOT................................................8
  133.              2.1.5 MAY.......................................................8
  134.              2.1.6 CONDITIONALLY MANDATORY...................................8
  135.              2.1.7 NEED NOT..................................................9
  136.           2.2 Model Terminology..............................................9
  137.              2.2.1 Keyword...................................................9
  138.              2.2.2 Attributes................................................9
  139.              2.2.3 Attribute Name............................................9
  140.              2.2.4 Group Name................................................9
  141.              2.2.5 Attribute Value..........................................10
  142.              2.2.6 Attribute Syntax.........................................10
  143.              2.2.7 Implements...............................................10
  144.              2.2.8 Supports.................................................10
  145.        3. Simplified Printing Model.........................................11
  146.        4. IPP Objects.......................................................13
  147.           4.1 Printer Object................................................13
  148.           4.2 Job Object....................................................15
  149.           4.3 Document Object...............................................16
  150.           4.4 Object Relationships..........................................17
  151.           4.5 Object Attributes.............................................17
  152.              4.5.1 Job Template Attribute Overview..........................17
  153.              4.5.2 The "best-effort" Job Attribute Overview.................18
  154.           4.6 Object Identity...............................................19
  155.        5. IPP Operations....................................................19
  156.           5.1 Operation Semantics...........................................20
  157.              5.1.1 Print-Job Operation......................................20
  158.                 5.1.1.1 Print-Job Request...................................20
  159.                 5.1.1.2 Print-Job Response..................................22
  160.              5.1.2 Create-Job Operation.....................................23
  161.                 5.1.2.1 Create-Job Request..................................23
  162.                 5.1.2.2 Create Job Response.................................24
  163.              5.1.3 Send-Document Operation..................................25
  164.                 5.1.3.1 Send-Document Request...............................25
  165.                 5.1.3.2 Send-Document Response..............................25
  166.              5.1.4 Cancel Job Operation.....................................26
  167.                 5.1.4.1 Cancel-Job Request..................................26
  168.                 5.1.4.2 Cancel-Job Response.................................26
  169.              5.1.5 Get-Attributes Operation.................................26
  170.                 5.1.5.1 Get-Attributes Request..............................27
  171.  
  172.  
  173.        deBry, Hastings, Herriot, Isaacson, Powell                     [Page 3]
  174.                         June 3, 1997, Expires December 3, 1997
  175.  
  176.  
  177.  
  178.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  179.  
  180.  
  181.                 5.1.5.2 Get-Attributes Response.............................28
  182.              5.1.6 Get-Jobs Operation.......................................29
  183.                 5.1.6.1 Get-Jobs Request....................................29
  184.                 5.1.6.2 Get-Jobs Response...................................30
  185.           5.2 Operation Status and Messages.................................31
  186.           5.3 Status Codes (type2 keyword)..................................31
  187.        6. Object Attributes.................................................31
  188.           6.1 Attribute Syntaxes............................................32
  189.              6.1.1 Attribute Extensibility..................................35
  190.           6.2 Job Template Attributes.......................................36
  191.              6.2.1 job-name (name)..........................................41
  192.              6.2.2 job-sheets (type4 keyword)...............................42
  193.              6.2.3 notification-events (1setOf type2 keyword)...............42
  194.              6.2.4 notification-addresses (1setOf uri)......................42
  195.              6.2.5 job-priority (integer(1:100))............................43
  196.              6.2.6 job-hold-until (type4 keyword)...........................43
  197.              6.2.7 multiple-documents-are (type2 keyword)...................44
  198.              6.2.8 best-effort (type2 keyword)..............................44
  199.              6.2.9 media (type4 keyword)....................................45
  200.              6.2.10 number-up (type3 keyword)...............................46
  201.              6.2.11 sides (type2 keyword)...................................46
  202.              6.2.12 printer-resolution (type2 keyword)......................47
  203.              6.2.13 print-quality (type2 keyword)...........................47
  204.              6.2.14 copies (integer(1:2**31 - 1))...........................48
  205.              6.2.15 finishings (1setOf type2 keyword).......................48
  206.              6.2.16 compression (type3 keyword).............................48
  207.              6.2.17 job-k-octets (integer(0:2**31 - 1)).....................48
  208.              6.2.18 job-impressions (integer(0:2**31 - 1))..................49
  209.              6.2.19 job- media-sheets (integer(0:2**31 - 1))................49
  210.           6.3 Job Attributes................................................49
  211.              6.3.1 Job Template Attributes..................................49
  212.              6.3.2 Job Description Attributes...............................49
  213.                 6.3.2.1 job-URI (uri).......................................51
  214.                 6.3.2.2 job-originating-user (name).........................51
  215.                 6.3.2.3 job-originating-host (name).........................51
  216.                 6.3.2.4 user-locale (type3 keyword).........................51
  217.                 6.3.2.5 job-state (type1 keyword)...........................51
  218.                 6.3.2.6 job-state-reasons (1setOf  type2 keyword)...........55
  219.                 6.3.2.7 job-state-message (text)............................58
  220.                 6.3.2.8 output-device-assigned (uri)........................58
  221.                 6.3.2.9 time-since-submission (milliseconds)................58
  222.                 6.3.2.10 time-since-processing (milliseconds)...............58
  223.                 6.3.2.11 number-of-intervening-jobs (integer(0:2**31 - 1))..58
  224.                 6.3.2.12 job-message-from-operator (text)...................59
  225.                 6.3.2.13 time-since-completion (milliseconds)...............59
  226.                 6.3.2.14 job-k-octets-completed (integer(0:2**31 - 1))......59
  227.                 6.3.2.15 job-impressions-completed  (integer(0:2**31 - 1))..59
  228.                 6.3.2.16 job-media-sheets-completed (integer(0:2**31 - 1))..59
  229.  
  230.  
  231.        deBry, Hastings, Herriot, Isaacson, Powell                     [Page 4]
  232.                         June 3, 1997, Expires December 3, 1997
  233.  
  234.  
  235.  
  236.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  237.  
  238.  
  239.           6.4 Document Attributes...........................................59
  240.              6.4.1 document-name(name, Mandatory)...........................60
  241.              6.4.2 document-format (type2 keyword)..........................60
  242.              6.4.3 document-URI (uri).......................................61
  243.           6.5 Printer Attributes............................................61
  244.              6.5.1 Printer Job Template Attributes..........................61
  245.              6.5.2 Printer Description  Attributes..........................61
  246.                 6.5.2.1 printer-URI (uri)...................................63
  247.                 6.5.2.2 printer-name (name).................................63
  248.                 6.5.2.3 printer-location (text).............................63
  249.                 6.5.2.4 printer-description (text)..........................63
  250.                 6.5.2.5 printer-more-info-site (uri)........................64
  251.                 6.5.2.6 printer-driver-installer (uri)......................64
  252.                 6.5.2.7 printer-make-and-model (text).......................64
  253.                 6.5.2.8 maximum-printer-speed (integerUnits)................64
  254.                 6.5.2.9 printer-more-info-manf (uri)........................64
  255.                 6.5.2.10 printer-state (type1 keyword)......................65
  256.                 6.5.2.11 printer-state-reasons (1setOf type2 keyword).......67
  257.                 6.5.2.12 printer-is-accepting-jobs (boolean)................69
  258.                 6.5.2.13 printer-state-message (text).......................69
  259.                 6.5.2.14 queued-job-count (integer(0:2**31 - 1))............70
  260.                 6.5.2.15 printer-message-from-the-operator (text)...........70
  261.                 6.5.2.16 printer-locale (locale)............................70
  262.                 6.5.2.17 printer-locales-supported (1setOf locale)..........70
  263.        7. Conformance.......................................................70
  264.           7.1 Conditionally Mandatory.......................................70
  265.           7.2 Client Conformance Requirements...............................71
  266.           7.3 Printer Object Conformance Requirements.......................71
  267.              7.3.1 Objects..................................................71
  268.              7.3.2 Operations...............................................71
  269.              7.3.3 Attributes...............................................72
  270.              7.3.4 Default Value............................................72
  271.              7.3.5 Availability.............................................73
  272.              7.3.6 Printer extensions.......................................73
  273.              7.3.7 Attribute Syntaxes.......................................73
  274.           7.4 Security Conformance Requirements.............................73
  275.        8. IANA Considerations, Registered Extensions, Private Extensions....73
  276.        9. Security Considerations...........................................74
  277.        10. References.......................................................74
  278.        11. Author's Address.................................................75
  279.        12.77
  280.        Change History.......................................................78
  281.           12.1 Changes made to version 970512, dated 12-May-1997 to make
  282.           version 970603, dated  03-June-1997...............................78
  283.           12.2 Changes made to version 970509, dated 9-May-1997 to make version
  284.           970512, dated 12-May-1997.........................................78
  285.           12.3 Changes made to version 2.2, dated 5-May-1997 to make version
  286.           970509, dated 9-May-1997..........................................79
  287.  
  288.  
  289.        deBry, Hastings, Herriot, Isaacson, Powell                     [Page 5]
  290.                         June 3, 1997, Expires December 3, 1997
  291.  
  292.  
  293.  
  294.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  295.  
  296.  
  297.           12.4 Changes made to version 2.1, dated 24-April-1997 to make version
  298.           2.2, dated 5-May-1997.............................................79
  299.           12.5 Changes made to version 2.0, dated 26-March-1997 to make version
  300.           2.1, dated 22-April-1997..........................................79
  301.           12.6 Changes made to version 1.8, dated 24-March-1997 to make version
  302.           2.0, dated 26-March-1997..........................................79
  303.           12.7 Changes made to version 1.7, dated 24-Mar-1997 to make version
  304.           1.8, dated 24-March-1997..........................................79
  305.           12.8 Changes made to version 1.6, dated 12-Mar-1997 to make version
  306.           1.7, dated 24-March-1997..........................................80
  307.           12.9 Changes made to version 1.5, dated 11-Mar-1997 to make version
  308.           1.6, dated 12-March-1997..........................................80
  309.           12.10 Changes made to version 1.4, dated 27-Feb-1997 to make version
  310.           1.5, dated 9-March-1997...........................................82
  311.  
  312.  
  313.        1.
  314.  
  315.  
  316.  
  317.  
  318.  
  319.  
  320.  
  321.  
  322.  
  323.  
  324.  
  325.  
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336.  
  337.  
  338.  
  339.  
  340.  
  341.  
  342.  
  343.  
  344.  
  345.  
  346.  
  347.        deBry, Hastings, Herriot, Isaacson, Powell                     [Page 6]
  348.                         June 3, 1997, Expires December 3, 1997
  349.  
  350.  
  351.  
  352.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  353.  
  354.  
  355.        Introduction
  356.  
  357.        The Internet Printing Protocol (IPP) is an application level protocol
  358.        that can be used for distributed printing on the Internet.  The protocol
  359.        is heavily influenced by the printing model introduced in the Document
  360.        Printing Application (ISO/IEC 10175 DPA) standard.  Although DPA
  361.        identifies both end user and administrative features, the first version
  362.        of IPP is focused only on end user functionality.
  363.  
  364.        Section 2.  Terminology introduces the terminology used within this
  365.        document.
  366.  
  367.        Section 0 introduces the simplified IPP model.  The IPP model is made
  368.        simple by exposing only the objects, attributes, and operations that are
  369.        essential for end user access and control of the print subsystem.  When
  370.        future versions of IPP include features which satisfy operator and
  371.        administrator requirements, the model can be extended to support the
  372.        appropriate objects, attributes, and operations.
  373.  
  374.        Section 0 introduces the full semantics of the Printer, Job, and
  375.        Document objects in the IPP model.  It covers how instances of these
  376.        objects are identified, named, and related to each other.
  377.  
  378.        Section 0 covers the operations that are part of the IPP model.  These
  379.        operations include: the Create-Job, Send-Document, Print-Job, Cancel,
  380.        Get-Attributes, and Get-Jobs operations.
  381.  
  382.        Section 0 describes the attributes, their syntaxes, and semantics which
  383.        are part of the IPP model.  Each object's attributes are described, and
  384.        the attributes are grouped into logical groups to help clarify their
  385.        relationships and meaning.  These groups are also used to simplify
  386.        queries that request multiple attributes.
  387.  
  388.        Section 7.  Conformance is a review of conformance issues and clarifies
  389.        requirements that apply to client side and server side implementations.
  390.  
  391.        Sections 8. IANA Considerations, Registered Extensions, Private
  392.        Extensions-11. Author's Address cover extensibility, security, technical
  393.        references, and author information.
  394.  
  395.        2.   Terminology
  396.  
  397.        This specification uses the terminology defined in this section.
  398.  
  399.  
  400.  
  401.  
  402.  
  403.  
  404.  
  405.        deBry, Hastings, Herriot, Isaacson, Powell                     [Page 7]
  406.                         June 3, 1997, Expires December 3, 1997
  407.  
  408.  
  409.  
  410.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  411.  
  412.  
  413.        2.1  Conformance Terminology
  414.  
  415.        The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT",
  416.        "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and  "OPTIONAL" in this
  417.        document are to be interpreted as described in RFC 2119 [25].
  418.  
  419.        2.1.1     MUST
  420.  
  421.        This word, or the terms "REQUIRED",  "SHALL" or "MANDATORY", mean that
  422.        the definition is an absolute requirement of the specification.
  423.  
  424.        2.1.2     MUST NOT
  425.  
  426.        This phrase, or the phrase "SHALL NOT", mean that the definition is an
  427.        absolute prohibition of the specification.
  428.  
  429.        2.1.3     SHOULD
  430.  
  431.        This word, or the adjective "RECOMMENDED", mean that there may exist
  432.        valid reasons in particular circumstances to ignore a particular item,
  433.        but the full implications must be understood and carefully weighed
  434.        before choosing a different course.
  435.  
  436.        2.1.4     SHOULD NOT
  437.  
  438.        This phrase, or the phrase "NOT RECOMMENDED" mean that there may exist
  439.        valid reasons in particular circumstances when the particular behavior
  440.        is acceptable or even useful, but the full implications should be
  441.        understood and the case carefully weighed before implementing any
  442.        behavior described with this label.
  443.  
  444.        2.1.5     MAY
  445.  
  446.        This word, or the adjective "OPTIONAL", mean that an item is truly
  447.        optional.  One vendor may choose to include the item because a
  448.        particular marketplace requires it or because the vendor feels that it
  449.        enhances the product while another vendor may omit the same item.   An
  450.        implementation which does not include a particular option MUST be
  451.        prepared to interoperate with another implementation which does include
  452.        the option, though perhaps with reduced functionality. In the same vein
  453.        an implementation which does include a particular option MUST be
  454.        prepared to interoperate with another implementation which does not
  455.        include the option (except, of course, for the feature the option
  456.        provides.)
  457.  
  458.        2.1.6     CONDITIONALLY MANDATORY
  459.  
  460.  
  461.  
  462.  
  463.        deBry, Hastings, Herriot, Isaacson, Powell                     [Page 8]
  464.                         June 3, 1997, Expires December 3, 1997
  465.  
  466.  
  467.  
  468.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  469.  
  470.  
  471.        This term means that an item MUST be implemented in a conforming
  472.        implementation if the item corresponds to a feature or behavior that the
  473.        implementation is capable of realizing.  It is also true, that a
  474.        conforming implementation NEED NOT implement the items that correspond
  475.        to features or behaviors that the implmentation is not capable of
  476.        realizing.
  477.  
  478.        2.1.7     NEED NOT
  479.  
  480.        The verb "NEED NOT" indicates an action that the subject of the sentence
  481.        does not have to implement in order to claim conformance to the
  482.        standard.  The verb "NEED NOT" is used instead of "MAY NOT" since "MAY
  483.        NOT" sounds like a prohibition.
  484.  
  485.        2.2  Model Terminology
  486.  
  487.        2.2.1     Keyword
  488.  
  489.        Keywords are used within this document as identifiers of semantic
  490.        entities within the abstract model.  These entities are often attribute
  491.        names, attribute values, attribute syntaxes, and attribute groups. In
  492.        this document, a keyword is a sequence of characters (length of 1 to
  493.        255) which consists of the following ASCII characters: letters, digits,
  494.        hyphen ("-"), and underscore ("_").  A keyword MUST start with a letter.
  495.        In the actual protocol, these keywords will be represented using an
  496.        appropriate protocol encoding (strings, enumerated values, constants,
  497.        operation codes, identifiers, etc.).
  498.  
  499.        2.2.2     Attributes
  500.  
  501.        An attribute is an item of information consisting of an attribute name
  502.        and attribute value(s) using a specific syntax for that attribute. All
  503.        attributes are defined in section 6.    Object Attributes.  Attributes
  504.        are identified as being "MANDATORY", "CONDITIONALLY MANDATORY", or
  505.        "OPTIONAL".
  506.  
  507.        2.2.3     Attribute Name
  508.  
  509.        Each attribute is uniquely identified in this document by its attribute
  510.        name which is a keyword.  The keyword attribute name is given in the
  511.        section header describing that attribute.  In running text in this
  512.        document, attribute names are indicated inside double quotation marks
  513.        (").
  514.  
  515.        2.2.4     Group Name
  516.  
  517.        Related attributes are grouped into named groups.  The name of the group
  518.        is a keyword.  It can be used wherever an attribute name is used in
  519.  
  520.  
  521.        deBry, Hastings, Herriot, Isaacson, Powell                     [Page 9]
  522.                         June 3, 1997, Expires December 3, 1997
  523.  
  524.  
  525.  
  526.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  527.  
  528.  
  529.        place of naming all the attributes in the group explicitly.  Attribute
  530.        groups are defined in section 6.   Object Attributes.
  531.  
  532.        2.2.5     Attribute Value
  533.  
  534.        Each attribute shall have one or more values.  Attribute values shall be
  535.        represented in the syntax type specified for that attribute. In running
  536.        text in this document, attribute values are indicated inside single
  537.        quotation marks ('), whether their syntax types are keyword, integer,
  538.        text, etc.
  539.  
  540.        2.2.6     Attribute Syntax
  541.  
  542.        Each attribute is defined using an explicit syntax.  In this document,
  543.        each syntax type is defined as a keyword with specific meaning.  The
  544.        protocol specification document [23] shall indicate the actual
  545.        representation for each syntax type that shall be used for the actual
  546.        protocol.  Attribute syntaxes are defined in section 6.1    Attribute
  547.        Syntaxes.
  548.  
  549.        2.2.7     Implements
  550.  
  551.        By definition, an attribute is implemented if, in response to a query
  552.        for that attribute, an implementation responds with both the attribute
  553.        and a current value (or values) for that attribute. . A conforming
  554.        implementation SHALL implement all MANDATORY attributes and it SHALL
  555.        implement all CONDITIONALLY MANDATORY attributes whose possible values
  556.        correspond to the behaviors that the implementation is capable of
  557.        realizing.
  558.  
  559.  
  560.  
  561.        2.2.8     Supports
  562.  
  563.        By definition, a job processing behavior or selectable feature is
  564.        supported by Printer only if that Printer implements the corresponding
  565.        "supported" attribute populated with the value representing that
  566.        behavior or feature.  A given implementation may exhibit a behavior that
  567.        corresponds to the value of some supported attribute, but if the
  568.        implementation, when queried for that attribute, doesn't respond with
  569.        the supported attribute populated with that specific value, then as far
  570.        as IPP is concerned, that Printer does not  support that feature.
  571.        Section 6.  Object Attributes describes all of the Printer object's
  572.        supported attributes.  Most of the Printer object's supported attributes
  573.        are OPTIONAL or CONDITIONALLY MANDATORY, therefore conformance to IPP
  574.        does not mandate that all implementations support all possible value
  575.        representing all possible job processing behaviors and features.
  576.  
  577.  
  578.  
  579.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 10]
  580.                         June 3, 1997, Expires December 3, 1997
  581.  
  582.  
  583.  
  584.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  585.  
  586.  
  587.        For example, if a given instance of a Printer supports only certain
  588.        document formats, then that Printer SHALL implement the "document-
  589.        format-supported" attribute and that attribute SHALL be populated with a
  590.        set of values, possibly only one, taken from the entire set of possible
  591.        values defined in this model document.  This implemented set of values
  592.        represent the Printer's set of supported document formats.  Another
  593.        example is the "finishings-supported" attribute.  If a Printer is not
  594.        physically capable of stapling (there is no stapler in the output device
  595.        itself), the "finishings-supported" attribute MUST NOT be implemented
  596.        with the value of 'staple'.  Note: The supported attributes are set
  597.        (populated) by some administrative process or automatic sensing
  598.        mechanism which is outside the scope of IPP.
  599.  
  600.  
  601.  
  602.  
  603.  
  604.        3.   Simplified Printing Model
  605.  
  606.        In order to a achieve its goal of realizing a workable printing protocol
  607.        for the Internet, IPP is based on a simplified printing model which
  608.        abstracts the many (often complex) components of real world printing
  609.        solutions.  Many of these systems include features, interfaces, and
  610.        relationships that are beyond the scope of IPP.  IPP has to run in a
  611.        distributed computing environment where requesters of print services
  612.        (clients, applications, PC drivers, etc.) cooperate and interact with
  613.        print service providers.  Although the underlying configuration may be a
  614.        complex n-tier client/server system, an important simplifying step in
  615.        the IPP model is to expose only the key objects and interfaces required
  616.        for printing.  The IPP model encapsulates these important elements into
  617.        three simple objects:
  618.  
  619.          Printer (Section 0)
  620.          Job (Section 0)
  621.          Document (Section 0)
  622.  
  623.        Each of these objects has a set of operations associated with it.  These
  624.        include:
  625.  
  626.          Printer:
  627.             Create-Job (Section 0)
  628.             Print-Job (Section ???)
  629.             Get-Attributes (Section 0)
  630.             Get-Jobs (Section 0)
  631.          Job
  632.             Send-Document(section ???)
  633.             Get-Attributes (Section 0)
  634.             Cancel Job (Section 0)
  635.  
  636.  
  637.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 11]
  638.                         June 3, 1997, Expires December 3, 1997
  639.  
  640.  
  641.  
  642.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  643.  
  644.  
  645.  
  646.        There are no operations defined for a Document object.  All document
  647.        information is accessed through a Job object and its operations.
  648.  
  649.        It is important, however, to understand that in real system
  650.        implementations (which lie underneath the abstracted IPP model), there
  651.        are other components of a print service which are not explicitly defined
  652.        in the IPP model. The following figure illustrates where IPP fits with
  653.        respect to these other components.
  654.  
  655.  
  656.                                     +--------------+
  657.                                     |  Application |
  658.                           o         +. . . . . . . |
  659.                          \|/        |   Spooler    |
  660.                          / \        +. . . . . . . |   +---------+
  661.                        End-User     | Print Driver |---|  File   |
  662.              +-----------+ +-----+  +------+-------+   +----+----+
  663.              |  Browser  | | GUI |         |                |
  664.              +-----+-----+ +--+--+         |                |
  665.                    |          |            |                |
  666.                    |      +---+------------+---+            |
  667.        N   D   S   |      |      IPP Client    |------------+
  668.        O   I   E   |      +---------+----------+
  669.        T   R   C   |                |
  670.        I   E   U   |
  671.        F   C   R   -------------- Transport ------------------
  672.        I   T   I
  673.        C   O   T                    |         --+
  674.        A   R   Y           +--------+--------+  |
  675.        T   Y               |    IPP Server   |  |
  676.        I                   +--------+--------+  |
  677.        O                            |           |
  678.        N                   +.................+  | IPP Printer
  679.                            |  Print Service  |  |
  680.                            +.................+  |
  681.                                     |           |
  682.                              Output Device(s)   |
  683.                                               --+
  684.  
  685.  
  686.  
  687.        IPP Printers encapsulate the functions normally associated with physical
  688.        output devices along with the spooling, scheduling and multiple device
  689.        management functions associated with a print server. Printers may be
  690.        registered as entries in a directory where end users find and select
  691.        them based on some sort of filtered and context based searching.  The
  692.        directory is used to store relatively static information about the
  693.  
  694.  
  695.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 12]
  696.                         June 3, 1997, Expires December 3, 1997
  697.  
  698.  
  699.  
  700.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  701.  
  702.  
  703.        Printer, allowing end users to search for and find Printers that match
  704.        their search criteria (name, context, printer capabilities, etc.)
  705.  
  706.        IPP clients implement the IPP protocol on the client side and give end
  707.        users or programs the ability to query an IPP Printer and submit and
  708.        manage their print jobs.  An IPP server is just that part of the IPP
  709.        Printer that implements the protocol.  The rest of the IPP Printer
  710.        implements the application semantics of the print service itself.  All
  711.        information about the Printer, both static and dynamic information, can
  712.        be accessed directly from the Printer itself.  The more dynamic
  713.        information associated with a Printer includes state, currently loaded
  714.        and ready media, number of jobs on the Printer, errors, warnings, etc..
  715.        When a job is submitted to the Printer, a Job object is created.  The
  716.        end user then interacts with this new Job to query its status and
  717.        monitor the progress of the job.  End users may also cancel the Job.
  718.        The end user is able to register to receive certain events which are
  719.        then routed using the notification service(s).
  720.  
  721.        4.   IPP Objects
  722.  
  723.        4.1  Printer Object
  724.  
  725.        A major component of the IPP model is the Printer object.
  726.  
  727.        The capabilities and state of an IPP Printer are described by its
  728.        attributes.  Printer attributes are defined in the following categories:
  729.  
  730.          Job Template Attributes (section 6.5.1     Printer Job Template
  731.             Attributes)
  732.          Printer Description Attributes (section 6.5.2   Printer Description
  733.             Attributes)
  734.  
  735.        Operations which are invoked on a printer include:
  736.  
  737.          Create-Job (section 0)
  738.          Print-Job (section ???)
  739.          Get-Attributes (section 0)
  740.          Get-Jobs (section 0)
  741.  
  742.        An instance of a Printer object implements IPP.  Using the protocol, end
  743.        users may query the attributes of the Printer, submit jobs to the
  744.        Printer, determine subsequent states of submitted and queued jobs, and
  745.        cancel their own print jobs. The realization of a Printer object may
  746.        take on different forms for any given configuration of real components.
  747.        However, the details of the configuration of real components must be
  748.        transparent to the end user.
  749.  
  750.  
  751.  
  752.  
  753.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 13]
  754.                         June 3, 1997, Expires December 3, 1997
  755.  
  756.  
  757.  
  758.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  759.  
  760.  
  761.        Since a Printer object is an abstraction of a generic document output
  762.        device or print service provider, an IPP Printer object could be used to
  763.        represent any real or virtual device with semantics consistent with the
  764.        Printer object. For example, an instance of a Printer object could be
  765.        used to front end a fax-out device, any kind of imager, or even a CD
  766.        writer.
  767.  
  768.        Some examples of configurations supporting a Printer object include:
  769.  
  770.          1) An output device, with no spooling capabilities
  771.          2) An output device, with a built-in spooler
  772.          3) A print server supporting IPP with one or more associated output
  773.             devices
  774.             3a) The associated output devices might or might not be capable of
  775.               spooling jobs
  776.             3b) The associated output devices might or might not support IPP
  777.  
  778.        See the following figures for some examples on how to view Printer
  779.        objects on top of several print system configurations.  The embedded
  780.        case below represents configurations 1 and 2. The hosted and fan-out
  781.        figures below represent configuration 3.
  782.  
  783.  
  784.  
  785.  
  786.  
  787.  
  788.  
  789.  
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.  
  797.  
  798.  
  799.  
  800.  
  801.  
  802.  
  803.  
  804.  
  805.  
  806.  
  807.  
  808.  
  809.  
  810.  
  811.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 14]
  812.                         June 3, 1997, Expires December 3, 1997
  813.  
  814.  
  815.  
  816.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  817.  
  818.  
  819.        Legend:
  820.  
  821.        ##### indicates a Printer object which is
  822.              either embedded in an output device or is
  823.              hosted in a server.  The implementation
  824.              might or might not be capable of queuing/spooling.
  825.  
  826.        any   indicates any network protocol or direct
  827.              connect, including IPP
  828.  
  829.  
  830.        embedded printer:
  831.                                                  output device
  832.                                                +---------------+
  833.         O   +--------+                         |  ###########  |
  834.        /|\  | client |------------IPP------------># Printer #  |
  835.        / \  +--------+                         |  # Object  #  |
  836.                                                |  ###########  |
  837.                                                +---------------+
  838.  
  839.  
  840.        hosted printer:
  841.                                                +---------------+
  842.         O   +--------+        ###########      |               |
  843.        /|\  | client |--IPP--># Printer #-any->| output device |
  844.        / \  +--------+        # Object  #      |               |
  845.                               ###########      +---------------+
  846.  
  847.  
  848.  
  849.                                                 +---------------+
  850.        fan out:                                 |               |
  851.                                             +-->| output device |
  852.                                         any/    |               |
  853.         O   +--------+      ###########   /     +---------------+
  854.        /|\  | client |-IPP-># Printer #--*
  855.        / \  +--------+      # Object  #   \     +---------------+
  856.                             ########### any\    |               |
  857.                                             +-->| output device |
  858.                                                 |               |
  859.                                                 +---------------+
  860.  
  861.  
  862.        4.2  Job Object
  863.  
  864.        A Job object is used to model a job.  A job can contain one or more
  865.        documents.  The information required to create a Job object is sent in a
  866.        create request from the end user via an IPP client to a Printer.  A
  867.  
  868.  
  869.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 15]
  870.                         June 3, 1997, Expires December 3, 1997
  871.  
  872.  
  873.  
  874.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  875.  
  876.  
  877.        create request can be either a Create-Job Request or a Print-Job
  878.        Request.  The Printer may perform some validation checks to verify that
  879.        the job may indeed be processed.  For example, the create request may
  880.        specify that the documents within the job are to be printed duplex (on
  881.        both sides of the media).  However, the Printer might not support such a
  882.        feature.  Once the Printer validates the submitted information, a Job
  883.        object is created.  The instance of the Job object is initialized with
  884.        information from the create request.  If a Create-Job operation is used
  885.        to create the Job object, subsequent Send-Document operations are used
  886.        to transfer the document data from the client to the IPP Printer.
  887.  
  888.        This model specification defines rules for what MUST be done when:
  889.  
  890.          - optional attributes are missing
  891.          - there are  conflicts between what is supported and what is
  892.             requested
  893.          - there are conflicts between what the client requests via external
  894.             attributes in the IPP operation and what the client requests in
  895.             embedded instructions in the document page description language
  896.             (PDL).
  897.  
  898.        Job attributes are broken up into the following groups:
  899.  
  900.          Job Template Attributes (optionally supplied by the client/end user,
  901.             section 6.3.1  Job Template Attributes
  902.          Job Description Attributes (set by the Printer, section 6.3.2  Job
  903.             Description Attributes)
  904.  
  905.        The following operations can be invoked on Jobs:
  906.          Send-Document(section 5.1.3 Send-Document Operation)
  907.          Cancel Job (section 0)
  908.          Get-Attributes (section 0)
  909.  
  910.        4.3  Document Object
  911.  
  912.        Documents consist of printable data and attributes that describe the
  913.        data to be printed.  In this version of the protocol only the attributes
  914.        in section 6.4 Document Attributes are  defined for individual
  915.        documents.  Documents are sent in a Send-Document operation or in a
  916.        Print-Job operation.
  917.  
  918.        Document attributes include:
  919.  
  920.          Document Attributes (section 0)
  921.  
  922.        Currently no operations are defined on documents.
  923.  
  924.  
  925.  
  926.  
  927.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 16]
  928.                         June 3, 1997, Expires December 3, 1997
  929.  
  930.  
  931.  
  932.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  933.  
  934.  
  935.        4.4  Object Relationships
  936.  
  937.        Instances of objects within the system have relationships that must be
  938.        maintained persistently along with the persistent storage of the object
  939.        attributes.  A Printer can represent one or more output devices.  An
  940.        output device can be represented by at most one Printer object.  A
  941.        Printer can contain zero or more Job objects.  A Job object is contained
  942.        in exactly one Printer object.  A Job object contains one or more
  943.        Documents.  If the Document is simply a reference to some print data
  944.        stream, the reference may be used in multiple documents in the same Job
  945.        or even in different Jobs.  If the Document is not just a reference, but
  946.        an actual stream of print data, it shall only be contained in one
  947.        Document, although there can be copies of it in other Documents.
  948.  
  949.        4.5  Object Attributes
  950.  
  951.        Each object type is defined by a set of attributes which describe the
  952.        realization of each instance of an object.  That is, a Printer object is
  953.        defined as set of attributes that are associated with each instance of a
  954.        Printer object.  In the same manner, a Job object is defined by defining
  955.        the set of attributes that are associated with each instance of a Job
  956.        object.  Some attributes are OPTIONAL, some are MANDATORY, and some are
  957.        CONDITIONALLY MANDATORY (see section 2).  Object attributes are defined
  958.        in section 0 of this document.
  959.  
  960.        4.5.1     Job Template Attribute Overview
  961.  
  962.        Attributes that a client may optionally include in a create request are
  963.        called Job Template attributes.  These are described in detail in
  964.        section 0.  The Printer object has associated attributes which define
  965.        supported and default values for the Printer.
  966.  
  967.          - When a Job Template attribute is supplied by a client in a create
  968.             request, the attribute and its value describe the desired job
  969.             processing behavior.
  970.  
  971.          - The Printer object's supported attribute describes what behaviors
  972.             are possible.
  973.  
  974.          - The Printer object's default value attribute describes what will be
  975.             done when no other job processing information is supplied by the
  976.             client.
  977.  
  978.  
  979.  
  980.  
  981.  
  982.  
  983.  
  984.  
  985.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 17]
  986.                         June 3, 1997, Expires December 3, 1997
  987.  
  988.  
  989.  
  990.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  991.  
  992.  
  993.        4.5.2     The "best-effort" Job Attribute Overview
  994.  
  995.        A client supplies Job Template attributes to affect the rendering,
  996.        production and finishing of the documents in the job.  Similar types of
  997.        instructions may also be contained in the document to be printed, that
  998.        is, within the Page Description Language (PDL) of the document data.  If
  999.        there is a conflict between the value of one of these IPP Job Template
  1000.        attributes, and a corresponding instruction in the document (either
  1001.        implicit or explicit), it is desirable that the value of the attribute
  1002.        shall take precedence over the document instruction.   Until companies
  1003.        that supply interpreters for PDLs, such as PostScript and PCL allow a
  1004.        way to external attributes (such as IPP attributes) to take precedence
  1005.        over internal job production instructions, a Printer might not be able
  1006.        to implement the semantics that IPP attributes override (take on a
  1007.        higher precedence) the embedded PDL instructions.   Therefore, IPP
  1008.        introduces a special Job Template attribute named "best-effort".  This
  1009.        attribute gives the end user some ability to influence, or at least
  1010.        understand, how a particular Printer implementation handles these
  1011.        conflicts.
  1012.  
  1013.        This attribute takes on the following values:
  1014.  
  1015.          - 'shall-honor-ipp-attributes': If a Printer supports this value and
  1016.             a client requests this value, the Printer guarantees that all IPP
  1017.             attribute values take precedence over embedded instructions in the
  1018.             job data (the PDL of the job's documents).
  1019.          - 'should-honor-ipp-attributes': If a Printer supports this value,
  1020.             and a client requests this value, the Printer should try to make
  1021.             sure that IPP attribute values take precedence over embedded PDL
  1022.             instructions, however there is no guarantee
  1023.  
  1024.        ISSUE: Should these be 'shall-honor-attribute-precedence' and 'should-
  1025.        honor-attribute-prcedence'?
  1026.  
  1027.        A Printer SHALL implement the "best-effort-supported" attribute.  Notice
  1028.        that since 'should-honor-ipp-attributes' does not offer any type of
  1029.        guarantee, a Printer may not do a very "good" job of implementing the
  1030.        semantics of "should", but it would still be a conforming
  1031.        implementation.
  1032.  
  1033.        If there is ever a conflict between what a Printer supports and what an
  1034.        IPP client requests, the Printer shall reject the print request.  A
  1035.        client should query the printer to find out what is supported before
  1036.        making a request.  This ensures that all requested attribute values are
  1037.        supported.
  1038.  
  1039.        ISSUE: Should this be called "effort-level" rather than "best-effort"?
  1040.  
  1041.  
  1042.  
  1043.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 18]
  1044.                         June 3, 1997, Expires December 3, 1997
  1045.  
  1046.  
  1047.  
  1048.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  1049.  
  1050.  
  1051.        4.6  Object Identity
  1052.  
  1053.        All instances of Printer and Job objects have an identifier attribute
  1054.        whose value is globally unique so that they can persistently and
  1055.        unambiguously referenced.  The IPP model requires that these values be
  1056.        URIs as defined by RFC 1738 and RFC 1808.  In addition to an identifier
  1057.        attribute, instances of Printer and Job objects may have a name.  An
  1058.        object name need not be unique across all instances of  all objects.
  1059.        The Printer name is chosen and set by an administrator.  The Job name is
  1060.        created by the Printer using the name of the first document in the job.
  1061.        In all cases, the name only has local meaning, and is not constrained to
  1062.        be globally unique.
  1063.  
  1064.        To summarize, each instance of Printer and Job objects will have two
  1065.        identifying attributes:
  1066.  
  1067.          - "xxx-URI": The globally unique identifier for this object instance
  1068.          - "xxx-name": The non-globally unique name for this object instance
  1069.  
  1070.        Document objects only have names, no identifiers.  The "document-name"
  1071.        attribute is used to store the name of the Document.  This name is just
  1072.        of interest within the context of a Job.  It need not be globally
  1073.        unique.
  1074.  
  1075.        If Documents are printed by reference, they are identified by URIs.
  1076.  
  1077.        5.   IPP Operations
  1078.  
  1079.        Jobs and Printers each have a set of associated operations. End users or
  1080.        programs invoke these operations using an IPP client. The operations
  1081.        are:
  1082.  
  1083.          For a Printer object:
  1084.             Create-Job (section 0)
  1085.             Print-Job (section ???)
  1086.             Get-Attributes (section 0)
  1087.             Get-Jobs (section 0).
  1088.  
  1089.          For a Job object:
  1090.             Send-Document (section ??)
  1091.             Cancel-Job (section 0)
  1092.             Get-Attributes (section 0)
  1093.  
  1094.        IPP Job and Printer objects are identified by URIs.  When a client
  1095.        communicates with a remote IPP object, it sends an operation request to
  1096.        the URI for that object.  Each request carries along with it the input
  1097.        parameters and data required to perform the specified operation.  Each
  1098.        request requires a response from the object indicating success or
  1099.  
  1100.  
  1101.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 19]
  1102.                         June 3, 1997, Expires December 3, 1997
  1103.  
  1104.  
  1105.  
  1106.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  1107.  
  1108.  
  1109.        failure of the operation including response data and/or error messages.
  1110.        The representation and encoding of the IPP protocol are contained in
  1111.        "Internet Printing Protocol: Protocol Specification."[23]
  1112.  
  1113.        It is assumed that URIs for IPP Printers are available to end users or
  1114.        programs that wish to invoke Printer operations.  Although NOT
  1115.        MANDATORY, it is RECOMMENDED that Printers be registered in a directory
  1116.        service which end users and programs can interrogate. "Internet Printing
  1117.        Protocol: Directory Schema"[24] defines the attributes to be associated
  1118.        with a Printer entry in a directory service.
  1119.  
  1120.        5.1  Operation Semantics
  1121.  
  1122.        In this section, the IPP operations are described in terms of their
  1123.        contents and semantics including both the request and the response.
  1124.  
  1125.        In order to create a new Job object, a client MAY use one of two
  1126.        operations:  either the Create-Job operation or the Print-Job operation.
  1127.        If the client wants to create a Job with only a single Document, the
  1128.        client MAY use the Print-Job operation or a Create-Job operation
  1129.        followed by a single Send-Document operation.  For performance reasons,
  1130.        the client SHOULD use the Print-Job operation for all single Document
  1131.        Jobs.  If the client wants to create a Job with more than one Document,
  1132.        the client SHALL use the Create-Job operation followed by as many Send-
  1133.        Document operations as needed (on Document per Send-Document operation).
  1134.        The Print-Job operation is a convenience operation for creating a Job
  1135.        with only one Document.  Throughout this model specification, the term
  1136.        create request is used to refer to either a Create-Job Request or a
  1137.        Print-Job Request.
  1138.  
  1139.        5.1.1     Print-Job Operation
  1140.  
  1141.        When an end user desires to submit a print job with only one document,
  1142.        the client sends a Print-Job Request to a Printer and receives a Print-
  1143.        Job Response from that Printer. The information in a Print-Job Request
  1144.        (along with any default information associated with the Printer) is
  1145.        sufficient for the Printer to create a Job object and then process that
  1146.        Job.
  1147.  
  1148.        5.1.1.1   Print-Job Request
  1149.  
  1150.        The following elements are part of the Print-Job Request:
  1151.  
  1152.          Job Template Attributes:
  1153.             An optional set of Job Template attributes as defined in section
  1154.             6.2  Job Template Attributes.  If the client supplies no Job
  1155.             Template attributes in the Create-Job Request, the Printer uses its
  1156.             default value attributes when processing the job.
  1157.  
  1158.  
  1159.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 20]
  1160.                         June 3, 1997, Expires December 3, 1997
  1161.  
  1162.  
  1163.  
  1164.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  1165.  
  1166.  
  1167.  
  1168.          Document Content
  1169.             The client either supplies the raw document data or a URI reference
  1170.             to the data but not both.
  1171.  
  1172.        The simplest Print-Job Request consists of just the Document Content and
  1173.        nothing else.  This means that the Printer SHALL create a new Job object
  1174.        with no Job Template attributes and a single contained Document.
  1175.  
  1176.        When a Printer receives a Print-Job Request, the Printer SHALL either
  1177.        accept or reject the request. The Printer SHALL accept the Print-Job
  1178.        Request and SHALL create a Job object if it is able to accept all
  1179.        attributes in the request.  The Printer SHALL reject the request and
  1180.        SHALL NOT create a Job object if the Printer rejects any attribute in
  1181.        the request. There are six cases to consider with respect to each Job
  1182.        and Document attributes:
  1183.  
  1184.          1. The client supplies a Job Template attribute named "xxx" and the
  1185.             value supplied by the client is among the values supported by the
  1186.             Printer (i.e., is among the values of the Printer's "xxx-supported"
  1187.             attribute): The "xxx" Job Template attribute is accepted.  If the
  1188.             "best-effort-supported" attribute contains the value 'shall-honor-
  1189.             ipp-attributes' the Printer SHALL guarantee the behavior
  1190.             represented by the value in the "xxx" attribute (i.e., the IPP
  1191.             attribute has precedence over any other embedded job instruction).
  1192.             If the value of the "best-effort-supported" is 'should-honor-ipp-
  1193.             attributes' then the Printer SHOULD try to realize the behavior
  1194.             requested by the client, but NEED NOT guarantee the behavior.  The
  1195.             Printer creates the Job object and implements the "xxx" attribute
  1196.             in the new Job object and uses the value supplied by the client.
  1197.  
  1198.          2. The client supplies an attribute value but the attribute is
  1199.             syntactically bad: The Printer shall reject the job and return the
  1200.             ??? error code.
  1201.  
  1202.          3. The client supplies an attribute value and the attribute value is
  1203.             not among the values supported by the Printer:  The Printer SHALL
  1204.             reject the job and return the 'attribute-unsupported' error code.
  1205.  
  1206.          4. The client supplies an attribute value and the Printer does not
  1207.             implement the attribute: The attribute is ignored.  The Printer
  1208.             behaves as if the attribute was never supplied by the client in the
  1209.             Print-Job Request.  In the response, the Printer SHALL return the
  1210.             names of all ignored attributes.  The final result of the Job is
  1211.             undefined for an ignored attribute (that is the desired behavior
  1212.             might or might not be realized).
  1213.  
  1214.          ISSUE: Should the printer just reject the job?
  1215.  
  1216.  
  1217.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 21]
  1218.                         June 3, 1997, Expires December 3, 1997
  1219.  
  1220.  
  1221.  
  1222.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  1223.  
  1224.  
  1225.  
  1226.          5. The client does not supply an attribute, but the Printer
  1227.             implements the attribute: The attribute is accepted and when the
  1228.             Printer creates the Job object, the Printer SHALL NOT implement the
  1229.             attribute in the Job object.  When the Printer processes that Job,
  1230.             the Printer SHOULD attempt to use the behavior implied by the
  1231.             default value Printer attribute as set at the time of Job
  1232.             processing (not Job creation).  In other words, these rules allow
  1233.             for a Job object to be created without implementing some of the Job
  1234.             Template attributes.  As the Printer processes the Job, if the
  1235.             Printer implements a default value attribute for the missing Job
  1236.             Template attribute, the Printer does its best to realize the
  1237.             behavior of the default value.  If the Printer does not implement
  1238.             the default value attribute, the results are undefined.
  1239.  
  1240.             Note: For each Job Template attribute, this specification REQUIRES
  1241.             that a Printer to implement the CONDITIONALLY MANDATORY attributes.
  1242.  
  1243.          6. The client does not supply an attribute, and the Printer does not
  1244.             implement the attribute:  The Printer accepts the Job and creates a
  1245.             Job object.  When the Job is processed, the actual behavior
  1246.             realized with respect to the missing Job Template attribute is
  1247.             undefined.
  1248.  
  1249.  
  1250.        5.1.1.2   Print-Job Response
  1251.  
  1252.        The Printer shall return to the client the following output parameters
  1253.        as part of the Print-Job Response:
  1254.  
  1255.          Job Identifier:
  1256.             A URI which the client shall use for all other operations on this
  1257.             Job
  1258.  
  1259.          Job Status:
  1260.             The following Job attributes:  job-name, job-state, and job-state-
  1261.             reasons.  The value of each attribute shall be from a snapshot
  1262.             taken sometime after the time the Printer receives the print
  1263.             request.  The "job-state-message" attribute is OPTIONAL.
  1264.  
  1265.             Note: Since any job affecting printer state information  is
  1266.             reflected in the "job-state" and "job-state-reasons" job
  1267.             attributes, it is sufficient to return only job status attributes
  1268.             and no printer status attributes at Job creation time.
  1269.  
  1270.          Ignored Attributes:
  1271.             A list of attribute names which were ignored in the creation of the
  1272.             Job object.
  1273.  
  1274.  
  1275.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 22]
  1276.                         June 3, 1997, Expires December 3, 1997
  1277.  
  1278.  
  1279.  
  1280.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  1281.  
  1282.  
  1283.  
  1284.          Unsupported Attributes:
  1285.             A list of attribute names which are unsupported.  Any attributes in
  1286.             this list imply that the Job object was not created.
  1287.  
  1288.          Bad Attributes:
  1289.             A list of attribute names which were syntactically incorrect. Any
  1290.             attributes in this list imply that the Job object was not created.
  1291.  
  1292.          Status
  1293.             Status information including error status
  1294.  
  1295.        The simplest response shall consist of the job identifier, the Job
  1296.        Status attributes, and an operation status that is either an "ok" status
  1297.        or an "error" status.
  1298.  
  1299.        5.1.2     Create-Job Operation
  1300.  
  1301.        When an end user desires to submit a print job, the client sends a
  1302.        Create-Job Request to a Printer and receives a Create-Job Response from
  1303.        that Printer. The information in a Create-Job Request along with any
  1304.        default information associated with the Printer is sufficient for the
  1305.        Printer to create a Job object.  An instance of a Job object contains
  1306.        all the information needed by the Printer to print one or more documents
  1307.        as a print job.  If the client follows the Create-Job operations with as
  1308.        many Send-Document operations as needed.
  1309.  
  1310.        5.1.2.1   Create-Job Request
  1311.  
  1312.        The following elements are part of the Create-Job Request:
  1313.  
  1314.          Number of Documents:
  1315.             An optional integer value specifying the number of Documents for
  1316.             this Job.  The document data is transferred in a series of
  1317.             subsequent Send-Document operations (one document per Send-Document
  1318.             operation).  If this value is not supplied by the client, the
  1319.             Printer waits to receive an empty Send-Document operation signaling
  1320.             the end of Documents for this Job.  If the client wants to create a
  1321.             Job with only a single document, the client MAY use the Print-Job
  1322.             operation.  This is a convenience operation for creating a Job with
  1323.             only one Document.  The Print-Job Operation is semantically the
  1324.             same as a Create-Job operation followed by one Send-Document
  1325.             operation.
  1326.  
  1327.          Job Template Attributes:
  1328.             An optional set of Job Template attributes as defined in section
  1329.             6.2  Job Template Attributes.  If the client supplies no Job
  1330.  
  1331.  
  1332.  
  1333.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 23]
  1334.                         June 3, 1997, Expires December 3, 1997
  1335.  
  1336.  
  1337.  
  1338.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  1339.  
  1340.  
  1341.             Template attributes in the Create-Job Request, the implemented
  1342.             Printer defaults are used.
  1343.  
  1344.        The simplest Create-Job Request has no data which means that the Printer
  1345.        SHALL create a new Job object with no Job Template attributes and the
  1346.        number of Documents is yet to be determined.
  1347.  
  1348.          When a Printer receives a Create-Job Request, the Printer SHALL
  1349.          either accept or reject the request.  The rules for accepting or
  1350.          rejecting a Create-Job Request are the same as the rules for
  1351.          accepting or rejecting the Print-Job Request (see section 5.1.1.1
  1352.                         Print-Job Request).
  1353.  
  1354.        5.1.2.2   Create Job Response
  1355.  
  1356.        The Printer shall return to the client the following output parameters
  1357.        as part of the Create-Job Response:
  1358.  
  1359.          Job Identifier:
  1360.             A URI which the client shall use for all other operations on this
  1361.             Job
  1362.  
  1363.          Job Status:
  1364.             The following Job attributes:  job-name, job-state, and job-state-
  1365.             reasons.  The value of each attribute shall be from a snapshot
  1366.             taken sometime after the time the Printer receives the print
  1367.             request.
  1368.  
  1369.             Note: Since any job affecting printer state information  is
  1370.             reflected in the "job-state" and "job-state-reasons" job
  1371.             attributes, it is sufficient to return only job status attributes
  1372.             and no printer status attributes at Job creation time.
  1373.  
  1374.          Ignored Attributes:
  1375.             A list of attribute names which were ignored in the creation of the
  1376.             Job object.
  1377.  
  1378.          Unsupported Attributes:
  1379.             A list of attribute names which are unsupported.  Any attributes in
  1380.             this list imply that the Job object was not created.
  1381.  
  1382.          Bad Attributes:
  1383.             A list of attribute names which were syntactically incorrect. Any
  1384.             attributes in this list imply that the Job object was not created.
  1385.  
  1386.          Status
  1387.             Status information including error status
  1388.  
  1389.  
  1390.  
  1391.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 24]
  1392.                         June 3, 1997, Expires December 3, 1997
  1393.  
  1394.  
  1395.  
  1396.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  1397.  
  1398.  
  1399.        The simplest response shall consist of the job identifier, the Job
  1400.        Status attributes, and an operation status that is either an "ok" status
  1401.        or an "error" status.
  1402.  
  1403.        5.1.3     Send-Document Operation
  1404.  
  1405.        Once a Job object has been created using a Create-Job operation, a
  1406.        client uses the Send-Document operation to transport the documents to be
  1407.        printed and add them to the named Job object.  A document MUST be sent
  1408.        in a single Send-Document operation.
  1409.  
  1410.        5.1.3.1   Send-Document Request
  1411.  
  1412.        The client submits the request to a Job URI.
  1413.  
  1414.        The following abstract data types are part of the Send-Document Request:
  1415.  
  1416.          Document Attributes:
  1417.             An optional set of Document Description attributes (section 6.4
  1418.                  Document Attributes).
  1419.  
  1420.  
  1421.          Document Content:
  1422.             The client either supplies the raw document data or a URI reference
  1423.             to the data but not both.
  1424.  
  1425.  
  1426.        5.1.3.2   Send-Document Response
  1427.  
  1428.        The following abstract data types are part of the Send-Document
  1429.        Response:
  1430.  
  1431.  
  1432.          Job Status:
  1433.             The following Job attributes:  job-name, job-state, and job-state-
  1434.             reasons.  The value of each attribute shall be from a snapshot
  1435.             taken sometime after the time the Printer receives the print
  1436.             request.
  1437.  
  1438.             Note: Since any job affecting printer state information  is
  1439.             reflected in the "job-state" and "job-state-reasons" job
  1440.             attributes, it is sufficient to return only job status attributes
  1441.             and no printer status attributes at Job creation time.
  1442.  
  1443.          Ignored Attributes:
  1444.             A list of attribute names which were ignored in the creation of the
  1445.             Job object.
  1446.  
  1447.  
  1448.  
  1449.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 25]
  1450.                         June 3, 1997, Expires December 3, 1997
  1451.  
  1452.  
  1453.  
  1454.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  1455.  
  1456.  
  1457.          Unsupported Attributes:
  1458.             A list of attribute names which are unsupported.  Any attributes in
  1459.             this list imply that the Job object was not created.
  1460.  
  1461.          Bad Attributes:
  1462.             A list of attribute names which were syntactically incorrect. Any
  1463.             attributes in this list imply that the Job object was not created.
  1464.  
  1465.          Status:
  1466.             Status information including error status
  1467.  
  1468.  
  1469.  
  1470.        5.1.4     Cancel Job Operation
  1471.  
  1472.        This operation allows a user to cancel one specific Print Job any time
  1473.        after the print job has been established on the Printer.  Some pages may
  1474.        be printed before a job is terminated if printing has already started
  1475.        when the Cancel Job operation is received.  Only the end user who is
  1476.        also the job originator ("job-originating-user" Job attribute) can
  1477.        cancel the job using IPP 1.0.
  1478.  
  1479.        5.1.4.1   Cancel-Job Request
  1480.  
  1481.        The client submits the request to a Job URI.
  1482.  
  1483.        The following abstract data types are part of the Cancel Job Request:
  1484.  
  1485.          Message:
  1486.             Optional message to the operator
  1487.  
  1488.  
  1489.        5.1.4.2   Cancel-Job Response
  1490.  
  1491.        The following information is part of the Cancel Job Response:
  1492.  
  1493.          Status:
  1494.             Status information including error status
  1495.  
  1496.        5.1.5     Get-Attributes Operation
  1497.  
  1498.        The Get-Attributes operation allows client to obtain information from a
  1499.        Printer or Job object. The client supplies the set of attributes names
  1500.        and/or attribute group names that the requester is interested in as
  1501.        operation input parameters.  The Printer shall return a corresponding
  1502.        attribute list in the response with the appropriate attribute values
  1503.        filled in for each attribute (explicitly named or implicitly included in
  1504.        an attribute group) that the client supplied in the request.
  1505.  
  1506.  
  1507.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 26]
  1508.                         June 3, 1997, Expires December 3, 1997
  1509.  
  1510.  
  1511.  
  1512.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  1513.  
  1514.  
  1515.        5.1.5.1   Get-Attributes Request
  1516.  
  1517.        The client shall submit the Get-Attributes request to a Job URI or
  1518.        Printer URI.
  1519.  
  1520.        The following input parameters shall be part of the Get-Attributes
  1521.        Request:
  1522.  
  1523.          Document Format:
  1524.             The client shall supply this input parameter only when requesting
  1525.             attributes of the Printer object.  The Printer shall reject this
  1526.             request, if this input parameter is supplied for a Job object.
  1527.  
  1528.             This input parameter conditions the Printer attributes and values
  1529.             that might depend on the document format.  The Printer shall return
  1530.             only (1) those attributes that are implemented and (2) the
  1531.             attribute values that are supported for the specified document
  1532.             format.  By specifying the document format, the client can
  1533.             eliminate the attributes that are not implemented and values that
  1534.             are not supported for the document format that the client has or is
  1535.             able to generate.
  1536.  
  1537.             If the client omits this input parameter, the effect shall be the
  1538.             same as if the value of the Printer's document format attribute
  1539.             were supplied.  It is recommended that the client always supply a
  1540.             value for document-format, since the Printer's default value for
  1541.             document-format may be 'auto-sense', in which case the returned
  1542.             attributes and values are for the union of the document formats
  1543.             that the Printer supports in its 'auto-sense' support."
  1544.  
  1545.          Requested Attributes:
  1546.             An optional set of attribute names (without values) or attribute
  1547.             group names in whose values the requester is interested.  If the
  1548.             client omits this input parameter, the effect shall be the same as
  1549.             if the "all" attribute group were supplied.
  1550.  
  1551.        Attributes may be requested by name or by group name.  For Jobs, the
  1552.        attribute groups include:
  1553.  
  1554.          - 'job-template': the attributes specified in Section 6.3.1    Job
  1555.             Template Attributes.
  1556.          - 'job-description': the attributes specified in Section 6.3.2 Job
  1557.             Description Attributes.
  1558.  
  1559.        For Printers, the attribute groups include:
  1560.  
  1561.          - 'printer-job-template': the attributes specified in Section 6.5.1
  1562.                  Printer Job Template Attributes.
  1563.  
  1564.  
  1565.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 27]
  1566.                         June 3, 1997, Expires December 3, 1997
  1567.  
  1568.  
  1569.  
  1570.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  1571.  
  1572.  
  1573.          - 'printer-description': the attributes specified in Section 6.5.2
  1574.                  Printer Description  Attributes.
  1575.  
  1576.        There are also special groups:
  1577.  
  1578.          - 'none': no attributes of the specified object.  Note: none is
  1579.             primarily useful in Get-Jobs, but can be used as a "ping" with the
  1580.             Get-Attributes operation.
  1581.          - 'all': all attributes of the specified object
  1582.  
  1583.        5.1.5.2   Get-Attributes Response
  1584.  
  1585.        The Printer shall return the following output parameters as part of the
  1586.        Get-Attributes Response:
  1587.  
  1588.          Result Attributes:
  1589.             The requested attributes of the object with their current values,
  1590.             if the requester supplied any Requested Attributes.  If the request
  1591.             did not supply any attribute names, the Printer shall assume that
  1592.             the client is implicitly requesting the default group of "all" and
  1593.             shall return all attributes implemented for the specified Job or
  1594.             Printer object.
  1595.  
  1596.          Unimplemented Attributes:
  1597.             A list of attribute names which are unimplemented.
  1598.  
  1599.  
  1600.          Unknown:
  1601.             A list of attribute names which are unknown.
  1602.  
  1603.  
  1604.          Status:
  1605.             Status information including error status
  1606.  
  1607.        A Printer may choose, for security reasons, not to return all attributes
  1608.        that a client requests. It may even return none of the requested
  1609.        attributes. In such cases, the status returned is the same as if the
  1610.        Printer had returned all requested attributes. The client cannot tell by
  1611.        such a response whether the requested attribute was present or absent on
  1612.        the Printer.
  1613.  
  1614.        In response to a "Get-Attributes" (or a "Get-Jobs") operation the
  1615.        following requirements apply to the Printer:
  1616.  
  1617.          1. If the client supplies an attribute name in the Requested
  1618.             Attribute input parameter and that attribute is implemented by the
  1619.             Printer, the printer shall respond with all current values for that
  1620.             attribute.  If the value of an implemented attribute is unknown for
  1621.  
  1622.  
  1623.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 28]
  1624.                         June 3, 1997, Expires December 3, 1997
  1625.  
  1626.  
  1627.  
  1628.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  1629.  
  1630.  
  1631.             some reason, the Printer shall respond with the attribute name in
  1632.             the "unknown attribute list" response parameter.
  1633.  
  1634.          2. If the client supplies an attribute name in the Requested
  1635.             Attribute input parameter that attributed is not implemented by the
  1636.             Printer, the Printer shall respond with the attribute name in the
  1637.             "unimplemented attribute list" response parameter.
  1638.  
  1639.          3. If the client supplies an attribute group that is implemented by
  1640.             the Printer, the Printer shall respond with all current values for
  1641.             each implemented attribute in the group. It shall not respond for
  1642.             unimplemented attributes in the group. If the value of an attribute
  1643.             is unknown for some reason, the Printer shall respond with the
  1644.             attribute name in the "unknown attribute list" response parameter.
  1645.  
  1646.          4. If the client supplies an attribute group keyword that is not
  1647.             implemented, the Printer has no means for determining if it is an
  1648.             unimplemented attribute or attribute group.  In this case, the
  1649.             Printer assumes that it is an unimplemented attribute and responds
  1650.             as if it is an unimplemented attribute (the Printer responds with
  1651.             the attribute name in the "unknown attribute list" response
  1652.             parameter).
  1653.  
  1654.        5.1.6     Get-Jobs Operation
  1655.  
  1656.        The Get-Jobs operation allows a client to retrieve Printer attributes
  1657.        and a list of print jobs belonging to the target Printer object. A list
  1658.        of Job attribute names or attribute group names that the client is
  1659.        interested in seeing may be included in the request.
  1660.  
  1661.        This operation is like Get-Attributes, except that Get-Jobs operation
  1662.        returns attributes from more than one object.
  1663.  
  1664.        5.1.6.1   Get-Jobs Request
  1665.  
  1666.        The client shall submit the Get-Jobs request to a Printer URI.
  1667.  
  1668.        The following input parameters are part of the Get-Jobs Request:
  1669.  
  1670.          Job Owner
  1671.             This is the user-name.  If the value is non-null, then the
  1672.             requester wants only those jobs whose job-originating-owner is the
  1673.             same as the specified user-name.  If the value is null, then the
  1674.             requester wants all jobs.
  1675.  
  1676.          Limit
  1677.             This is an integer value which indicates a limit to the number of
  1678.             Jobs returned.  The limit is a "stateless limit" in that if the
  1679.  
  1680.  
  1681.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 29]
  1682.                         June 3, 1997, Expires December 3, 1997
  1683.  
  1684.  
  1685.  
  1686.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  1687.  
  1688.  
  1689.             limit is n then only the first n jobs are returned in the Get-Jobs
  1690.             Response; there is no mechanism to allow for the "next" n jobs.
  1691.             The limit applies across all Job States requested.  For example, if
  1692.             the limit if 50, and there are 75 jobs in the 'completed' state and
  1693.             25 in the 'pending state' and the client requests first 'completed
  1694.             jobs' and then 'pending' jobs, only the first 50 'completed' jobs
  1695.             are returned.  The other 25 'completed' jobs are not returned and
  1696.             neither are any of the 'pending' jobs returned.
  1697.  
  1698.          Job States
  1699.             A possibly empty set of job state values.  If the set is not empty,
  1700.             then the requester wants only those jobs whose job-state is the
  1701.             same as one of the specified job state values.   If this operation
  1702.             parameter has more than one value, the Printer SHALL return the
  1703.             jobs grouped by state with each group being in the same order as
  1704.             supplied by the client in this parameter.  Within each group, the
  1705.             jobs are ordered from oldest to newest with respect to completion
  1706.             time (either actual or expected).  For example, if the client
  1707.             requests all 'pending' and 'completed' jobs, first all jobs in the
  1708.             'pending' state are returned (ordered from oldest to newest) and
  1709.             then all jobs in the 'completed' state are returned (ordered from
  1710.             oldest to newest).  If the client request all 'completed' and
  1711.             'processing' jobs, first all jobs in the 'completed' state are
  1712.             returned (ordered from oldest to newest) and then all jobs in the
  1713.             'processing' state are returned (oldest to newest).  If the client
  1714.             does not supply this operation parameter, the value SHALL be
  1715.             assumed to be (by both the client and the Printer) first 'pending'
  1716.             and then 'processing'.
  1717.  
  1718.  
  1719.  
  1720.          Requested Job Attributes:
  1721.             A optional set of attribute names (without values) or attribute
  1722.             groups names in whose values the requester is interested from each
  1723.             of the jobs on the specified Printer.  The attribute group names
  1724.             are the same as for the Get-Attributes operation for the Job
  1725.             object.  If the client omits this input parameter, the effect shall
  1726.             be the same as if the 'none'  attribute group were supplied.
  1727.  
  1728.        5.1.6.2   Get-Jobs Response
  1729.  
  1730.        The Printer shall return the following output parameters as part of the
  1731.        Get-Jobs Response:
  1732.  
  1733.          Result Attributes:
  1734.             The result includes zero or more objects each with zero or more
  1735.             attributes.  Each Job is returned in chronological order.  This
  1736.  
  1737.  
  1738.  
  1739.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 30]
  1740.                         June 3, 1997, Expires December 3, 1997
  1741.  
  1742.  
  1743.  
  1744.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  1745.  
  1746.  
  1747.             order is explicitly defined to be: oldest to newest with respect to
  1748.             completion time, either actual or expected.
  1749.  
  1750.             If the client did not supply any Job attributes, the Printer shall
  1751.             assume that the client is implicitly requesting  the 'none' group
  1752.             (that is no Job attributes are returned, just the Job URI for each
  1753.             Job).
  1754.  
  1755.          Status
  1756.             Status information including error status
  1757.  
  1758.        A Printer may choose, for security reasons, not to return all attributes
  1759.        that a client requests. It may even return none of the requested
  1760.        attributes. In such cases, the status returned is the same as if the
  1761.        Printer had returned all requested attributes. The client cannot tell by
  1762.        such a response whether the requested attribute was present or absent on
  1763.        the Printer.
  1764.  
  1765.        5.2  Operation Status and Messages
  1766.  
  1767.          The Status code provides information on the results of a request.
  1768.          The Message provides a short textual description of the Status.  The
  1769.          Status is intended for use by automata and the Message is intended
  1770.          for the human user.  An IPP application (i.e. a browser, GUI, print
  1771.          driver or gateway) is not required to examine or display the Message.
  1772.  
  1773.        5.3  Status Codes (type2 keyword)
  1774.  
  1775.          Each Status is described below, including a description of which
  1776.          operation(s) it can follow and any meta-information required in the
  1777.          response.
  1778.  
  1779.          ISSUE: Keith's doc still need to go here.
  1780.  
  1781.        6.   Object Attributes
  1782.  
  1783.        This section describes the attributes with their corresponding syntaxes
  1784.        and values that are part of the IPP model. The sections below show the
  1785.        objects and their associated attributes which are included within the
  1786.        scope of this protocol.  Many of these attributes are derived from other
  1787.        relevant specifications:
  1788.  
  1789.          - ISO/IEC 10175 DPA (Final, June 1996)
  1790.          - RFC 1759 Printer MIB (Proposed Standard, May 1995)
  1791.          - Internet-Draft: Printer MIB (Draft Standard in progress, December
  1792.             1996)
  1793.          - Internet-Draft: Job Monitoring MIB (I-D in progress, March 1997)
  1794.  
  1795.  
  1796.  
  1797.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 31]
  1798.                         June 3, 1997, Expires December 3, 1997
  1799.  
  1800.  
  1801.  
  1802.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  1803.  
  1804.  
  1805.        Each attribute is uniquely identified in this document using a "keyword"
  1806.        in the section header describing that attribute.  A keyword is a
  1807.        sequence of characters (length of  1 to 255) which consists of just
  1808.        letters, digits, hyphen ("-"), and underscore ("_").  With these
  1809.        restrictions, there will be a straight forward encoding of these
  1810.        keywords onto real values in the protocol specification.  Not only are
  1811.        attributes uniquely identified with keywords, some attributes take on a
  1812.        syntax which is a set of keywords.  This set of keywords represents the
  1813.        domain of the attribute.
  1814.  
  1815.        6.1  Attribute Syntaxes
  1816.  
  1817.        The following table shows the basic syntax types that a client and
  1818.        server shall be able to handle.
  1819.  
  1820.  
  1821.        Table 1 - Attribute Syntaxes
  1822.  
  1823.             Basic Type         Description       Comments
  1824.  
  1825.             text               a sequence of     For free form human
  1826.                                characters;       readable text
  1827.                                length: 0 to      intended for human
  1828.                                4095;             consumption.
  1829.                                characters: any
  1830.  
  1831.             name               a sequence of     For referencing some
  1832.                                characters;       object via a user-
  1833.                                length: 1 to      friendly string,
  1834.                                255;              such as a Printer
  1835.                                characters: any   name, a document
  1836.                                                  name, a user name,
  1837.                                                  or a host name.  May
  1838.                                                  include the SPACE
  1839.                                                  character.
  1840.  
  1841.                                                  Note: The protocol
  1842.                                                  may need to provide
  1843.                                                  means to quote the
  1844.                                                  SPACE character if
  1845.                                                  the protocol uses
  1846.                                                  SPACE for other
  1847.                                                  purposes.
  1848.  
  1849.             fileName           a sequence of     For referencing some
  1850.                                characters;       file.  The limit is
  1851.                                length: 1 to      the same as POSIX
  1852.                                1024;
  1853.  
  1854.  
  1855.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 32]
  1856.                         June 3, 1997, Expires December 3, 1997
  1857.  
  1858.  
  1859.  
  1860.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  1861.  
  1862.  
  1863.             Basic Type         Description       Comments
  1864.  
  1865.                                characters: any   and NT.
  1866.  
  1867.             keyword            a sequence of
  1868.                                characters;       identifiers of
  1869.                                length: 1 to      entities in the
  1870.                                255;              abstract protocol
  1871.                                characters:       (specified in this
  1872.                                letters, digits,  document).  These
  1873.                                hyphen ("-"),     entities can be
  1874.                                                  For semantic
  1875.                                underscore ("_")  attribute names or
  1876.                                                  values of
  1877.                                                  attributes,  When a
  1878.                                                  keyword is used to
  1879.                                                  represent an
  1880.                                                  attribute (its
  1881.                                                  name), it must be
  1882.                                                  unique within the
  1883.                                                  full scope of IPP
  1884.                                                  objects and
  1885.                                                  attributes.  When a
  1886.                                                  keyword is used to
  1887.                                                  represent a value of
  1888.                                                  an attribute, it
  1889.                                                  must be unique just
  1890.                                                  within the scope of
  1891.                                                  that attribute.
  1892.                                                  That is, a keyword
  1893.                                                  can not be used for
  1894.                                                  two different values
  1895.                                                  of the same
  1896.                                                  attribute to mean
  1897.                                                  two different
  1898.                                                  semantic ideas.
  1899.                                                  However, the same
  1900.                                                  keyword can be used
  1901.                                                  across two or more
  1902.                                                  attributes,
  1903.                                                  representing
  1904.                                                  different semantic
  1905.                                                  ideas for each
  1906.                                                  attribute.
  1907.  
  1908.             uri                a sequence of     Universal Resource
  1909.                                characters as     Identifier
  1910.                                defined in
  1911.                                rfc1738 and
  1912.  
  1913.  
  1914.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 33]
  1915.                         June 3, 1997, Expires December 3, 1997
  1916.  
  1917.  
  1918.  
  1919.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  1920.  
  1921.  
  1922.             Basic Type         Description       Comments
  1923.  
  1924.                                rfc1808
  1925.  
  1926.             uriScheme          a sequence of     "http" for HTTP
  1927.                                characters        schemed URIs (e.g.,
  1928.                                representing the  http://...).  "ftp"
  1929.                                URI Scheme        for FTP schemed URIs
  1930.                                                  (e.g., ftp://...).
  1931.  
  1932.             locale             a standard        ISSUE: What standard
  1933.                                identifier for    values will be used
  1934.                                language and      for locale?
  1935.                                character set
  1936.  
  1937.             octetString        a sequence of     Used for opaque
  1938.                                octets            data, such as the
  1939.                                                  document-content.
  1940.  
  1941.             boolean            two values of     like an keywordSet,
  1942.                                'true' and        but there are only
  1943.                                'false'           two values. Note: An
  1944.                                                  application might
  1945.                                                  use a checkbox for
  1946.                                                  such a value.
  1947.  
  1948.             integer            an integer value  each attribute
  1949.                                that is in the    specifies the range
  1950.                                range from -      constraint
  1951.                                2**31 to 2**31 -  explicitly.
  1952.                                1
  1953.  
  1954.  
  1955.             dateTime           a value that      absolute date and
  1956.                                holds the date    time
  1957.                                and time to the
  1958.                                nearest second.
  1959.  
  1960.             seconds            a non-negative    a relative time
  1961.                                integer with
  1962.                                implicit units
  1963.                                of seconds
  1964.  
  1965.             milliseconds       a non-negative    a relative time
  1966.                                interger with
  1967.                                implicit units
  1968.                                of milliseconds
  1969.  
  1970.  
  1971.  
  1972.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 34]
  1973.                         June 3, 1997, Expires December 3, 1997
  1974.  
  1975.  
  1976.  
  1977.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  1978.  
  1979.  
  1980.             Basic Type         Description       Comments
  1981.  
  1982.             integerUnits       an integer with   an integer value
  1983.                                explicit units    expressed in units
  1984.  
  1985.                                                  ISSUE: we have two
  1986.                                                  types with implicit
  1987.                                                  units and one with
  1988.                                                  explicit units where
  1989.                                                  the units are
  1990.                                                  specific for one
  1991.                                                  attribute:
  1992.                                                  "printer-speed".
  1993.  
  1994.             1setOf  X          1 or more values  for sets of values
  1995.                                of type X.
  1996.  
  1997.             rangeOf  X         a range of value  for a range of
  1998.                                of type X         values, such as
  1999.                                                  integers
  2000.  
  2001.  
  2002.  
  2003.        6.1.1     Attribute Extensibility
  2004.  
  2005.          This document uses prefixes to the keyword basic syntax type in order
  2006.          to communicate extra information to the reader through its name. This
  2007.          extra information need not be represented in an implementation
  2008.          because it is unimportant to a client or Printer.  The table below
  2009.          describes the prefixes and their meaning.
  2010.  
  2011.          ISSUE: There are some references to the Printer Working Group (PWG).
  2012.          How do we describe in this document the process for the PWG to
  2013.          approve type 2 extensions?
  2014.  
  2015.  
  2016.  
  2017.             Basic       Prefix  Comments
  2018.             Type
  2019.  
  2020.             keyword     type1   someone must revise the IPP standard
  2021.                                 to add a new name.  No private names
  2022.                                 are allowed.
  2023.  
  2024.             keyword     type2   implementers can, at any time, add new
  2025.                                 values by proposing them to the PWG
  2026.                                 for registration (or an IANA-appointed
  2027.                                 registry advisor after the PWG is no
  2028.  
  2029.  
  2030.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 35]
  2031.                         June 3, 1997, Expires December 3, 1997
  2032.  
  2033.  
  2034.  
  2035.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  2036.  
  2037.  
  2038.             Basic       Prefix  Comments
  2039.             Type
  2040.  
  2041.                                 longer certified) where they are
  2042.                                 reviewed for approval.  IANA keeps the
  2043.                                 registry.  Implementers can support
  2044.                                 private (unregistered) with a suitable
  2045.                                 distinguishing prefix, such as -xxx-
  2046.                                 where xxx is the company name
  2047.                                 registered with IANA for use in domain
  2048.                                 names.
  2049.  
  2050.             keyword     type3   implementers can, at any time, add new
  2051.                                 values by submitting a registration
  2052.                                 request directly to IANA, no PWG or
  2053.                                 IANA-appointed registry advisor review
  2054.                                 is required.  Implementers can support
  2055.                                 private (unregistered) names with a
  2056.                                 suitable distinguishing prefix, such
  2057.                                 as -xxx- where xxx is the company name
  2058.                                 registered with IANA for use in domain
  2059.                                 names.
  2060.  
  2061.             keyword     type4   system administrators can, at any
  2062.                                 time, add new installation-defined
  2063.                                 names to a local system. Care should
  2064.                                 be taken by the administrator to see
  2065.                                 that keywords do not conflict with
  2066.                                 other keywords defined by the standard
  2067.                                 or as defined by the implementing
  2068.                                 product. There is no registration or
  2069.                                 approval procedure for type 4
  2070.                                 keywords.
  2071.  
  2072.                                 ISSUE: Since the standard specifies
  2073.                                 some of the type 4 values, shouldn't
  2074.                                 it be possible to register additional
  2075.                                 type 4 values after the standard is
  2076.                                 approved?
  2077.  
  2078.  
  2079.  
  2080.        Note: This standard defines keyword values for all of the above types.
  2081.  
  2082.        6.2  Job Template Attributes
  2083.  
  2084.        Job Template attributes describe job processing behavior.  Take for
  2085.        example, a generic Job Template attribute called "xxx":
  2086.  
  2087.  
  2088.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 36]
  2089.                         June 3, 1997, Expires December 3, 1997
  2090.  
  2091.  
  2092.  
  2093.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  2094.  
  2095.  
  2096.          1. "xxx" is optionally supplied by the client in a create request.
  2097.             If "xxx" is supplied, the client is specifying that the Printer
  2098.             will apply a specific job processing behavior to this job while
  2099.             processing the Job.  When "xxx" is not supplied, the client expects
  2100.             the Printer will apply the default job processing behavior.
  2101.  
  2102.          2. "xxx-supported" is a Printer attribute that describes what is
  2103.             behaviors are supported by that Printer. "xxx-supported" is a
  2104.             CONDITIONALLY MANDATORY  attribute which means that the Printer
  2105.             only implements the attribute if it is capable of realizing one or
  2106.             more of the behaviors associated with the attribute and its values.
  2107.             A client can query the Printer and find out what behaviors are
  2108.             supported by inspecting at the values in the "xxx-supported"
  2109.             attribute.
  2110.  
  2111.          3. The Printer also implements a default value attribute named "xxx".
  2112.             This default value attribute describes what will be done when no
  2113.             other job processing information is supplied by the client (either
  2114.             explicitly as an IPP attribute in the create request or implicitly
  2115.             as an embedded instruction within the job data).  Along with the
  2116.             supported attribute, the default value attribute is also
  2117.             CONDITIONALLY MANDATORY.  However, if the Printer implements the
  2118.             "xxx-supported" attribute, the Printer MUST implement the
  2119.             corresponding default value attribute and vice versa.
  2120.  
  2121.          4. The Printer OPTIONALLY implements the "xxx-available" attribute.
  2122.             This attribute describes a state of readiness for each supported
  2123.             attribute.  The supported and available attributes have the same
  2124.             number of attributes and are ordered so that there is a set of
  2125.             ordered value pairs between the two attributes.  The availability
  2126.             state of a supported attribute value indicates the level of effort
  2127.             required by the Printer to actually use resource indicated by the
  2128.             supported value. The following values are used in the "xxx-
  2129.             available" attributes:
  2130.  
  2131.             'ready' - the resource can be used by a Job without human
  2132.               intervention (the resource is not exhausted)
  2133.             'not-ready' - the use of the resource requires human intervention
  2134.               (the resource may be exhausted or not automatically available)
  2135.  
  2136.             Note: The "xxx-available" attribute only applies to the "media" and
  2137.             "finishings" attributes.
  2138.  
  2139.          5. If a client application wishes to present an end user with a list
  2140.             of supported and default values from which to choose, the client
  2141.             program should query the supported, default values, and possibly
  2142.             the available attributes.  The values that the client then sends in
  2143.             the create request will all fall within the supported values at the
  2144.  
  2145.  
  2146.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 37]
  2147.                         June 3, 1997, Expires December 3, 1997
  2148.  
  2149.  
  2150.  
  2151.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  2152.  
  2153.  
  2154.             Printer.  When querying the Printer, the client MAY enumerate each
  2155.             attribute by name in the Get-Attributes Request, or the client MAY
  2156.             just name the "printer-job-template" group in order to get the
  2157.             complete set of supported, default value, and available attributes
  2158.             which are implemented.
  2159.  
  2160.        The "job-priority" attribute is an example of a Job Template attribute.
  2161.        It is an integer in the range from 1 to 100.  A client can query the
  2162.        Printer for the "job-priority-supported" attribute and the "job-
  2163.        priority" default value attribute.  The supported attribute contains a
  2164.        set of supported priority values (a range).  The default value attribute
  2165.        contains job priority value that will be used for a new job if the
  2166.        client does not supply one in the create request.  If the client does
  2167.        supply the "job-priority" attribute, the Printer validates the value to
  2168.        make sure that it falls within the range of supported values.  If the
  2169.        client-supplied value is supported, the Job object is created and the
  2170.        "job-priority" attribute is populated with that value.  The Job object,
  2171.        when queried, returns the value supplied by the client.  If the client
  2172.        does not supply a "job-priority" value in the create request, the Job
  2173.        object is created, but no "job-priority" attribute is implemented for
  2174.        the Job.  The client queries the Printer's default value "job-priority"
  2175.        value to find out at what priority the job will be processed.
  2176.  
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.  
  2183.  
  2184.  
  2185.        The following table summarize the names, relationships, and conformance
  2186.        requirements for all Job Template attributes.  The following general
  2187.        rules apply to implementation requirements:
  2188.  
  2189.          1. In a create request, all Job Template attributes are OPTIONAL.
  2190.  
  2191.          2. In a Printer Object, all supported attributes are CONDITIONALLY
  2192.             MANDATORY.
  2193.  
  2194.          3. All Printer default value attributes are CONDITIONALLY MANDATORY.
  2195.             However, if the supported attribute is implemented then the default
  2196.             value attribute MUST be implemented and vice versa.
  2197.  
  2198.          4. All "available" attributes are OPTIONAL.
  2199.  
  2200.        The table only shows exceptions to the above rules.   The first column
  2201.        of the table (Job) shows the name and syntax for each Job Template
  2202.  
  2203.  
  2204.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 38]
  2205.                         June 3, 1997, Expires December 3, 1997
  2206.  
  2207.  
  2208.  
  2209.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  2210.  
  2211.  
  2212.        attribute in the Job object (in the create request, the same name and
  2213.        syntax is used).  The next three columns show the name and syntax for
  2214.        each Job Template attribute in the Printer object (the default value
  2215.        attribute, the supported attribute, and the available attribute).  A
  2216.        "No" in the table means the Printer SHALL NOT implement the attribute.
  2217.  
  2218.  
  2219.  
  2220.  
  2221.  
  2222.               Job            Printer           Printer          Printer
  2223.                           Default Value       Supported        Available
  2224.  
  2225.  
  2226.  
  2227.        job-name          No               No                No
  2228.        (name, MAN))
  2229.  
  2230.        job-sheets        job-sheets       job-sheets-       No
  2231.        (type4 keyword)   (type4 keyword)  supported
  2232.                                           (1setOf type4
  2233.                                           keyword)
  2234.  
  2235.        notificaiton-     notification-                      No
  2236.        events            events           events
  2237.                          (1setOf type2    (1setOf type2
  2238.                                           notification-
  2239.        (1setOf type2
  2240.        keyword)          keyword)         keyword)
  2241.  
  2242.        notification-     No               notification-     No
  2243.        addresses                          addresses-
  2244.        (1setOf uri)                       supported
  2245.                                           (1setOf uri
  2246.                                           scheme)
  2247.  
  2248.        job-priority      job-priority     job-priority-     No
  2249.        (int)             (int)            supported
  2250.                                           (rangeOf int)
  2251.  
  2252.        job-hold-until    job-hold-until   job-hold-until-   No
  2253.        (type4 keyword)   (type4 keyword)  supported
  2254.                                           (1setOf type4
  2255.                                           keyword)
  2256.  
  2257.        multiple-         multiple-        multiple-         No
  2258.        documents-are     documents-are    documents-are-
  2259.        (type2 keyword)   (type2 keyword)  supported
  2260.                                           (1setOf type2
  2261.  
  2262.  
  2263.  
  2264.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 39]
  2265.                         June 3, 1997, Expires December 3, 1997
  2266.  
  2267.  
  2268.  
  2269.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  2270.  
  2271.  
  2272.  
  2273.  
  2274.  
  2275.               Job            Printer           Printer          Printer
  2276.                           Default Value       Supported        Available
  2277.  
  2278.  
  2279.  
  2280.                                           keyword)
  2281.  
  2282.        best-effort       best-effort      best-effort-      No
  2283.        (type2 keyword)   (type2 keyword,  supported
  2284.                          MAN)             (1setOf type2
  2285.                                           keyword, MAN)
  2286.  
  2287.        media             media            media-supported   media-available
  2288.        (type4 keyword)   (type4 keyword)  (1setOf type2     (1setOf avail
  2289.                                           keyword)          keyword)
  2290.  
  2291.        number-up         number-up        number-up-
  2292.        (type3 keyword)   (type3 keyword)  supported
  2293.                                           (1setOf type3
  2294.                                           keyword)
  2295.  
  2296.        sides             sides            sides-supported
  2297.        (type2 keyword)   (type2 keyword)  (1setOf type2
  2298.                                           keyword)
  2299.  
  2300.        printer-          printer-         printer-
  2301.        resolution        resolution       resolution-
  2302.        (type2 keyword)   (type2 keyword)  supported
  2303.                                           (1setOf type2
  2304.                                           keyword)
  2305.  
  2306.        print-quality     print-quality    print-quality -
  2307.        (type2 keyword)   (type2 keyword)  supported
  2308.                                           (1setOf type2
  2309.                                           keyword)
  2310.  
  2311.        finishings        finishings       finishings-       finishings-
  2312.        (setOf type2      (setOf type2     supported         available
  2313.        keyword)          keyword)         (setOf type2      (setOf avail
  2314.                                           keyword)          keyword)
  2315.  
  2316.        copies            copies           copies-supported  No
  2317.        (int)             (int)            (rangeOf int)
  2318.  
  2319.  
  2320.  
  2321.  
  2322.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 40]
  2323.                         June 3, 1997, Expires December 3, 1997
  2324.  
  2325.  
  2326.  
  2327.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  2328.  
  2329.  
  2330.  
  2331.  
  2332.  
  2333.               Job            Printer           Printer          Printer
  2334.                           Default Value       Supported        Available
  2335.  
  2336.  
  2337.  
  2338.        compression       compression      compression-      No
  2339.        (type3 keyword)   (type3 keyword)  supported
  2340.                                           (1setOf type3
  2341.                                           keyword)
  2342.  
  2343.        job-k-octets      No               job-k-octets-
  2344.                                           supported
  2345.                                                             No
  2346.        (int)
  2347.                                           (rangeOf int)
  2348.  
  2349.        job-impressions   No               job-impressions-  No
  2350.        (int)                              supported
  2351.                                           (rangeOf int)
  2352.  
  2353.        job-media-sheets  No               job-media-        No
  2354.        (int)                              sheets-supported
  2355.                                           (rangeOf int)
  2356.  
  2357.  
  2358.  
  2359.  
  2360.  
  2361.  
  2362.  
  2363.  
  2364.  
  2365.  
  2366.        6.2.1     job-name (name)
  2367.  
  2368.        This attribute defines the name of the job.  It is a name that is more
  2369.        user friendly than the job-URI.
  2370.  
  2371.        If "job-name" is not supplied in the in the create request, the Printer,
  2372.        on creation of the Job, shall generate a name which is the name of the
  2373.        first document in the job. This name comes from the "document-name"
  2374.        attribute or "document-URI" attribute depending on which attribute is
  2375.        supplied in the Create-Job Request for the first document.  If "job-
  2376.        name" is supplied in the Create-Job Request, the Printer uses its value
  2377.        as the name of the created Job.
  2378.  
  2379.  
  2380.  
  2381.  
  2382.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 41]
  2383.                         June 3, 1997, Expires December 3, 1997
  2384.  
  2385.  
  2386.  
  2387.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  2388.  
  2389.  
  2390.        6.2.2     job-sheets (type4 keyword)
  2391.  
  2392.        This attribute determines which of any banner page(s) shall be printed
  2393.        with a job.
  2394.  
  2395.        Standard values are:
  2396.  
  2397.          'none': no job sheet is printed
  2398.          'standard': a site specific standard job sheet is printed
  2399.          extensions: names the specific job sheet (banner page)
  2400.  
  2401.        To force no job sheets, the system administrator SHALL set the only
  2402.        supported value to 'none'..  To force the use of banner pages, the
  2403.        supported values shall not include 'none'.  If a client requests 'none'
  2404.        in the create request, the request is rejected.
  2405.  
  2406.        6.2.3     notification-events (1setOf type2 keyword)
  2407.  
  2408.        This attribute specifies the events for which the end user desires some
  2409.        sort of notification.  The "notification-addresses" attribute is used to
  2410.        describe the destination addresses for these events.
  2411.  
  2412.        Standard values are:
  2413.  
  2414.          'none': the Printer shall not notify
  2415.          'all': the Printer shall notify when any of event occurs.
  2416.          'job-completion':  the Printer shall notify when the job containing
  2417.             this attribute completes with or without errors.
  2418.          'job-canceled':  the Printer shall notify when the job containing
  2419.             this attribute is canceled by the end-user or by the operator, or
  2420.             aborts before completion.
  2421.          'job-problems':  the Printer shall notify when this job has a problem
  2422.             while this job is printing. Problems include any of the "job-state-
  2423.             reasons" or "printer-state-reason" values
  2424.          'printer-problems': the Printer shall notify when any job, including
  2425.             this job, is affected by a Printer problem (the printer has moved
  2426.             to the stopped state and there is a reason in the printer-state-
  2427.             reasons attribute) while this job is waiting to print or printing.
  2428.             Problems include any of the "job-state-reasons" or "printer-state-
  2429.             reason" values
  2430.  
  2431.        6.2.4     notification-addresses (1setOf uri)
  2432.  
  2433.        This attribute describes both where (the address) and how (the mechanism
  2434.        for delivery )  notification events are to be delivered. The Printer
  2435.        shall use this attribute as the set of addresses and methods for sending
  2436.        messages when an event occurs that the end user (job submitter) has
  2437.        registered an interest in.
  2438.  
  2439.  
  2440.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 42]
  2441.                         June 3, 1997, Expires December 3, 1997
  2442.  
  2443.  
  2444.  
  2445.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  2446.  
  2447.  
  2448.        Standard uri scheme values are:
  2449.  
  2450.          'mailto': email is used
  2451.          'http': an HTTP  method is used to add HTML formatted events to the
  2452.             end of the specified HTML file.
  2453.          'ftp': FTP is used to append a record at the end of a specified text
  2454.          file.
  2455.  
  2456.        6.2.5     job-priority (integer(1:100))
  2457.  
  2458.        This attribute specifies a priority for scheduling the print-job. A
  2459.        higher value specifies a higher priority. The value 1 is defined to
  2460.        indicate the lowest possible priority. The value 100 is defined to
  2461.        indicate the highest possible priority. Priority is expected to be
  2462.        evenly or "normally" distributed across this range.  Among those jobs
  2463.        that are ready to print, a Printer shall print all jobs with a priority
  2464.        value of n before printing those with a priority value of n-1 for all n.
  2465.        The mapping of vendor-defined priority over this range is
  2466.        implementation-specific.
  2467.  
  2468.        6.2.6     job-hold-until (type4 keyword)
  2469.  
  2470.        This job attribute specifies the named time period during which the Job
  2471.        print job shall become a candidate for printing.
  2472.  
  2473.        Standard values for named time periods are:
  2474.  
  2475.          'no-hold': immediately, if there are not other reasons to hold the
  2476.             job.
  2477.          'day-time': during the day.
  2478.          'evening': evening
  2479.          'night': night
  2480.          'weekend': weekend (Saturday or Sunday)
  2481.          'second-shift': second-shift
  2482.          'third-shift': third-shift (after midnight)
  2483.  
  2484.  
  2485.        An administrator shall associate allowable print times with a named time
  2486.        period (by means outside IPP 1.0).  An administrator is encouraged to
  2487.        pick names that suggest the type of time period.
  2488.  
  2489.        If the value of this attribute specifies a time period that is in the
  2490.        future, the Printer shall add the 'job-hold-until-specified' value to
  2491.        the job's "job-state-reasons" attribute and shall not schedule the
  2492.        print-job for printing until the specified time-period arrives.  When
  2493.        the specified time period arrives, the Printer shall remove the 'job-
  2494.        hold-until-specified' value from the job's "job-state-reason attribute"
  2495.  
  2496.  
  2497.  
  2498.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 43]
  2499.                         June 3, 1997, Expires December 3, 1997
  2500.  
  2501.  
  2502.  
  2503.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  2504.  
  2505.  
  2506.        and, if no other reasons remain, shall consider the job as a candidate
  2507.        for processing.
  2508.  
  2509.        If this job attribute value is the named value "'no-hold'", or the time
  2510.        period has already started , the job shall be a candidate for processing
  2511.        immediately.
  2512.  
  2513.        6.2.7     multiple-documents-are (type2 keyword)
  2514.  
  2515.        This job attribute is relevant only if a job consists of two or more
  2516.        documents. It controls finishing operations, job-sheet placement, and
  2517.        the order of documents when the copies attribute exceeds 1.
  2518.  
  2519.        Standard values are:
  2520.  
  2521.          'single-document': If the files for the job are a and b, then files a
  2522.             and b are treated as a single document for finishing operations.
  2523.             Also, there will be no slip sheets between files a and b. If more
  2524.             than one copy is made, the ordering shall be a, b, a, b, ....
  2525.          'separate-documents-uncollated-copies': If the files for the job are
  2526.             a and b, then each file is treated as a single document for
  2527.             finishing operations. Also, a client may specify that a slip sheet
  2528.             be placed between files a and b.  If more than one copy is made,
  2529.             the ordering shall be a, a, b, b, ....
  2530.          'separate-documents-collated-copies': If the files for the job are a
  2531.             and b, then each file is treated as a single document for finishing
  2532.             operations. Also, a client may specify that a slip sheet be placed
  2533.             between files a and b. If more than one copy is made, the ordering
  2534.             shall be a, b, a, b, ....
  2535.  
  2536.  
  2537.        Both of the 'separate-xxx' values force each new document to start on a
  2538.        new media sheet.
  2539.  
  2540.        6.2.8     best-effort (type2 keyword)
  2541.  
  2542.        This attribute determines what to do if there is a conflict between what
  2543.        a client requests and what a Printer supports.
  2544.  
  2545.        Standard values for this attribute are:
  2546.  
  2547.          - 'shall-honor-ipp-attributes': If a Printer supports this value and
  2548.             a client requests this value, the Printer guarantees that all IPP
  2549.             attribute values take precedence over embedded instructions in the
  2550.             job data (the PDL of the job's documents).
  2551.          - 'should-honor-ipp-attributes': If a Printer supports this value,
  2552.             and a client requests this value, the Printer should try to make
  2553.  
  2554.  
  2555.  
  2556.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 44]
  2557.                         June 3, 1997, Expires December 3, 1997
  2558.  
  2559.  
  2560.  
  2561.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  2562.  
  2563.  
  2564.             sure that IPP attribute values take precedence over embedded PDL
  2565.             instructions, however there is no guarantee
  2566.  
  2567.        The client supplies Job Template attributes in the create request to
  2568.        affect the rendering, production and finishing of the documents in the
  2569.        job.  Similar types of instructions may also be contained in the
  2570.        document to be printed, that is, within the Page Description Language
  2571.        (PDL) of the document data.  If there is a conflict between the value of
  2572.        one of these attributes, and a corresponding instruction in the document
  2573.        (either implicit or explicit), it is desireable that the value of the
  2574.        attribute shall take precedence over the document instruction.  Many of
  2575.        these job template attributes provides a client with a way to request
  2576.        some feature at print time that might not have been embedded within the
  2577.        document data when the document was created.  Job template attribute
  2578.        also provides a client with a way to override a feature at print time
  2579.        that was embedded within the document data when the document was
  2580.        created.  Note: until companies that supply interpreters for PDLs, such
  2581.        as PostScript and PCL allow a way to specify overrides for internal job
  2582.        production instructions, a Printer might not be able to implement these
  2583.        attributes for some PDLs.
  2584.  
  2585.        In order to solve this problem, the IPP Printer implements the MANDATORY
  2586.        best-effort-supported" attribute.  If the value of this attribute is
  2587.        'shall-honor-ipp-attributes', the implementation MUST guarantee that the
  2588.        IPP attribute values take precedence over any related job processing
  2589.        instructions in the PDL Job's document data.  This can be done by
  2590.        modifying the interpreter within the output device itself to understand
  2591.        IPP attributes, or by mergeing theses Job Template attributes directly
  2592.        into the document data, or in any other implementation specific manner.
  2593.        In any case, the semantics of 'shall-honor-ipp-attributes' MUST be
  2594.        preserved.
  2595.  
  2596.        Note: Since 'should-honor-ipp-attributes' does not offer any type of
  2597.        guarantee, a Printer may not do a very "good" job of implementing the
  2598.        semantics of "should", but it would still be a conforming
  2599.        implementation.
  2600.  
  2601.        This "best-effort" attribute has nothing to do with conflict between
  2602.        what a Printer supports and what an IPP client requests.  If there is
  2603.        such a conflict, the Printer shall reject the create request.  A client
  2604.        SHOULD query the printer to find out what is supported before supplying
  2605.        specific values in a create request.
  2606.  
  2607.        6.2.9     media (type4 keyword)
  2608.  
  2609.        This job attribute identifies the medium that the Printer shall use for
  2610.        all pages of the document regardless of what media are specified within
  2611.        the document.
  2612.  
  2613.  
  2614.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 45]
  2615.                         June 3, 1997, Expires December 3, 1997
  2616.  
  2617.  
  2618.  
  2619.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  2620.  
  2621.  
  2622.        The values for medium include medium-names, medium-sizes, input-trays
  2623.        and electronic forms so that one attribute specifies the media. If a
  2624.        printer allows a client to specify a medium name as the value of this
  2625.        attribute, such a medium name implicitly selects an input-tray that
  2626.        contains the specified medium.  If a printer allows a client to specify
  2627.        a medium size as the value of this attribute, such a medium size
  2628.        implicitly selects a medium name which in turn implicitly selects an
  2629.        input-tray that contains the medium with the specified size.  If a
  2630.        printer allows a client to specify an input-tray as the value of this
  2631.        attribute, such an input-tray implicitly selects the medium that is in
  2632.        that input-tray at the time the job prints. This case includes manual-
  2633.        freed input-trays.  If a printer allows a client to specify an
  2634.        electronic form as the value of this attribute, such an electronic form
  2635.        implicitly selects a medium-name which in turn implicitly selects an
  2636.        input-tray that contains the medium specified by the electronic form.
  2637.        The electronic form also implicitly selects an image that the Printer
  2638.        shall merge with the data from the document as its prints each page.
  2639.  
  2640.        Standard values are (taken from ISO DPA and the Printer MIB):
  2641.  
  2642.          default:
  2643.          iso-a4-white:
  2644.          ...
  2645.  
  2646.        6.2.10    number-up (type3 keyword)
  2647.  
  2648.        This job attribute specifies the number of source page-images to impose
  2649.        upon a single side of an instance of a selected medium.
  2650.  
  2651.        Standard values are:
  2652.  
  2653.          'none': The Printer shall not include any embellishments and shall
  2654.             place one logical page on a single side of an instance of the
  2655.             selected medium without any translation, scaling, or rotation.
  2656.          'one': The Printer shall place one logical page on a single side of
  2657.             an instance of the selected medium but is allowed to add
  2658.             embellishments or some sort of translation, scaling, or rotation.
  2659.          'two':
  2660.          'four':
  2661.  
  2662.        This attribute primarily controls the translation, scaling and rotation
  2663.        of page images, but a site may choose to add embellishments, such as
  2664.        borders to each logical page.
  2665.  
  2666.        6.2.11    sides (type2 keyword)
  2667.  
  2668.        This attribute specifies how source page-images are to be imposed upon
  2669.        the sides of an instance of a selected medium.
  2670.  
  2671.  
  2672.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 46]
  2673.                         June 3, 1997, Expires December 3, 1997
  2674.  
  2675.  
  2676.  
  2677.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  2678.  
  2679.  
  2680.        The standard values are:
  2681.  
  2682.          'one-sided': imposes each consecutive source page-image upon the same
  2683.             side of consecutive media sheets.
  2684.          'two-sided-long-edge': imposes each consecutive pair of source page-
  2685.             image upon front and back sides of consecutive media sheets, such
  2686.             that the orientation of each pair of source-pages on the medium
  2687.             would be correct for the reader as if for binding on the long edge.
  2688.             This imposition is sometimes called "duplex".
  2689.          'two-sided-short-edge': imposes each consecutive pair of source page-
  2690.             image upon front and back sides of consecutive media sheets, such
  2691.             that the orientation of each pair of source-pages on the medium
  2692.             would be correct for the reader as if for binding on the short
  2693.             edge.  This imposition is sometimes called "tumble" or "head-to-
  2694.             toe".
  2695.  
  2696.        'two-sided-long-edge' and 'two-sided-short-edge' work the same for
  2697.        portrait or landscape.  That is, "head-to-toe" is "tumble" in portrait
  2698.        but "duplex" in landscape.  "head-to-head" also switches between
  2699.        "duplex" and "tumble" when using portrait and landscape modes.
  2700.  
  2701.        6.2.12    printer-resolution (type2 keyword)
  2702.  
  2703.        This job attribute specifies the resolution that the Printer should use.
  2704.  
  2705.        The values are type2 keywords which represent single integers or pair of
  2706.        integers. The latter are to specify the resolution when the x and y
  2707.        dimensions differ. When two integers are specified, the first is in the
  2708.        x direction, i.e., in the direction of the shortest dimension of the
  2709.        medium, so that the value is independent of whether the printer feeds
  2710.        long edge or short edge first.
  2711.  
  2712.        The standard values are:
  2713.  
  2714.          normal:
  2715.          res-100:
  2716.          res-300x300:
  2717.          ...
  2718.  
  2719.  
  2720.        6.2.13    print-quality (type2 keyword)
  2721.  
  2722.        This job attribute specifies the print quality that the Printer should
  2723.        use.
  2724.  
  2725.        The standard values are:
  2726.  
  2727.          draft: lowest quality available on the printer
  2728.  
  2729.  
  2730.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 47]
  2731.                         June 3, 1997, Expires December 3, 1997
  2732.  
  2733.  
  2734.  
  2735.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  2736.  
  2737.  
  2738.          normal: normal or intermediate quality on the printer
  2739.          high: highest quality available on the printer
  2740.  
  2741.  
  2742.        6.2.14    copies (integer(1:2**31 - 1))
  2743.  
  2744.        This job attribute specifies the number of copies of the job to be
  2745.        printed.  Note: The effect of this attribute on jobs and documents is
  2746.        controlled by the multiple-files-are job attribute.
  2747.  
  2748.  
  2749.  
  2750.        6.2.15    finishings (1setOf type2 keyword)
  2751.  
  2752.        This job attribute identifies the finishing operation that the Printer
  2753.        should apply to each copy of each printed document in the job where the
  2754.        definition of a copy is controlled by the "multiple-documents-are" Job
  2755.        attributes.
  2756.  
  2757.        Standard values are:
  2758.  
  2759.          none:
  2760.          staple:
  2761.          ...
  2762.  
  2763.  
  2764.        6.2.16    compression (type3 keyword)
  2765.  
  2766.        This attribute identifies compression algorithms used for compressed
  2767.        document data.
  2768.  
  2769.        Standard values for this attribute are:
  2770.  
  2771.          'none':
  2772.          'zip':
  2773.          'tar':
  2774.          ...
  2775.  
  2776.  
  2777.  
  2778.        6.2.17    job-k-octets (integer(0:2**31 - 1))
  2779.  
  2780.        This Job attribute specifies the total size of the job in K octets,
  2781.        i.e., in units of 1024 octets.  The value shall be rounded up, so that a
  2782.        job between 1 and 1024 octets shall be indicated as being 1K, 1025 to
  2783.        2048 shall be 2, etc. This attribute is not intended to be a counter as
  2784.        in the Job Monitoring MIB;  it is intended to be useful routing and
  2785.        scheduling information if known.  The Printer might not be able to
  2786.  
  2787.  
  2788.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 48]
  2789.                         June 3, 1997, Expires December 3, 1997
  2790.  
  2791.  
  2792.  
  2793.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  2794.  
  2795.  
  2796.        compute this value (if not supplied by the client in the request) at the
  2797.        time the Job is created.  If not, the Printer may implement this
  2798.        attribute at any later time as it is able to compute the total size of
  2799.        the Job.
  2800.  
  2801.        6.2.18    job-impressions (integer(0:2**31 - 1))
  2802.  
  2803.        This job attribute specifies the total size of the job in impressions.
  2804.        This attribute is not intended to be a counter as in the Job Monitoring
  2805.        MIB;  it is intended to be useful routing and scheduling information if
  2806.        known.  The Printer shall try to compute the value if it is not supplied
  2807.        in the create request.  The Printer might not be able to compute this
  2808.        value (if not supplied by the client in the request) at the time the Job
  2809.        is created.  If not, the Printer may implement this attribute at any
  2810.        later time as it is able to compute the total size of the Job.
  2811.  
  2812.        6.2.19    job- media-sheets (integer(0:2**31 - 1))
  2813.  
  2814.        This job attribute specifies the total size of the job in media-sheets.
  2815.        This attribute is not intended to be a counter as in the Job Monitoring
  2816.        MIB;  it is intended to be useful routing and scheduling information if
  2817.        known. The Printer shall try to compute the value if it is not supplied
  2818.        in the Create-Job Request.  The Printer might not be able to compute
  2819.        this value (if not supplied by the client in the request) at the time
  2820.        the Job is created.  If not, the Printer may implement this attribute at
  2821.        any later time as it is able to compute the total size of the Job.
  2822.  
  2823.        6.3  Job Attributes
  2824.  
  2825.        The attributes in this section are associated with a Job.
  2826.  
  2827.        6.3.1     Job Template Attributes
  2828.  
  2829.        The Job Template attributes which apply specifically to a Job object are
  2830.        described in section 6.2   Job Template Attributes.   These Job specific
  2831.        attributes form the attribute group called "job-template".
  2832.  
  2833.        6.3.2     Job Description Attributes
  2834.  
  2835.        These attributes form the attribute group called "job-description".
  2836.  
  2837.  
  2838.  
  2839.            Attribute       Man
  2840.                             ?
  2841.  
  2842.  
  2843.  
  2844.  
  2845.  
  2846.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 49]
  2847.                         June 3, 1997, Expires December 3, 1997
  2848.  
  2849.  
  2850.  
  2851.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  2852.  
  2853.  
  2854.        job-URI             Man
  2855.        (uri)
  2856.  
  2857.        job-originating-    Man
  2858.        user
  2859.        (name)
  2860.  
  2861.        job-originating-
  2862.        host
  2863.        (name)
  2864.  
  2865.        user-locale
  2866.        (type2 keyword)
  2867.  
  2868.        job-state           Man
  2869.        (type1 keyword)
  2870.  
  2871.        job-state-reasons   Man
  2872.        (1setOf type2
  2873.        keyword)
  2874.  
  2875.        job-state-message
  2876.        (text)
  2877.  
  2878.        output-device-
  2879.        assigned
  2880.        (name)
  2881.  
  2882.        time-since-         Man
  2883.        submission
  2884.        (milliseconds)
  2885.  
  2886.        number-of-          Man
  2887.        intervening-jobs
  2888.        (int)
  2889.  
  2890.        job-message-from-
  2891.        operator
  2892.        (text)
  2893.  
  2894.        time-since-         Man
  2895.        completion
  2896.        (milliseconds)
  2897.  
  2898.        job-k-octets-
  2899.        completed
  2900.        (int)
  2901.  
  2902.  
  2903.  
  2904.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 50]
  2905.                         June 3, 1997, Expires December 3, 1997
  2906.  
  2907.  
  2908.  
  2909.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  2910.  
  2911.  
  2912.  
  2913.        job-impressions-
  2914.        completed
  2915.        (int)
  2916.  
  2917.        job-media-sheets-
  2918.        completed
  2919.        (int)
  2920.  
  2921.  
  2922.  
  2923.  
  2924.        6.3.2.1   job-URI (uri)
  2925.  
  2926.        This attribute contains the URI for the job.  The Printer, on receipt of
  2927.        a new job, shall generate a URI which identifies the job on the Printer.
  2928.        The Printer, shall return the value of the URI  job attribute as part of
  2929.        the PrintResult in the Print operation. The precise format of a job URI
  2930.        shall be implementation dependent.
  2931.  
  2932.        6.3.2.2   job-originating-user (name)
  2933.  
  2934.        This attribute specifies the user name of the person submitting the
  2935.        print job.  The Printer shall set this attribute to the most authentic
  2936.        name that it can obtain from the protocol over which the operation was
  2937.        received from the client.
  2938.  
  2939.        6.3.2.3   job-originating-host (name)
  2940.  
  2941.        This attribute identifies the originating host of the job. The Printer
  2942.        shall set this attribute to the most authentic host name it can obtain
  2943.        from the protocol over which the operation was received from  the
  2944.        client.
  2945.  
  2946.        6.3.2.4   user-locale (type3 keyword)
  2947.  
  2948.        This attribute identifies the locale of the job, i.e, the country,
  2949.        language, and coded character set. The Printer sets this attribute to
  2950.        the most authentic value it can obtain from the protocol over which the
  2951.        Print operation was received from the client.
  2952.  
  2953.        The Printer shall use this attribute to determine the locale for
  2954.        notification messages that it sends.
  2955.  
  2956.        6.3.2.5   job-state (type1 keyword)
  2957.  
  2958.        This attribute identifies the current state of the job.
  2959.  
  2960.  
  2961.  
  2962.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 51]
  2963.                         June 3, 1997, Expires December 3, 1997
  2964.  
  2965.  
  2966.  
  2967.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  2968.  
  2969.  
  2970.        The Printer may provide additional information about each state value by
  2971.        supplying one or more values of the job's companion "job-state-reasons"
  2972.        attribute depending on implementation.  While the job states cannot be
  2973.        added to without impacting deployed clients that take actions upon
  2974.        receiving job state values, it is the intent that additional "job-state-
  2975.        reasons" values can be defined without impacting such deployed clients.
  2976.        In other words, the "job-state-reasons" attribute is intended to be
  2977.        extensible.
  2978.  
  2979.        Standard values are:
  2980.  
  2981.             unknown     The job state is not known, or its
  2982.                         state is indeterminate.
  2983.             pending     The job is a candidate to start
  2984.                         processing, but is not yet
  2985.                         processing..
  2986.             pending-    The job is not a candidate for
  2987.             stopped     processing for any number of reasons
  2988.                         and will resume pending as soon as the
  2989.                         reasons are no longer present.  The
  2990.                         job's "job-state-reason" attribute
  2991.                         shall indicate why the job is no
  2992.                         longer a candidate for processing.
  2993.  
  2994.  
  2995.  
  2996.  
  2997.  
  2998.  
  2999.  
  3000.  
  3001.  
  3002.  
  3003.  
  3004.  
  3005.  
  3006.  
  3007.  
  3008.  
  3009.  
  3010.  
  3011.  
  3012.  
  3013.  
  3014.  
  3015.  
  3016.  
  3017.  
  3018.  
  3019.  
  3020.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 52]
  3021.                         June 3, 1997, Expires December 3, 1997
  3022.  
  3023.  
  3024.  
  3025.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  3026.  
  3027.  
  3028.             processing  Either:
  3029.                         1.  the job is using, or is attempting
  3030.                         to use, one or more document
  3031.                         transforms which include (1) purely
  3032.                         software processes that are
  3033.                         interpreting a PDL, and (2) hardware
  3034.                         devices that are interpreting a PDL,
  3035.                         making marks on a medium, and/or
  3036.                         performing finishing, such as stapling
  3037.                         OR
  3038.                         2.  the server has made the job ready
  3039.                         for printing, but the output device is
  3040.                         not yet printing it, either because
  3041.                         the job hasn't reached the output
  3042.                         device or because the job is queued in
  3043.                         the output device or some other
  3044.                         spooler, awaiting the output device to
  3045.                         print it.
  3046.                         ISSUE: The "job-state-reasons"
  3047.                         specification is that the job is in
  3048.                         'pending' state not 'processing'
  3049.                         state.
  3050.                         When the job is in the 'processing'
  3051.                         state, the entire job state includes
  3052.                         the detailed status represented in the
  3053.                         printer's "printer-state", "printer-
  3054.                         state-reasons", and "printer-state-
  3055.                         message attributes.
  3056.                         Implementations may include additional
  3057.                         values in the job's "job-state-
  3058.                         reasons" attribute to indicate the
  3059.                         progress of the job, such as adding
  3060.                         the 'job-printing' value to indicate
  3061.                         when the output device is actually
  3062.                         making marks on paper.  Most
  3063.                         implementations won't bother with this
  3064.                         nuance.
  3065.  
  3066.  
  3067.  
  3068.  
  3069.  
  3070.  
  3071.  
  3072.  
  3073.  
  3074.  
  3075.  
  3076.  
  3077.  
  3078.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 53]
  3079.                         June 3, 1997, Expires December 3, 1997
  3080.  
  3081.  
  3082.  
  3083.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  3084.  
  3085.  
  3086.             processing  The job has stopped while processing
  3087.             -stopped    for any number of reasons and will
  3088.                         continue processing as soon as the
  3089.                         reasons are no longer present.  The
  3090.                         job's "job-state-reason" attribute
  3091.                         shall indicate why the job has stopped
  3092.                         processing.
  3093.                         If the output device is stopped, the
  3094.                         'printer-stopped' value shall be
  3095.                         included in the job's "job-state-
  3096.                         reasons" attribute.  When the output
  3097.                         device is stopped, the device usually
  3098.                         indicates its condition in human
  3099.                         readable form locally at the device.
  3100.                         A client can obtain more complete
  3101.                         device status remotely by querying the
  3102.                         printer's "printer-state-reasons"
  3103.                         attribute.
  3104.             canceled    The job has been canceled by a Cancel-
  3105.                         Job operation and is either (1) in the
  3106.                         process of terminating or (2) has
  3107.                         completed terminating.  The job's
  3108.                         "job-state-reasons" attribute shall
  3109.                         contain either the 'canceled-by-user'
  3110.                         or 'canceled-by-operator' value.
  3111.             aborted     The job has been aborted by the
  3112.                         system, usually while the job was in
  3113.                         the 'processing' state.
  3114.             completed   The job has completed successfully or
  3115.                         with warnings or errors and all of the
  3116.                         job media sheets have been properly
  3117.                         stacked in the appropriate output tray
  3118.                         or bin.  The job's "job-state-reasons"
  3119.                         attribute shall contain one of:
  3120.                         'completed-successfully', 'completed-
  3121.                         with-warnings', or 'completed-with-
  3122.                         errors'.
  3123.  
  3124.  
  3125.        The length of time that jobs remain in the 'canceled', 'aborted', and
  3126.        'completed' states depends on implementation.
  3127.  
  3128.        The following figure shows the normal job state transitions.  Other
  3129.        transitions are unlikely, but are not forbidden.
  3130.  
  3131.  
  3132.  
  3133.  
  3134.  
  3135.  
  3136.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 54]
  3137.                         June 3, 1997, Expires December 3, 1997
  3138.  
  3139.  
  3140.  
  3141.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  3142.  
  3143.  
  3144.                                                    +--> canceled
  3145.                                                   /
  3146.            +----> pending --------> processing --+----> aborted
  3147.            |         ^                  ^         \
  3148.        ----+         |                  |          +--> completed
  3149.            |         v                  v
  3150.            +----> pending-stopped   processing-stopped
  3151.  
  3152.        Figure 1 - Normal job state transitions
  3153.  
  3154.        Normally a job progresses only from left to right through three states.
  3155.  
  3156.        Even though the IPP protocol defines seven values for job states,
  3157.        Printers SHALL only implement those states which are appropriate for the
  3158.        particular implementation.
  3159.  
  3160.        6.3.2.6   job-state-reasons (1setOf  type2 keyword)
  3161.  
  3162.        This attribute identifies the reason or reasons that the job is in the
  3163.        state that it is in (e.g., 'pending', 'processing', 'completed', etc.).
  3164.        The Printer shall indicate the particular reason(s) by setting the value
  3165.        of the job's "job-state-reasons" attribute.
  3166.  
  3167.        The following standard values are defined for use with the job states
  3168.        indicated as applicable.
  3169.  
  3170.        NOTE - For easy of understanding the order of the reasons is presented
  3171.        in the normal order of job state progression:
  3172.  
  3173.             none                Mandatory:  There are no reasons
  3174.                                 for the job's current state.
  3175.                                 Applicable job states:
  3176.                                 'pending', 'processing',
  3177.                                 'aborted'.
  3178.             job-incoming        Mandatory.  The PrintJob or
  3179.                                 CreateJob operation has been
  3180.                                 accepted by the Printer, but the
  3181.                                 Printer is waiting for additional
  3182.                                 SendDocument operations and/or
  3183.                                 the transfer of the remainder of
  3184.                                 the job or document data.
  3185.                                 Applicable job states: 'pending-
  3186.                                 stopped'
  3187.             job-outgoing        Optional. The Printer is
  3188.                                 transmitting the job to the
  3189.                                 output device.
  3190.                                 Applicable job states: 'pending'
  3191.  
  3192.  
  3193.  
  3194.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 55]
  3195.                         June 3, 1997, Expires December 3, 1997
  3196.  
  3197.  
  3198.  
  3199.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  3200.  
  3201.  
  3202.             job-hold-until-     Conditionally mandatory.
  3203.             specified           Mandatory if the "job-hold-until"
  3204.                                 job attribute is implemented.
  3205.                                 The value of the job's "job-hold-
  3206.                                 until" attribute has specified a
  3207.                                 time period that has not yet
  3208.                                 arrived, so that the Printer
  3209.                                 shall not consider the job as a
  3210.                                 candidate for processing.
  3211.                                 Applicable job states: 'pending-
  3212.                                 stopped'.
  3213.             job-hold-until-     Optional.  At least one of the
  3214.             resources-are-      resources needed by the job, such
  3215.             ready               as media, fonts, resource
  3216.                                 objects, etc., is not ready on
  3217.                                 any of the physical printer's for
  3218.                                 which the job is a candidate.
  3219.                                 Usually such a condition is
  3220.                                 detected while the job is in the
  3221.                                 'pending' state.  If a job starts
  3222.                                 processing and encounters a
  3223.                                 resource that is not ready, there
  3224.                                 are two possible implementations:
  3225.                                 (1) the device is stopped and no
  3226.                                 jobs can run until the
  3227.                                 resource(s) are made ready, in
  3228.                                 which case the Printer shall keep
  3229.                                 the job in the 'processing' state
  3230.                                 and shall add the 'printer-
  3231.                                 stopped' reason to the job's
  3232.                                 "job-state-reasons" attribute
  3233.                                 (not the 'job-hold-until-
  3234.                                 resources-are-ready' value) OR
  3235.                                 (2) another job is found to use
  3236.                                 the device while the current job
  3237.                                 goes back to waiting for its turn
  3238.                                 and for the resources to be made
  3239.                                 ready, in which case the Printer
  3240.                                 shall change the job's "job-
  3241.                                 state" attribute to 'pending' and
  3242.                                 add the 'job-hold-until-
  3243.                                 resources-are-ready' value to the
  3244.                                 job's "job-state-reasons"
  3245.                                 attribute.
  3246.                                 Applicable job states: 'pending-
  3247.                                 stopped'.
  3248.  
  3249.  
  3250.  
  3251.  
  3252.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 56]
  3253.                         June 3, 1997, Expires December 3, 1997
  3254.  
  3255.  
  3256.  
  3257.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  3258.  
  3259.  
  3260.             printer-stopped-    Optional.  This reason appears in
  3261.             partly              all jobs in the 'pending' state
  3262.                                 when the value of the Printer's
  3263.                                 "printer-state-reasons" attribute
  3264.                                 contains the value 'stopped-
  3265.                                 partly'.
  3266.                                 Applicable job states: 'pending'
  3267.             printer-stopped     Mandatory.  The output device is
  3268.                                 stopped.  This reason appears in
  3269.                                 all jobs in the 'pending' and
  3270.                                 'processing' states when the
  3271.                                 value of the Printer's "printer-
  3272.                                 state" attribute is 'stopped'.
  3273.                                 Applicable job states: 'pending-
  3274.                                 stopped', 'processing-stopped'
  3275.             job-printing        Optional. The output device is
  3276.                                 marking media. This value is
  3277.                                 useful for Printers which spend a
  3278.                                 great deal of time processing
  3279.                                 when no marking is happening and
  3280.                                 then want to show that marking is
  3281.                                 now happening.
  3282.                                 Applicable job states:
  3283.                                 'processing', 'processing-
  3284.                                 stopped'
  3285.             job-cancelled-by-   Level 2 Mandatory.  The job was
  3286.             user                cancelled by the user using the
  3287.                                 CancelJob request.
  3288.                                 Applicable job states:
  3289.                                 'canceled'.
  3290.             job-cancelled-by-   Level 2 Mandatory.  The job was
  3291.             operator            cancelled by the operator using
  3292.                                 the CancelJob request.
  3293.                                 Applicable job states:
  3294.                                 'canceled'.
  3295.             logfile-pending     Optional.  The job's logfile is
  3296.                                 pending file transfer.
  3297.                                 Applicable job states:
  3298.                                 'canceled', 'aborted', and
  3299.                                 'completed'.
  3300.             logfile-            Optional.  The job's logfile is
  3301.             transferring        being transferred.
  3302.                                 Applicable job states:
  3303.                                 'canceled', 'aborted', and
  3304.                                 'completed'.
  3305.  
  3306.  
  3307.  
  3308.  
  3309.  
  3310.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 57]
  3311.                         June 3, 1997, Expires December 3, 1997
  3312.  
  3313.  
  3314.  
  3315.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  3316.  
  3317.  
  3318.             job-completed-      Mandatory.  The job completed
  3319.             successfully        successfully.
  3320.                                 Applicable job states:
  3321.                                 'completed'.
  3322.             job-completed-      Mandatory.  The job completed
  3323.             with-warnings       with warnings.
  3324.                                 Applicable job states:
  3325.                                 'completed'.
  3326.             job-completed-      Mandatory.  The job completed
  3327.             with-errors         with errors (and possibly
  3328.                                 warnings too).
  3329.                                 Applicable job states:
  3330.                                 'completed'.
  3331.  
  3332.  
  3333.  
  3334.        6.3.2.7   job-state-message (text)
  3335.  
  3336.        This attributes specifies suplimental information about the Job State in
  3337.        human readable text.  It SHALL be set by the Printer.
  3338.  
  3339.        6.3.2.8   output-device-assigned (uri)
  3340.  
  3341.        This attribute identifies the Output Device to which the Printer has
  3342.        assigned this job.  If an output device implements an embedded IPP
  3343.        Printer, the Printer NEED NOT set this attribute.  If a Print Server
  3344.        implements a Printer, the value MAY be empty until the Printer assigns
  3345.        an output device to the job.
  3346.  
  3347.        ISSUE: Why is this a uri?
  3348.  
  3349.        6.3.2.9   time-since-submission (milliseconds)
  3350.  
  3351.        This attribute indicates the amount of time that has passed since the
  3352.        Job was first created.
  3353.  
  3354.        6.3.2.10  time-since-processing (milliseconds)
  3355.  
  3356.        This attribute indicates the amount of time that has passed since the
  3357.        Job first entered the processing state.
  3358.  
  3359.        6.3.2.11  number-of-intervening-jobs (integer(0:2**31 - 1))
  3360.  
  3361.        This attribute indicates the number of jobs that are "ahead" of this job
  3362.        in the current scheduled order.  For efficiency, it is only necessary to
  3363.        calculate this value when an operation if performed that requests this
  3364.        attribute.
  3365.  
  3366.  
  3367.  
  3368.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 58]
  3369.                         June 3, 1997, Expires December 3, 1997
  3370.  
  3371.  
  3372.  
  3373.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  3374.  
  3375.  
  3376.        Note: This attribute is necessary since an end user may request just
  3377.        their own jobs and they need some relative position indicator if there
  3378.        are other jobs interspersed in the waiting list which are not returned
  3379.        in the response or cannot be because of site security policy
  3380.        restrictions.
  3381.  
  3382.        6.3.2.12  job-message-from-operator (text)
  3383.  
  3384.        This attribute provides a message from an operator, system administrator
  3385.        or "intelligent" process to indicate to the end user the reasons for
  3386.        modification or other management action taken on a job.
  3387.  
  3388.  
  3389.  
  3390.        6.3.2.13  time-since-completion (milliseconds)
  3391.  
  3392.        This attribute indicates the amount of time that has passed since the
  3393.        Job was first created.
  3394.  
  3395.        6.3.2.14  job-k-octets-completed (integer(0:2**31 - 1))
  3396.  
  3397.        This attribute specifies the number of octets completed in K octets,
  3398.        i.e., in units of 1024 octets.  The value shall be rounded up, so that a
  3399.        job between 1 and 1024 octets shall be indicated as being 1K, 1025 to
  3400.        2048 shall be 2, etc. This attribute is intended to be a counter as in
  3401.        the Job Monitoring MIB.
  3402.  
  3403.        6.3.2.15  job-impressions-completed  (integer(0:2**31 - 1))
  3404.  
  3405.        This job attribute specifies the number of impressions completed. This
  3406.        attribute is intended to be a counter as in the Job Monitoring MIB.
  3407.  
  3408.        6.3.2.16  job-media-sheets-completed (integer(0:2**31 - 1))
  3409.  
  3410.        This job attribute specifies the media-sheets completed. This attribute
  3411.        is intended to be a counter as in the Job Monitoring MIB.
  3412.  
  3413.  
  3414.  
  3415.        6.4  Document Attributes
  3416.  
  3417.        This group of attributes describes the document data for the job.  They
  3418.        are supplied in the Send-Document request.
  3419.  
  3420.  
  3421.  
  3422.  
  3423.  
  3424.  
  3425.  
  3426.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 59]
  3427.                         June 3, 1997, Expires December 3, 1997
  3428.  
  3429.  
  3430.  
  3431.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  3432.  
  3433.  
  3434.  
  3435.            Attribute       Man
  3436.                             ?
  3437.  
  3438.  
  3439.  
  3440.        document-name       Man
  3441.        (name)
  3442.  
  3443.        document-format
  3444.        (type2 keyword
  3445.  
  3446.        document-URI
  3447.        (uri)
  3448.  
  3449.  
  3450.  
  3451.  
  3452.        6.4.1     document-name(name, Mandatory)
  3453.  
  3454.        This attribute contains the name of the document used by the client to
  3455.        initially identify the document. When a client prints by reference, i.e.
  3456.        includes the document-URI attribute and no document content, this
  3457.        attribute shall be absent. When a document's contents are spread across
  3458.        multiple Send Document operations "document-name" is ignored by the
  3459.        Printer in all but the first Send-Document operation.
  3460.  
  3461.        6.4.2     document-format (type2 keyword)
  3462.  
  3463.        This attribute defines the document format of this document. When a
  3464.        client prints by reference, i.e. includes the document-URI attribute and
  3465.        no document content, this attribute shall be absent. When a document's
  3466.        contents are spread across multiple Send-Document operations, document-
  3467.        format is ignored by the Printer in all but the first Send Document
  3468.        operation for that document.
  3469.  
  3470.        This attribute identifies the document format of this document.  One
  3471.        possible supported and default value is 'auto-sense'.  However, 'auto-
  3472.        sense' shall not be sent in the Send-Document Request.
  3473.  
  3474.        The following standard values have been reviewed with the Printer
  3475.        Working Group and are registered with IANA as part of the IETF Printer
  3476.        MIB project.  The standard value assigned by the PWG starts with the
  3477.        four letters: "lang", in order to follow SNMP ASN.1 rules that all enum
  3478.        symbols shall start with a lower case letter.  The keyword values in IPP
  3479.        shall be the same as the PWG standard values registered with IANA with
  3480.        the "lang" removed.  The MIB (integer) value is included here for
  3481.  
  3482.  
  3483.  
  3484.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 60]
  3485.                         June 3, 1997, Expires December 3, 1997
  3486.  
  3487.  
  3488.  
  3489.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  3490.  
  3491.  
  3492.        reference only, the MIB integer value shall not be used in IPP;  the
  3493.        keyword value shall be used instead:
  3494.  
  3495.        Note:  In the protocol specification [22], these keywords will be
  3496.        encoded as MIME types.
  3497.  
  3498.        6.4.3     document-URI (uri)
  3499.  
  3500.        This attribute contains the URI of the document when the document
  3501.        content is not included in the Send Document operation.  Document-number
  3502.        is the only other attribute allowed when a document-URI attribute is
  3503.        present in a Send Document operation.
  3504.  
  3505.        6.5  Printer Attributes
  3506.  
  3507.        The attributes in this section are associated with a Printer object.
  3508.  
  3509.        6.5.1     Printer Job Template Attributes
  3510.  
  3511.        The Job Template attributes which apply specifically to a Printer object
  3512.        are described in section 6.2  Job Template Attributes.
  3513.  
  3514.        These Printer attributes form the attribute group named "printer-job-
  3515.        template".
  3516.  
  3517.        6.5.2     Printer Description  Attributes
  3518.  
  3519.        These attributes form the attribute group called "printer-description".
  3520.  
  3521.        A Printer object may be realized in either a print server or output
  3522.        device. Note: How these attributes are set by an Administrator is
  3523.        outside the scope of this specification.
  3524.  
  3525.  
  3526.  
  3527.  
  3528.  
  3529.             Attribute         Man?
  3530.  
  3531.  
  3532.  
  3533.        printer-URI           Man
  3534.        (uri)
  3535.  
  3536.        printer-name          Man
  3537.        (name)
  3538.  
  3539.  
  3540.  
  3541.  
  3542.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 61]
  3543.                         June 3, 1997, Expires December 3, 1997
  3544.  
  3545.  
  3546.  
  3547.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  3548.  
  3549.  
  3550.  
  3551.        printer-location
  3552.        (text)
  3553.  
  3554.        printer-description
  3555.        (text)
  3556.  
  3557.        printer-more-info-
  3558.        site
  3559.        (uri)
  3560.  
  3561.        printer-driver-
  3562.        installer
  3563.        (uri)
  3564.  
  3565.        printer-make-and-
  3566.        model
  3567.        (text)
  3568.  
  3569.        maximum-printer-
  3570.        speed
  3571.        (integerUnits)
  3572.  
  3573.        printer-more-info-
  3574.        manf
  3575.        (uri)
  3576.  
  3577.        printer-state         Man
  3578.        (type1 keyword)
  3579.  
  3580.        printer-state-        Man
  3581.        reasons
  3582.        (type2 keyword)
  3583.  
  3584.        printer-is-           Man
  3585.        accepting-job
  3586.        (boolean)s
  3587.  
  3588.        printer-state-
  3589.        message
  3590.        (text)
  3591.  
  3592.        queued-job-count
  3593.        (int)
  3594.  
  3595.        printer-message-
  3596.        from-operator
  3597.  
  3598.  
  3599.  
  3600.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 62]
  3601.                         June 3, 1997, Expires December 3, 1997
  3602.  
  3603.  
  3604.  
  3605.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  3606.  
  3607.  
  3608.  
  3609.        (text)
  3610.  
  3611.        printer-locale        Man
  3612.        (locale)
  3613.  
  3614.        printer-locales-      Man
  3615.        supported
  3616.        (1setOf locale)
  3617.  
  3618.        multiple-documents-
  3619.        are-supported
  3620.        (boolean)
  3621.  
  3622.  
  3623.  
  3624.  
  3625.  
  3626.        6.5.2.1   printer-URI (uri)
  3627.  
  3628.        This attribute contains the URI for the printer.  An administrator shall
  3629.        determine a printer's URI and shall set this attribute to that URI. The
  3630.        precise format of a printer URI shall be implementation dependent.
  3631.  
  3632.        6.5.2.2   printer-name (name)
  3633.  
  3634.        This attribute contains the name of the printer. It is a name that is
  3635.        more user friendly than the printer-URI. An administrator shall
  3636.        determine a printer's name and shall set this attribute to that name.
  3637.        This name may be the last part of the printer's URI or it may be
  3638.        unrelated. In non-US-English locales, a name may contain characters that
  3639.        are not allowed in a URI.
  3640.  
  3641.        6.5.2.3   printer-location (text)
  3642.  
  3643.        This attribute identifies the location of this printer.
  3644.  
  3645.        6.5.2.4   printer-description (text)
  3646.  
  3647.        This attribute identifies the descriptive information about the this
  3648.        Printer.  This could include things like: "This printer can be used for
  3649.        printing color transparencies for HR presentations", or "Out of courtesy
  3650.        for others, please print only small (1-5 page) jobs at this printer", or
  3651.        even "This printer is going away on July 1, 1997, please find a new
  3652.        printer".
  3653.  
  3654.  
  3655.  
  3656.  
  3657.  
  3658.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 63]
  3659.                         June 3, 1997, Expires December 3, 1997
  3660.  
  3661.  
  3662.  
  3663.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  3664.  
  3665.  
  3666.        6.5.2.5   printer-more-info-site (uri)
  3667.  
  3668.        This attribute contains a URI used to obtain more information about this
  3669.        specific printer.  The information obtained from this URI is intended
  3670.        for end user consumption. Features outside the scope of IPP can be
  3671.        accessed from this URI.  The information is intended to be specific to
  3672.        this printer instance and site services (e.g. job pricing, services
  3673.        offered, end user assistance).  The manufacturer may initially populate
  3674.        this attribute.
  3675.  
  3676.        6.5.2.6   printer-driver-installer (uri)
  3677.  
  3678.        This attribute contains a URI to use to locate the driver installer for
  3679.        this printer.   This attribute is intended for consumption by automata.
  3680.        The mechanics of print driver installation is outside the scope of IPP.
  3681.        The manufacturer may initially populate this attribute.
  3682.  
  3683.        6.5.2.7   printer-make-and-model (text)
  3684.  
  3685.        This attribute identifies the make and model of the printer.
  3686.  
  3687.        ISSUE: Several comments that we should break this up into two
  3688.        attributes.  It is just a text string, so it could really be anything.
  3689.  
  3690.        6.5.2.8   maximum-printer-speed (integerUnits)
  3691.  
  3692.        This attribute indicates the maximum printer speed of the Printer in
  3693.        units of pages per minute, impressions per minute, lines per minute, and
  3694.        characters per second. A job cannot control a Printer's speed, but a
  3695.        Printer Browser can use printer speed as a criteria.
  3696.  
  3697.        The standard units are a type2 setOf keyword : ppm, ipm, spm, lpm, and
  3698.        cps.  These  mean pages per minute, impressions per minutes, sides per
  3699.        minutes, lines per minute, and characters-per-second, respectively.
  3700.  
  3701.  
  3702.  
  3703.        6.5.2.9   printer-more-info-manf (uri)
  3704.  
  3705.        This attribute contains a URI used to obtain more information about this
  3706.        type of printer.  The information obtained from this URI is intended for
  3707.        end user consumption.  Features outside the scope of IPP can be accessed
  3708.        from this URI (e.g., latest firmware, upgrades, print drivers, optional
  3709.        features available).  The information is intended to be germane to this
  3710.        printer without regard to site specific modifications or services.
  3711.  
  3712.  
  3713.  
  3714.  
  3715.  
  3716.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 64]
  3717.                         June 3, 1997, Expires December 3, 1997
  3718.  
  3719.  
  3720.  
  3721.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  3722.  
  3723.  
  3724.        6.5.2.10  printer-state (type1 keyword)
  3725.  
  3726.        This attribute identifies the current state of the printer.  The
  3727.        printer-state reasons attribute augments the printer-state attribute to
  3728.        give more detailed information about the Printer is in the given printer
  3729.        state.
  3730.  
  3731.        The protocol shall support all values for printer states. A Printer
  3732.        shall continually keep this attribute set to the value in the table
  3733.        below which most accurately reflects the state of the Printer.
  3734.  
  3735.        The following standard values are defined:
  3736.  
  3737.             unknown     The Printer state is not known, or is
  3738.                         indeterminate. A Printer shall use
  3739.                         this state only if it cannot
  3740.                         determine its actual state.
  3741.  
  3742.             idle        If a Printer receives a job (whose
  3743.                         required resources are ready) while
  3744.                         in this state, such a job shall
  3745.                         transit into the processing state
  3746.                         immediately.
  3747.  
  3748.                         If the printer-state-reasons
  3749.                         attribute contains any reasons, they
  3750.                         shall be reasons that would not
  3751.                         prevent a job from transiting into
  3752.                         the processing state immediately,
  3753.                         e.g., toner-low.
  3754.  
  3755.                         Note: if a Printer controls more than
  3756.                         one output device, the above
  3757.                         definition implies that a Printer is
  3758.                         idle if at least one output device is
  3759.                         idle.
  3760.  
  3761.  
  3762.  
  3763.  
  3764.  
  3765.  
  3766.  
  3767.  
  3768.  
  3769.  
  3770.  
  3771.  
  3772.  
  3773.  
  3774.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 65]
  3775.                         June 3, 1997, Expires December 3, 1997
  3776.  
  3777.  
  3778.  
  3779.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  3780.  
  3781.  
  3782.             processing  If a Printer receives a job (whose
  3783.                         required resources are ready) while
  3784.                         in this state, such a job shall
  3785.                         transit into the pending state
  3786.                         immediately. Such a job shall transit
  3787.                         into the processing state only after
  3788.                         jobs ahead of it complete printing.
  3789.  
  3790.                         If the printer-state-reasons
  3791.                         attribute contains any reasons, they
  3792.                         shall be reasons that do not prevent
  3793.                         the current job from printing, e.g.
  3794.                         toner-low.
  3795.  
  3796.                         Note: if a Printer controls more than
  3797.                         one output device, the above
  3798.                         definition implies that a Printer is
  3799.                         processing if at least one output
  3800.                         device is processing, and none is
  3801.                         idle.
  3802.  
  3803.             stopped     If a Printer receives a job (whose
  3804.                         required resources are ready) while
  3805.                         in this state, such a job shall
  3806.                         transit into the pending state
  3807.                         immediately. Such a job shall transit
  3808.                         into the processing state only after
  3809.                         some human fixes the problem that
  3810.                         stopped the printer and after jobs
  3811.                         ahead of it complete printing.
  3812.  
  3813.                         The printer-state-reasons attribute
  3814.                         shall contain at least one reason,
  3815.                         e.g. paper-jam, which prevents it
  3816.                         from either processing the current
  3817.                         job or transiting a pending job to
  3818.                         the processing state.
  3819.  
  3820.                         Note: if a Printer controls more than
  3821.                         one output device, the above
  3822.                         definition implies that a Printer is
  3823.                         stopped only if all output devices
  3824.                         are stopped.
  3825.  
  3826.  
  3827.        Note: In the case where a Printer controls more than one output device,
  3828.        it is tempting to define stopped as when a sufficient number of output
  3829.        devices are stopped and leave it to an implementation to define the
  3830.  
  3831.  
  3832.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 66]
  3833.                         June 3, 1997, Expires December 3, 1997
  3834.  
  3835.  
  3836.  
  3837.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  3838.  
  3839.  
  3840.        sufficient number.  But such a rule complicates the definition of
  3841.        stopped and processing. For example, with this alternate definition of
  3842.        stopped, a job can move from idle to processing without human
  3843.        intervention, even though the Printer is stopped.
  3844.  
  3845.        6.5.2.11  printer-state-reasons (1setOf type2 keyword)
  3846.  
  3847.        This attribute supplies additional detail about the printer's state.
  3848.  
  3849.        Each value shall have an adornment to indicate its level of severity.
  3850.        The three levels are: report (least severe), warning and error (most
  3851.        severe).
  3852.  
  3853.          - 'report':  it has the adornment of "report". An implementation may
  3854.             choose to omit some or all reports. Some reports specify finer
  3855.             granularity about the printer state; others serve as a precursor to
  3856.             a warning. A report shall contain nothing that could affect the
  3857.             printed output.
  3858.          - 'warning': it has the adornment of "warning". An implementation may
  3859.             choose to omit some or all warnings. Warnings serve as a precursor
  3860.             to an error. A warning shall contain nothing that prevents a job
  3861.             from completing, though in some cases the output may be of lower
  3862.             quality.
  3863.          - 'error': it has no adornment. An implementation shall include all
  3864.             errors. If this attribute contains one or more errors, printer
  3865.             shall be in the stopped state.
  3866.  
  3867.        ISSUE: How do we indicate report, warning, or error without adornments?
  3868.        Proposal add a parallel attribute to print-state-reasons and name it
  3869.        "printer-state-reasons-severity-level".  The ith element of the reasons
  3870.        attribute has the severity level of the ith element of the severity
  3871.        level attribute.  Another proposal:  an implementation may add 'error-',
  3872.        'warning-', or 'report-' to any of the reasons to indicate the level of
  3873.        severity.
  3874.  
  3875.        ISSUE: Toner-low should be a warning because it allows printing to
  3876.        proceed, but in some printers, toner-low may also produce degraded
  3877.        output. Do we want a fourth category, perhaps severe-warning which
  3878.        allows a job to continue printing but with reduced quality?
  3879.  
  3880.        If a Printer controls more than one output device, each value of this
  3881.        attribute shall apply to one more of the output devices. An error on one
  3882.        output device that does not stop the Printer as a whole appears as a
  3883.        warning in the Printer's printer-state-reasons attribute. Such a
  3884.        Printer's printer-state value may be stopped even with no printer-state-
  3885.        reasons that are errors.
  3886.  
  3887.        The following standard values are defined:
  3888.  
  3889.  
  3890.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 67]
  3891.                         June 3, 1997, Expires December 3, 1997
  3892.  
  3893.  
  3894.  
  3895.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  3896.  
  3897.  
  3898.             stopped-partly      When a Printer controls more than
  3899.                                 one output device, this reason
  3900.                                 indicates that one or more output
  3901.                                 devices are stopped. If the
  3902.                                 reason is a report, fewer than
  3903.                                 half of the output devices are
  3904.                                 stopped. If the reason is a
  3905.                                 warning, fewer than all of the
  3906.                                 output devices are stopped.
  3907.             media-needed        A tray has run out of media
  3908.             paper-jam           The printer has a paper jam.
  3909.             paused              Someone has paused the Printer.
  3910.                                 In this state, a Printer shall
  3911.                                 not produce printed output, but
  3912.                                 it shall perform other operations
  3913.                                 requested by a client. If a
  3914.                                 Printer had been printing a job
  3915.                                 when the Printer was paused, the
  3916.                                 Printer shall resume printing
  3917.                                 that job when the Printer is no
  3918.                                 longer paused and leave no
  3919.                                 evidence in the printed output of
  3920.                                 such a pause .
  3921.             shutdown            Someone has removed a Printer
  3922.                                 from service, and it may be
  3923.                                 powered down or physical removed.
  3924.                                 In this state, a Printer shall
  3925.                                 not produce printed output, and
  3926.                                 unless the Printer is realized by
  3927.                                 a print server that is still
  3928.                                 active, the Printer shall perform
  3929.                                 no other operations requested by
  3930.                                 a client, including returning
  3931.                                 this value. If a Printer had been
  3932.                                 printing a job when it was
  3933.                                 shutdown, the Printer need not
  3934.                                 resume printing that job when the
  3935.                                 Printer is no longer shutdown. If
  3936.                                 the Printer resumes printing such
  3937.                                 a job, it may leave evidence in
  3938.                                 the printed output of such a
  3939.                                 shutdown, e.g. the part printed
  3940.                                 before the shutdown may be
  3941.                                 printed a second time after the
  3942.                                 shutdown..
  3943.  
  3944.  
  3945.  
  3946.  
  3947.  
  3948.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 68]
  3949.                         June 3, 1997, Expires December 3, 1997
  3950.  
  3951.  
  3952.  
  3953.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  3954.  
  3955.  
  3956.             connecting-to-      The server has scheduled a job on
  3957.             printer             the Printer and is in the process
  3958.                                 of connecting to a shared network
  3959.                                 output device (and might not be
  3960.                                 able to actually start printing
  3961.                                 the job for an arbitrarily long
  3962.                                 time depending on the usage of
  3963.                                 the output device by other
  3964.                                 servers on the network).
  3965.             timed-out           The server was able to connect to
  3966.                                 the output device (or is always
  3967.                                 connected), but was unable to get
  3968.                                 a response from the output device
  3969.                                 in the time specified by the
  3970.                                 printer's printer-timeout-period
  3971.                                 attribute.
  3972.             stopping            The printer will be stopping in a
  3973.                                 while and will change its reason
  3974.                                 to printer-stopped. This reason
  3975.                                 is a non-critical, even for a
  3976.                                 Printer with a single output
  3977.                                 device. When an output-device
  3978.                                 ceases accepting jobs, the
  3979.                                 Printer will have this state
  3980.                                 while the output device completes
  3981.                                 printing.
  3982.  
  3983.  
  3984.  
  3985.        6.5.2.12  printer-is-accepting-jobs (boolean)
  3986.  
  3987.        This attribute determines whether the printer is currently accepting
  3988.        job.  If the value is true, the printer is accepting jobs. If the value
  3989.        is false, the printer is currently rejecting any jobs submitted to it.
  3990.  
  3991.        Note: This value is independent of the printer state and printer-state-
  3992.        reasons because its value does not affect the current job; rather it
  3993.        affects future jobs. This attribute may cause the Printer to reject jobs
  3994.        when the printer-state is idle or it may cause the Printer to accepts
  3995.        jobs when the printer-state is stopped.
  3996.  
  3997.        6.5.2.13  printer-state-message (text)
  3998.  
  3999.        This attribute specifies the additional informaion about the printer
  4000.        state in human readable text and it shall be set by the Printer (or the
  4001.        Administrator by some mechanism outside the scope of IPP). When a
  4002.        Printer returns the value of this attribute to a client, the Printer
  4003.  
  4004.  
  4005.  
  4006.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 69]
  4007.                         June 3, 1997, Expires December 3, 1997
  4008.  
  4009.  
  4010.  
  4011.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  4012.  
  4013.  
  4014.        shall localize the value of this attribute to be in the locale of the
  4015.        user, as specified by the Get-Attributes or Get-Jobs operation.
  4016.  
  4017.        6.5.2.14  queued-job-count (integer(0:2**31 - 1))
  4018.  
  4019.        This attribute contains a count of the number of jobs that are either
  4020.        pending and/or processing and shall be set by the Printer.
  4021.  
  4022.        6.5.2.15  printer-message-from-the-operator (text)
  4023.  
  4024.        This attribute provides a message from an operator, system administrator
  4025.        or "intelligent" process to indicate to the end user information or
  4026.        status of the printer, such as why it is unavailable or when it is
  4027.        expected to be available.
  4028.  
  4029.        6.5.2.16  printer-locale (locale)
  4030.  
  4031.        This attribute specifies the current locale that the Printer is
  4032.        operating in.
  4033.  
  4034.        6.5.2.17  printer-locales-supported (1setOf locale)
  4035.  
  4036.        This attribute specifies the locales that the Printer operates in.
  4037.  
  4038.  
  4039.  
  4040.        7.   Conformance
  4041.  
  4042.          This section describes conformance issues and requirements. This
  4043.          document introduces model entities such as objects, operations,
  4044.          attributes, and attribute values.  These conformance sections
  4045.          describe the conformance requirements which apply to these model
  4046.          entities.
  4047.  
  4048.        7.1  Conditionally Mandatory
  4049.  
  4050.          For example, a conditionally mandatory attribute means that a Printer
  4051.          implementation need not implement the attribute if the attribute
  4052.          controls a feature that the output device does not implement or
  4053.          expose.  For example, for an output device that can only print on one
  4054.          side, a Printer need not implement the "sides" attribute.  For an
  4055.          output device that does not support any of the finishing attribute
  4056.          values, a Printer need not implement the "finishing" attribute.  An
  4057.          implementation that does not allow for 'not-ready' supported values
  4058.          in addition to 'ready' values, need not implement the corresponding
  4059.          "xxx-availability" Printer attribute.  For an output device with only
  4060.          a single input tray with only one media type in that tray, a Printer
  4061.          need not implement the "media" attribute.
  4062.  
  4063.  
  4064.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 70]
  4065.                         June 3, 1997, Expires December 3, 1997
  4066.  
  4067.  
  4068.  
  4069.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  4070.  
  4071.  
  4072.        7.2  Client Conformance Requirements
  4073.  
  4074.          There are no conformance requirements placed on the user interfaces
  4075.          provided by IPP clients or their applications.  For example, one
  4076.          application might not allow an end user to submit multiple documents
  4077.          per job, while another does.  One application might first query a
  4078.          Printer object in order to supply a graphical user interface (GUI)
  4079.          dialogue box with supported and default values whereas a different
  4080.          application might not.
  4081.  
  4082.          When sending a Get-Attributes or Create-Job request, an IPP client
  4083.          need not supply any attributes.
  4084.  
  4085.          A client shall be able to accept any of the attribute syntaxes
  4086.          defined in Section 0 that may be returned to it in a response from a
  4087.          Printer
  4088.  
  4089.          ISSUE: Are there any attributes that are mandatory for a client to
  4090.          set in a Print request?
  4091.  
  4092.          A query response may contain attributes and values that the client
  4093.          does not implement or expect.  Therefore, a client implementation
  4094.          must gracefully handle such responses and not refuse to interoperate
  4095.          with a conforming Printer that is returning extended registered or
  4096.          private attributes and/or attribute values that conform to Section 8.
  4097.                         IANA Considerations, Registered Extensions, Private
  4098.          Extensions.  Some clients may choose to ignore any attributes that it
  4099.          does not implement.
  4100.  
  4101.        7.3  Printer Object Conformance Requirements
  4102.  
  4103.          This section specifies the conformance requirements for conforming
  4104.          Printer object implementations with respect to objects, operations,
  4105.          and attributes.
  4106.  
  4107.        7.3.1     Objects
  4108.  
  4109.          Conforming Printer implementations shall implement all of the model
  4110.          objects as defined in this specification in the indicated sections:
  4111.  
  4112.             Section 0 4.1  Printer Object
  4113.             Section 0 4.2  Job Object
  4114.             Section 0 4.3  Document Object
  4115.        7.3.2     Operations
  4116.  
  4117.          Conforming Printer implementations shall implement all of the model
  4118.          operations, including mandatory responses, as defined in this
  4119.          specification in the indicated sections:
  4120.  
  4121.  
  4122.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 71]
  4123.                         June 3, 1997, Expires December 3, 1997
  4124.  
  4125.  
  4126.  
  4127.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  4128.  
  4129.  
  4130.             Section 0
  4131.             Section Job 0 5.1.4 Cancel Job Operation
  4132.             Section 0 5.1.5     Get-Attributes Operation
  4133.             Section 0 5.1.6     Get-Jobs Operation
  4134.        7.3.3     Attributes
  4135.  
  4136.          ISSUE:  Some Printer attributes are purely software, so that
  4137.          Conditionally Mandatory doesn't apply, such as Printer Description
  4138.          Attributes.  For example, what does it mean for the "printer-
  4139.          location" to be Conditionally Mandatory?  Should we add a "OPTIONAL"
  4140.          in the header of the few attributes for which Conditionally Mandatory
  4141.          doesn't make sense?
  4142.  
  4143.          Conforming Printer implementations shall implement all of the
  4144.          mandatory attributes, as defined in this specification in the
  4145.          indicated sections.  Mandatory attributes are indicated as
  4146.          "MANDATORY" in the header of each sub-section of Section 0 that
  4147.          specifies the attribute which is copied into the Table of Contents:
  4148.  
  4149.  
  4150.  
  4151.  
  4152.          ISSUE: What if this list differs from the headers, which wins?
  4153.          Wouldn't it be safer and more compact to replace the above list with
  4154.          a reference to section 6 attributes that are flagged as MANDATORY in
  4155.          the header line (and automatically copied to the Table of Contents)?
  4156.  
  4157.          Conforming Printer implementations shall implement all conditionally
  4158.          mandatory attributes in Section 0, i.e., the additional Job and
  4159.          Printer attributes that represent features that the output device
  4160.          implements.
  4161.  
  4162.          It is not required that a conforming Printer implement or support all
  4163.          values of all implemented attributes.  For example, if a Printer
  4164.          supports some of the "finishing" attribute values in this document,
  4165.          it is not required that a Printer implement or support all finishing
  4166.          methods indicated by all the values of the "finishing" attribute
  4167.          contained in this document.
  4168.  
  4169.          If a Printer implements a "xxx-supported" attribute it must implement
  4170.          the corresponding "xxx" default value attribute and vice versa.
  4171.  
  4172.        7.3.4     Default Value
  4173.  
  4174.          If the output device itself does not support the concept of a default
  4175.          value or the output device's default value is unpredictable, or
  4176.          unknown, the implementation of the Printer shall always supply its
  4177.          default value to the physical device each time the Printer submits
  4178.  
  4179.  
  4180.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 72]
  4181.                         June 3, 1997, Expires December 3, 1997
  4182.  
  4183.  
  4184.  
  4185.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  4186.  
  4187.  
  4188.          the job to the output device.  The default value specified by a
  4189.          Printer shall not be 'unknown'.
  4190.  
  4191.        7.3.5     Availability
  4192.  
  4193.          Conforming implementation need not implement the "xxx-available"
  4194.          attributes since if an "xxx-supported"  printer attribute does not
  4195.          have have an associated "xxx-available" Printer attribute, all
  4196.          supported values shall be 'ready'.
  4197.  
  4198.        7.3.6     Printer extensions
  4199.  
  4200.          A conforming Printer may implement registered extensions and private
  4201.          extensions, as long as they meet the requirements specified in
  4202.          Section 8.     IANA Considerations, Registered Extensions, Private
  4203.          Extensions.
  4204.  
  4205.        7.3.7     Attribute Syntaxes
  4206.  
  4207.          A Printer shall be able to accept any of the attribute syntaxes
  4208.          defined in Section 0 in any operation in which a client may supply
  4209.          attributes.  Furthermore, a Printer shall return attributes to the
  4210.          client in operation responses that conform to the syntax specified in
  4211.          Section 0.
  4212.  
  4213.        7.4  Security Conformance Requirements
  4214.  
  4215.          The security mechanisms being considered for IPP fall outside the
  4216.          scope of the application layer protocol itself.  There are two
  4217.          mechanisms used to begin secure communications using IPP:
  4218.  
  4219.          1. Information in the directory entry for an IPP Printer (or from
  4220.          additional information at a Web site hosting the IPP Priner) indicate
  4221.          which, if any, security protocols are used in conjunction with IPP.
  4222.  
  4223.          2. The URI for the IPP Printer contains the security protocol
  4224.          information (https://..., etc.)
  4225.  
  4226.          In either case, the security protocol (if any) is initiated first
  4227.          which allows for the negotiation of security features.  IPP is then
  4228.          run as an application protocol on top of the security protocols.  One
  4229.          cannot "bootstrap" the security features from IPP itself.
  4230.  
  4231.        8.   IANA Considerations, Registered Extensions, Private Extensions
  4232.  
  4233.          IPP is explicitly designed to be extensible.  Additional attributes
  4234.          can be proposed to be registered by going through the type 2 or type
  4235.          3 keyword process which will register their specification after
  4236.  
  4237.  
  4238.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 73]
  4239.                         June 3, 1997, Expires December 3, 1997
  4240.  
  4241.  
  4242.  
  4243.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  4244.  
  4245.  
  4246.          approval with IANA.  In addition specific implementation instances
  4247.          may support not only the basic protocol as defined in this
  4248.          specification, but may add vendor-specific private extensions by
  4249.          prefixing attribute-names with their company name registered with
  4250.          IANA for use in domains.  See attribute syntax section.  However,
  4251.          such private extensions shall not duplicate attribute semantics
  4252.          already in this specification.
  4253.  
  4254.        9.   Security Considerations
  4255.  
  4256.          There is another Internet-Draft called "Internet Printing
  4257.          Protocol/1.0: Security" [22].  That document is being drafted and
  4258.          reviewed in parallel with this document.  The mapping of IPP on top
  4259.          of appropriate security protocols will be described in that document.
  4260.          IPP does not introduce any new, general purpose security mechanisms
  4261.          for authentication and encryption.
  4262.  
  4263.          A Printer may choose, for security reasons, not to return all
  4264.          attributes that a client requests. It may even return none of the
  4265.          requested attributes. In such cases, the status returned is the same
  4266.          as if the Printer had returned all requested attributes. The client
  4267.          cannot tell by such a response whether the requested attribute was
  4268.          present or absent on the Printer.
  4269.  
  4270.        10.  References
  4271.  
  4272.        [1]  Smith, R., Wright, F., Hastings, T., Zilles, S., and Gyllenskog,
  4273.             J., "Printer MIB", RFC 1759, March 1995.
  4274.  
  4275.        [2]  Berners-Lee, T, Fielding, R., and Nielsen, H., "Hypertext Transfer
  4276.             Protocol - HTTP/1.0", RFC 1945, August 1995.
  4277.  
  4278.        [3]  Crocker, D., "Standard for the Format of ARPA Internet Text
  4279.             Messages", RFC 822, August 1982.
  4280.  
  4281.        [4]  Postel, J., "Instructions to RFC Authors", RFC 1543, October 1993.
  4282.  
  4283.        [5]  ISO/IEC 10175 Document Printing Application (DPA), Final, June
  4284.             1996.
  4285.  
  4286.        [6]  Herriot, R. (editor), X/Open A Printing System Interoperability
  4287.             Specification (PSIS), August 1995.
  4288.  
  4289.        [7]  Kirk, M. (editor), POSIX System Administration - Part 4: Printing
  4290.             Interfaces, POSIX 1387.4 D8, 1994.
  4291.  
  4292.  
  4293.  
  4294.  
  4295.  
  4296.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 74]
  4297.                         June 3, 1997, Expires December 3, 1997
  4298.  
  4299.  
  4300.  
  4301.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  4302.  
  4303.  
  4304.        [8]  Borenstein, N., and Freed, N., "MIME (Multi-purpose Internet Mail
  4305.             Extensions) Part One: Mechanism for Specifying and Describing the
  4306.             Format of Internet Message Bodies", RFC 1521, September, 1993.
  4307.  
  4308.        [9]  Braden, S., "Requirements for Internet Hosts - Application and
  4309.             Support", RFC 1123, October, 1989,
  4310.  
  4311.        [10] McLaughlin, L. III, (editor), "Line Printer Daemon Protocol" RFC
  4312.             1179, August 1990.
  4313.  
  4314.        [11] Berners-Lee, T., Masinter, L., McCahill, M. , "Uniform Resource
  4315.             Locators (URL)", RFC 1738, December, 1994.
  4316.  
  4317.         [20]     Internet Printing Protocol: Requirements
  4318.  
  4319.        [21] Internet Printing Protocol/1.0: Model and Semantics (This document)
  4320.  
  4321.        [22] Internet Printing Protocol/1.0: Security
  4322.  
  4323.        [23] Internet Printing Protocol/1.0: Protocol Specification
  4324.  
  4325.        [24] Internet Printing Protocol/1.0: Directory Schema
  4326.  
  4327.        [25] S. Bradner, "Key words for use in RFCs to Indicate Requirement
  4328.             Levels", RFC 2119 , March 1997
  4329.  
  4330.  
  4331.  
  4332.        11.  Author's Address
  4333.  
  4334.             Scott A. Isaacson
  4335.             Novell, Inc.
  4336.             122 E 1700 S
  4337.             Provo, UT   84606
  4338.  
  4339.             Phone: 801-861-7366
  4340.             Fax:   801-861-4025
  4341.             EMail: scott_isaacson@novell.com
  4342.  
  4343.             Tom Hastings
  4344.             Xerox Corporation
  4345.             701 S. Aviation Blvd.
  4346.             El Segundo, CA   90245
  4347.  
  4348.             Phone: 310-333-6413
  4349.             Fax:   310-333-5514
  4350.             EMail: hastings@cp10.es.xerox.com
  4351.  
  4352.  
  4353.  
  4354.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 75]
  4355.                         June 3, 1997, Expires December 3, 1997
  4356.  
  4357.  
  4358.  
  4359.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  4360.  
  4361.  
  4362.             Robert Herriot
  4363.             Sun Microsystems Inc.
  4364.             2550 Garcia Ave., MPK-17
  4365.             Mountain View, CA 94043
  4366.  
  4367.             Phone: 415-786-8995
  4368.             Fax:  415-786-7077
  4369.             Email: robert.herriot@eng.sun.com
  4370.  
  4371.             Roger deBry
  4372.             HUC/003G
  4373.             IBM Corporation
  4374.             P.O. Box 1900
  4375.             Boulder, CO 80301-9191
  4376.  
  4377.             Phone: (303) 924-4080
  4378.             Fax: (303) 924-9889
  4379.             Email: debry@vnet.ibm.com
  4380.  
  4381.             Patrick Powell
  4382.             San Diego State University
  4383.             9475 Chesapeake Dr. Suite D
  4384.             San Diego, CA  92123
  4385.  
  4386.             Phone: (619) 874-6543
  4387.             Fax: (619) 279-8424
  4388.             Email: papowell@sdsu.edu
  4389.  
  4390.  
  4391.             IPP Mailing List:  ipp@pwg.org
  4392.             IPP Mailing List Subscription:  ipp-request@pwg.org
  4393.             IPP Web Page:  http://www.pwg.org/ipp/
  4394.  
  4395.          Other Participants:
  4396.  
  4397.             Chuck Adams - Tektronix
  4398.             Jeff Barnett - IBM
  4399.             Ron Bergman - Data Products
  4400.             Keith Carter, IBM Corporation
  4401.             Jeff Copeland - QMS
  4402.             Andy Davidson - Tektronix
  4403.             Mabry Dozier - QMS
  4404.             Lee Farrell - Canon Information Systems
  4405.             Steve Gebert - IBM
  4406.             David Kellerman - Northlake Software
  4407.             Rick Landau - Digital
  4408.             Harry Lewis - IBM
  4409.             Pete Loya - HP
  4410.  
  4411.  
  4412.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 76]
  4413.                         June 3, 1997, Expires December 3, 1997
  4414.  
  4415.  
  4416.  
  4417.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  4418.  
  4419.  
  4420.             Ray Lutz - Cognisys
  4421.             Mike MacKay, Novell, Inc.
  4422.             Carl-Uno Manros, Xerox, Corp.
  4423.             Jay Martin - Underscore
  4424.             Stan McConnell - Xerox
  4425.             Pat Nogay - IBM
  4426.             Bob Pentecost - HP
  4427.             Rob Rhoads - Intel
  4428.             David Roach - Unisys
  4429.             Hiroyuki Sato - Canon
  4430.             Bob Setterbo - Adobe
  4431.             Devon Taylor, Novell, Inc.
  4432.             Mike Timperman - Lexmark
  4433.             Randy Turner - Sharp
  4434.             Atsushi Yuki - Kyocera
  4435.             Lloyd Young - Lexmark
  4436.             Bill Wagner - DPI
  4437.             Jim Walker - DAZEL
  4438.             Chris Wellens - Interworking Labs
  4439.             Rob Whittle - Novell
  4440.             Don Wright - Lexmark
  4441.             Peter Zehler, Xerox, Corp.
  4442.  
  4443.        12.
  4444.  
  4445.  
  4446.  
  4447.  
  4448.  
  4449.  
  4450.  
  4451.  
  4452.  
  4453.  
  4454.  
  4455.  
  4456.  
  4457.  
  4458.  
  4459.  
  4460.  
  4461.  
  4462.  
  4463.  
  4464.  
  4465.  
  4466.  
  4467.  
  4468.  
  4469.  
  4470.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 77]
  4471.                         June 3, 1997, Expires December 3, 1997
  4472.  
  4473.  
  4474.  
  4475.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  4476.  
  4477.  
  4478.        Change History
  4479.  
  4480.          This section will be deleted when the document is forwarded to the
  4481.          IESG to be considered for becoming an RFC.  The changes are
  4482.          summarized in reverse chronological order.
  4483.  
  4484.        12.1 Changes made to version 970512, dated 12-May-1997 to make version
  4485.        970603, dated  03-June-1997.
  4486.  
  4487.        1. Removed the idea of "default beahvior"
  4488.  
  4489.        2. Removed the idea of "best-effort" 'substitute-as-needed' and 'do-not-
  4490.        substitute'
  4491.  
  4492.        3. Deleted all of the definitions from section 3 and changed the figures
  4493.  
  4494.        4. Added references to RFC 2119 (standard conformance language) and
  4495.        started to capitalize all of the implementation requirement words such
  4496.        as SHALL, NEED NOT, MUST, etc.
  4497.  
  4498.        5. Removed font Printer attributes and scheduling algorithm
  4499.  
  4500.        6. Reformated all the of 6.2 (Job Template)
  4501.  
  4502.        7. Consolidated the 3 sections on Job Template down into just one
  4503.        section.
  4504.  
  4505.        8. Added attribute tables to be beginning of each first level section in
  4506.        6.0.  These tables show attribute name, syntax, and MAND/OPT/etc.
  4507.  
  4508.        9. Fixed the definitions for Implements and Supports
  4509.  
  4510.        10. Added Create-Job, Print-Job, and Send-Document operations
  4511.  
  4512.        11. Reformatted the whole Operations section
  4513.  
  4514.        12. Reformatted most of the standard values sections for keyword
  4515.        attributes.  This needs to be finished for the next rev of the document.
  4516.  
  4517.        13. Changed URL to URI.
  4518.  
  4519.        12.2 Changes made to version 970509, dated 9-May-1997 to make version
  4520.        970512, dated 12-May-1997.
  4521.  
  4522.          1. Replaced Print with Create-Job and Send-Document
  4523.  
  4524.          2. Added status codes (ok, error, and messages)
  4525.  
  4526.  
  4527.  
  4528.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 78]
  4529.                         June 3, 1997, Expires December 3, 1997
  4530.  
  4531.  
  4532.  
  4533.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  4534.  
  4535.  
  4536.          3. Removed all "may not" language (replace with might not)
  4537.  
  4538.          4. Fixed attribute sections to show more detail
  4539.  
  4540.          5. Misc. typos and edits
  4541.  
  4542.        12.3 Changes made to version 2.2, dated 5-May-1997 to make version
  4543.        970509, dated 9-May-1997.
  4544.  
  4545.          1. 
  4546.             Too many to mention.
  4547.  
  4548.        12.4 Changes made to version 2.1, dated 24-April-1997 to make version
  4549.        2.2, dated 5-May-1997.
  4550.  
  4551.          Added terminology to the conformance section for keyword, attribute,
  4552.          attribute name, attribute value(s), default, default behavior,
  4553.          availabilty.
  4554.  
  4555.          Removed most discussion about adornments and tags, except for
  4556.          embedded tag and job-state-reasons, report, warning, error tags.
  4557.  
  4558.          Moved Conformance description to the appropriate operation sections,
  4559.          so that the Conformance section is a checklist with references to the
  4560.          sections where the semantics are described.
  4561.  
  4562.          Changed the job-size attributes into xxx-requested, xxx-completed Job
  4563.          attributes, and xxx-supported Printer attributes.
  4564.  
  4565.        12.5 Changes made to version 2.0, dated 26-March-1997 to make version
  4566.        2.1, dated 22-April-1997.
  4567.  
  4568.          1. 
  4569.             Added terminology to the conformance section for supported and
  4570.             implemented.
  4571.  
  4572.        12.6 Changes made to version 1.8, dated 24-March-1997 to make version
  4573.        2.0, dated 26-March-1997.
  4574.  
  4575.          The following changes were made to version 1.8 to make version 2.0:
  4576.  
  4577.          1. Minor editing fixes
  4578.  
  4579.          2. Submitted 2.0 as draft-ietf-ipp-model-00.txt
  4580.  
  4581.        12.7 Changes made to version 1.7, dated 24-Mar-1997 to make version 1.8,
  4582.        dated 24-March-1997.
  4583.  
  4584.          The following changes were made to version 1.7 to make version 1.8:
  4585.  
  4586.  
  4587.  
  4588.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 79]
  4589.                         June 3, 1997, Expires December 3, 1997
  4590.  
  4591.  
  4592.  
  4593.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  4594.  
  4595.  
  4596.          1. Minor editing fixes
  4597.  
  4598.        12.8 Changes made to version 1.6, dated 12-Mar-1997 to make version 1.7,
  4599.        dated 24-March-1997.
  4600.  
  4601.          The following changes were made to version 1.6 to make version 1.7:
  4602.  
  4603.          1. Removed Text Handling attributes
  4604.  
  4605.          2. Removed best-effort tag, added best-effort Job attribute
  4606.  
  4607.          3. Moved job-name from Job Template to Job Identification
  4608.  
  4609.          4. Fixed many typos, spelling errors, etc.
  4610.  
  4611.          5. Removed enum and added keyword
  4612.  
  4613.          6. Print Response returns Job Status not Printer Status (since Job
  4614.          status includes interesting Printer
  4615.  
  4616.          Status)
  4617.  
  4618.          7. Removed file type, added format to Get-Attributes
  4619.  
  4620.          8. Added Patrick Powell as author
  4621.  
  4622.          9. Move conformance to section 1, added client and server
  4623.          considerations
  4624.  
  4625.          10. Added a IANA considerations section
  4626.  
  4627.          11. Added a type4 keyword
  4628.  
  4629.          12. Removed the notion of "secondary tags"
  4630.  
  4631.          13. Added more section headers
  4632.  
  4633.          14. Merged the Job Production Attributes and Document Production
  4634.          Attributes section
  4635.  
  4636.        12.9 Changes made to version 1.5, dated 11-Mar-1997 to make version 1.6,
  4637.        dated 12-March-1997.
  4638.  
  4639.          The following changes were made to version 1.5, dated 11-Feb-1997 to
  4640.          make version 1.6, dated 12-March-1997 from the miscellaneous e-mail
  4641.          messages, suggestions, and agreements:
  4642.  
  4643.  
  4644.  
  4645.  
  4646.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 80]
  4647.                         June 3, 1997, Expires December 3, 1997
  4648.  
  4649.  
  4650.  
  4651.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  4652.  
  4653.  
  4654.          1. 
  4655.             Added a new abstract with includes a reference to other IPP
  4656.             documents
  4657.  
  4658.          2. 
  4659.             Added Roger deBry's "new intro" document.
  4660.  
  4661.          3. 
  4662.             Added a modified text diagram showing IPP mapped onto a generic
  4663.             distributed printing model in section 2.0
  4664.  
  4665.          4. 
  4666.             Added some new summary and introductory comments to 2.0 to clarify
  4667.             that this section is not only meant to introduce the IPP model but
  4668.             to show a mapping onto the various architecture and product
  4669.             solutions on which IPP will be implemented.
  4670.  
  4671.          5. 
  4672.             Added a new section (3.4) summarizing the role of object attributes
  4673.             and introduced the notion of Job Template (Printer and Job)
  4674.             attributes along with "adornments"
  4675.  
  4676.          6. 
  4677.             Fixed up section 3.3 on Object relationships.
  4678.  
  4679.          7. 
  4680.             Fixed Section 3.5 on object identity.  This section now shows that
  4681.             Jobs and Printers have both URLs and Names.  Documents have Names
  4682.             and Ids
  4683.  
  4684.          8. 
  4685.             Added the correct references to Printer attributes in section 3.1
  4686.  
  4687.          9. 
  4688.             Fixed the references to Job attributes in section 3.2
  4689.  
  4690.          10. 
  4691.             Added a high level over view of the IPP operations and their
  4692.             purpose and interactions to section 4.1 (Roger deBry worked on this
  4693.             section)
  4694.  
  4695.          11. 
  4696.             Replaced the security section with a reference to a new IPP
  4697.             Security document which will eventually be merged back into this
  4698.             document
  4699.  
  4700.          12. 
  4701.             In section 5.2 I added subheading for each attribute to more
  4702.             easily locate the text associated with the attribute as a Job
  4703.             object attribute and then the text associated with the attribute as
  4704.             a Printer object attribute.
  4705.  
  4706.          13. 
  4707.             Reorganized section 3 to include a Document object.
  4708.  
  4709.          14. 
  4710.             Added IPP Mailing list info to contact list
  4711.  
  4712.  
  4713.  
  4714.  
  4715.  
  4716.  
  4717.  
  4718.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 81]
  4719.                         June 3, 1997, Expires December 3, 1997
  4720.  
  4721.  
  4722.  
  4723.        INTERNET-DRAFT        IPP/1.0: Model and Semantics         June 3, 1997
  4724.  
  4725.  
  4726.        12.10     Changes made to version 1.4, dated 27-Feb-1997 to make version
  4727.        1.5, dated 9-March-1997.
  4728.  
  4729.          The following changes were made to version 1.4, dated 27-Feb-1997 to
  4730.          make version 1.5, dated 9-March-1997 from the 3/6/97 telecon
  4731.          agreements:
  4732.  
  4733.          1. 
  4734.             Replaced the data types with the ones discussed on the 3/6/97
  4735.             telecon.  Added back octetString, type1Enum, type2Enum, type3Enum
  4736.             types as well.
  4737.  
  4738.          2. 
  4739.             Added range constraints to the integer data type.
  4740.  
  4741.          3. 
  4742.             Changed the xxx-locale attributes to be type3Enum.
  4743.  
  4744.          4. 
  4745.             Added standard printer-resolution enum values.
  4746.  
  4747.          5. 
  4748.             Added standard document-format enum values from the Printer MIB and
  4749.             IANA registries.
  4750.  
  4751.          6. 
  4752.             Added back job-hold-until attribute using named periods only and
  4753.             added back the job-hold-until-specified value to the job-state-
  4754.             reasons attribute.
  4755.  
  4756.          7. 
  4757.             Changed the job state from printing to processing to agree with the
  4758.             Printer state and changed the optional job-processing job-state-
  4759.             reasons value to job-printing for use with Printers that take a lot
  4760.             of time processing while not marking.
  4761.  
  4762.          8. 
  4763.             Deleted the second occurrence of the job-name attribute, since we
  4764.             removed any attributes that are common to both Job and Printer.
  4765.  
  4766.          9. 
  4767.             Changed job-priority from a type1Enum to integer(1:100) so as to
  4768.             have more levels so as to be able to match existing systems.
  4769.  
  4770.          10. 
  4771.             Changed job-retention-period to use integerSeconds, instead of
  4772.             minutes.
  4773.  
  4774.          11. 
  4775.             Changed the Text Formatting attributes to take only the computer
  4776.             points as units.
  4777.  
  4778.          12. 
  4779.             Changed job-octets to job-K-octets, in order to be able to print
  4780.             large documents.  Aligns with the IETF Job Monitoring MIB.
  4781.  
  4782.          13. 
  4783.             Clarified that the job-incomplete value of job-state-reasons is
  4784.             waiting for document data, as opposed waiting for the job to be
  4785.             closed.
  4786.  
  4787.  
  4788.  
  4789.        deBry, Hastings, Herriot, Isaacson, Powell                    [Page 82]
  4790.                         June 3, 1997, Expires December 3, 1997
  4791.  
  4792.