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-02.txt < prev    next >
Text File  |  1997-06-24  |  216KB  |  4,927 lines

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