Subject: POSTED - SLP 'printer:' template - 31 Jan 1999

From: Ira McDonald <[email-masked]>
Date: Sun, 31 Jan 99 11:45:10 EST

Copies: SLP Working Group <[email-masked]>
        IPP Working Group <[email-masked]>

Hi folks,                                       Sunday (31 January 1999)

The following documents are at 'ftp://ftp.pwg.org/pub/pwg/ipp/new_SLP':

slp-printer-981028.txt - first revision to March 1998 draft
slp-printer-990104.txt - second revision to March 1998 draft
slp-proposal-990113.txt - summary of proposed third revision
slp-printer-990131.txt - third revision to March 1998 draft
^^^^^^^^^^^^^^^^^^^^^^   (THIS NOTE)

Below is the latest version of the SLP 'printer:' template, aligned with
the November 1998 draft of IPP/1.0 Model and Semantics, and subsequent
discussion on the IPP WG mailing list in December and January.

There are now six (6) MANDATORY attributes and twenty-two (22) OPTIONAL
attributes (all with default values specified) in this template.

Please read the change log, especially Issues 1 and 2 - recent work on
raw TCP print service by Mikael Pahmp (Axis) and recent input on NetWare
NDPS print service by Hugo Parra (Novell) have NOT been incorporated.

This template has a few 'ordered' attributes which use GREATER-THAN SIGN
'>' as their delimiter (rather than COMMA as in standard SLP 'unordered'
multi-valued attributes), for direct alignment with IPP/1.0 semantics.
The choice of GREATER-THAN SIGN '>' was suggested by reviewing RFC 2396,
"Uniform Resource Identifiers (URI): Generic Syntax", August 1998.

Cheers,
- Ira McDonald (IPP WG member, outside consultant at Xerox)
  High North Inc
  716-461-5667

************************************************************************
**** Revised 'printer:' template - 31 January 1998 - Ira E McDonald ****
************************************************************************

*** ISSUES

1)  No updates were made for SLP 'printer:' extension work on raw TCP
    print protocol (in <draft-ietf-srvloc-rawtcp-printer-scheme-00.txt>,
    2 December 1998, by Mikael Pahmp, Axis, Sweden).  A definitive
    reference for this protocol and a concrete URL syntax is required.
    In addition, the concrete URL syntax MUST be IANA registered or be
    qualified with a namespace suffix (unsuitable for base template).
    Thus, no IEEE 1284 device ID attribute was added at this time.
    Either an authoritative vendor (HP?) will register the URL syntax
    or a separate template may augment the base 'printer:' template.

2)  No updates were made for SLP 'printer:' extension work on NetWare
    NDPS print protocol, per agreement with Hugo Parra.  A definitive
    reference for this protocol and a concrete URL syntax is required.
    In addition, the concrete URL syntax MUST be IANA registered or be
    qualified with a namespace suffix (unsuitable for base template).
    Thus, no ABNF for the 'ndps:' URL syntax was added at this time.
    Either an authoritative vendor (Novell) will register the URL syntax
    or a separate template may augment the base 'printer:' template.

------------------------------------------------------------------------
*** CHANGE LOG

1)  Renamed all base attributes of the template, per latest draft of
    "Service Templates and service: Schemes";
        'type' to 'template-type'
        'version' to 'template-version'
        'description' to 'template-description'
        'url-syntax' to 'template-url-syntax'

2)  Changed 'template-version' to '0.2' (from '0.1' in March 1998 spec).

3)  Deleted 'language = en' from template body, per latest draft of
    "Service Templates and service: Schemes";

4)  Renamed 'ippurl' ABNF element to 'ipp10url' (IPP/1.0) to allow
    other IPP URL syntaxes in the future, per request of Bob Herriot,
    editor of "IPP Transport and Encoding" [9].

5)  Changed 'ipp10url' source reference to protocol spec, "IPP Transport
    and Encoding" [9], rather than (incorrect) "IPP Model" [3].

6)  Added a comment to each attribute, w/ the source attribute name in
    IPP (base document) or Printer MIB (RFC 1759).

7)  Replaced remaining few Salutation attributes with IPP/1.0 ones,
    per agreement on IPP WG mailing list in January 1999.

8)  Revised attribute names for alignment with IPP/1.0 ones,
    per agreement on IPP WG mailing list in January 1999.

9)  Revised attribute descriptions for alignment with IPP/1.0 ones,
    per agreement on IPP WG mailing list in January 1999.

10) Revised most attributes to OPTIONAL and added default values,
    per agreement on IPP WG mailing list in January 1999.

------------------------------------------------------------------------
*** Corrected References (for future full Internet-Draft)

[3]--change date to November 1998 (latest draft)

[4]--change date to November 1998 (latest draft)

------------------------------------------------------------------------
*** Additional References (for future full Internet-Draft)

[9]R. Herriot, S. Butler, P. Moore, R. Turner,
"IPP/1.0: Encoding and Transport", Work in progress, November 1998

[10]"Information Technology - Document Printing Application (DPA)",
ISO/IEC 10175, June 1996.

[11]IANA Registry of Internet Media Types (also called MIME types):
ftp://ftp.isi.edu/in-notes/iana/assignments/media-types

[12]H. Alvestrand,
"IETF Policy on Character Sets and Languages", RFC 2277, January 1998.

------------------------------------------------------------------------
* Template prefix begins here

Name of submitter: "Ira McDonald" <[email-masked]>
Language of service template: en
Security Considerations:
    By describing the security methods associated with each supported
    printer URL via the mandatory attributes 'printer-uri-supported'
    and 'uri-security-supported', the printer may expose information
    userful to attackers.
Template Text:

-------------------- template begins here --------------------
        template-type = printer

        template-version = 0.2

        template-description =
            The printer service template describes the attributes
            supported by network printing devices.  Devices may be
            either directly connected to a network or managed by a
            print server.  The device or server understands a network
            network print protocols such as IPP or LPR.

        template-url-syntax =
            url-path    = ipp10url / lprurl
            ipp10url    = IPP/1.0 url as defined in [9]
            lprurl      = "lpr://" hostport [ "/" qname ]
            hostport    = host [ ":" port ]
            host        = hostname / hostnumber
            hostname    = *( domainlavel "." ) toplabel
            domainlabel = alphanum /
                          alphanum * [alphanum / "-"] alphanum
            toplabel    = alpha / alpha * [alphanum / "-"] alphanum
            hostnumber  = ipv4-number / ipv6-number
            ipv4-number = 1*3digit 3*3("." 1*3digit)
            ipv6-number = 32*hex
            3digit      = digit digit digit
            port        = 1*digit
            alphanum    = alpha / digit
            alpha       = "a" / "b" / "c" / "d" / "e" / "f" / "g" /
                          "h" / "i" / "j" / "k" / "l" / "m" / "n" /
                          "o" / "p" / "q" / "r" / "s" / "t" / "u" /
                          "v" / "w" / "x" / "y" / "z" /
                          "A" / "B" / "C" / "D" / "E" / "F" / "G" /
                          "H" / "I" / "J" / "K" / "L" / "M" / "N" /
                          "O" / "P" / "Q" / "R" / "S" / "T" / "U" /
                          "V" / "W" / "X" / "Y" / "Z"
            digit       = "0" / "1" / "2" / "3" / "4" / "5" / "6" /
                          "7" / "8" / "9"

        printer-uri-supported = STRING L
            # MANDATORY for all registrations by conforming SAs
            # IPP 'printer-uri-supported'
            # The ORDERED list of URI supported by this printer,
            # correlated with the 'uri-security-supported' attribute,
            # with each member delimited by '>', for example:
            # 'http://foo.com> https://bar.com'

        uri-security-supported = STRING L
            # MANDATORY for all registrations by conforming SAs
            # IPP 'uri-security-supported'
            # The ORDERED list of security supported for each URI
            # listed in 'printer-uri-supported' for this printer,
            # with each member delimited by '>', for example:
            # 'none> ssl3'
            # (see example of 'printer-uri-supported' above)
            # URIs that do not support security shall specify 'none'.
            # Legal values are 'none', 'ssl3', and 'tls' [9].

        printer-name = STRING
            # MANDATORY for all registrations by conforming SAs
            # IPP 'printer-name'
            # This attribute contains the name of this printer,
            # in the locale specified by 'natural-language-configured'.
            # This name MAY be the last part of the printer's URI or it
            # MAY be completely unrelated.
            # This name MAY contain characters that are not allowed in a
            # conventional URI (which conforms to RFC 2396).
            # If this printer information is not known to the SA,
            # then this attribute shall always be set to 'unknown'.

        printer-location = STRING O
            unknown
            # IPP 'printer-location'
            # This attribute contains the location of this printer,
            # in the locale specified by 'natural-language-configured'.
            # A free form description of this printer's physical
            # location.  For example: '2nd floor, near the fire escape'
            # If this printer information is not known to the SA,
            # then this attribute shall always be set to 'unknown'.

        printer-info = STRING O
            unknown
            # IPP 'printer-info'
            # This attribute contains descriptive info on this printer,
            # in the locale specified by 'natural-language-configured'.
            # A free form string that may contain any site-specific
            # descriptive information about this printer.
            # If this printer information is not known to the SA,
            # then this attribute shall always be set to 'unknown'.

        printer-more-info = STRING L O
            unknown
            # IPP 'printer-more-info'
            # A URI used to obtain more information about this specific
            # printer.  For example, this could be an 'http:' URI
            # referencing an HTML page accessible to a Web Browser.
            # The information obtained from this URI is intended for
            # end user consumption.
            # If this printer information is not known to the SA,
            # then this attribute shall always be set to 'unknown'.

        printer-make-and-model = STRING O
            unknown
            # IPP 'printer-make-and-model'
            # This attribute contains the make & model of this printer,
            # in the locale specified by 'natural-language-configured'.
            # A simple text string defined by the manufacturer.
            # It should provide the name of the vendor and the model
            # name or number.
            # If this printer information is not known to the SA,
            # then this attribute shall always be set to 'unknown'.

        printer-current-operator = STRING M O
            unknown
            # Printer MIB 'prtGeneralCurrentOperator'
            # The name of the current human operator responsible for
            # operating this printer.  It is suggested that this string
            # include information that would enable other humans to
            # reach the operator, such as a phone number.
            # If this printer information is not known to the SA,
            # then this attribute shall always be set to 'unknown'.

        printer-service-person = STRING M O
            unknown
            # Printer MIB 'prtGeneralServicePerson'
            # The name of the current service person responsible for
            # servicing this printer.  It is suggested that this string
            # include information that would enable other humans to
            # reach the service person, such as a phone number.
            # If this printer information is not known to the SA,
            # then this attribute shall always be set to 'unknown'.

        natural-language-configured = STRING L
            # MANDATORY for all registrations by conforming SAs
            # IPP 'natural-language-configured'
            # The configured language in which error and status messages
            # will be generated (by default) by this printer,
            # for example en-US, fr-FR, etc.
            # Also, the language in which printer string attributes are
            # set by operator or system administrator or manufacturer,
            # such as IPP 'printer-[name|info|location|make-and-model]'.
            # Legal values of language tags conform to RFC 1766
            # 'Tags for the Identification of Languages' [5].

        natural-language-supported = STRING L M
            # MANDATORY for all registrations by conforming SAs
            # IPP 'generated-natural-language-supported'
            # The possible languages in which error and status messages
            # may be generated (if requested) by this printer,
            # for example en-US, fr-FR, etc.
            # Also, the languages in which printer string attributes are
            # set by operator or system administrator or manufacturer,
            # such as IPP 'printer-[name|info|location|make-and-model]'.
            # Legal values of language tags conform to RFC 1766
            # 'Tags for the Identification of Languages' [5].

        charset-configured = STRING L O
            utf-8
            # IPP 'charset-configured'
            # The configured charset in which error and status messages
            # will be generated (by default) by this printer,
            # for example UTF-8, Shift-JIS, or ISO-8859-1 (Latin1).
            # Also, the charset in which printer string attributes are
            # set by operator or system administrator or manufacturer,
            # such as IPP 'printer-[name|info|location|make-and-model]'.
            # Legal values of charset tags (names/aliases) come from
            # the IANA Registry of Coded Character Sets [6].
            # The name or alias labeled '(preferred MIME name)' shall
            # always be used to identify a given charset.

        charset-supported = STRING L M O
            utf-8
            # IPP 'charset-supported'
            # The possible charsets in which error and status messages
            # may be generated (if requested) by this printer,
            # for example UTF-8, Shift-JIS, or ISO-8859-1 (Latin1).
            # Also, the charsets in which printer string attributes are
            # set by operator or system administrator or manufacturer,
            # such as IPP 'printer-[name|info|location|make-and-model]'.
            # Legal values of charset tags (names/aliases) come from
            # the IANA Registry of Coded Character Sets [6].
            # The name or alias labeled '(preferred MIME name)' shall
            # always be used to identify a given charset.
            # This attribute shall always include the value 'utf-8', per
            # RFC 2277, 'IETF Policy on Charsets and Languages' [12].

        document-format-supported = STRING L M
            # MANDATORY for all registrations by conforming SAs
            # IPP 'document-format-supported'
            # The possible document formats in which data may be
            # interpreted and printed by this printer.
            # Legal values of document formats (MIME types) come from
            # the IANA Registry of Internet Media Types [11].
            # If this printer information is not known to the SA,
            # then this attribute shall always be set to 'unknown'.

        color-supported = STRING L O
            unknown
            # IPP 'color-supported'
            # Indicates whether this printer is capable of any type of
            # color printing at all, including highlight color.
            # This template attribute is an extended boolean.
            # If this printer information is not known to the SA,
            # then this attribute shall always be set to 'unknown'.
            unknown, true, false

        finishings-supported = STRING L M O
            none
            # IPP 'finishings-supported'
            # The possible finishing operations supported by this
            # printer.
            # If this printer information is not known to the SA,
            # then this attribute shall always be set to 'none'.
            none, staple, punch, cover, bind

        number-up-supported = INTEGER M O
            1
            # IPP 'number-up-supported'
            # The possible numbers of print-stream pages to impose
            # upon a single side of an instance of a selected
            # medium.
            # Legal values include 1, 2, and 4.
            # If this printer information is not known to the SA,
            # then this attribute shall always be set to '1'.

        sides-supported = STRING L M O
            one-sided
            # IPP 'sides-supported'
            # (Compare with Salutation 'duplex-mode')
            # The number of impression sides (one or two) and the
            # two-sided impression rotations supported by this printer.
            # Salutation 'simplex' == IPP 'one-sided'
            # Salutation 'duplex' == IPP 'two-sided-long-edge'
            # Salutation 'tumble' == IPP 'two-sided-short-edge'
            # If this printer information is not known to the SA,
            # then this attribute shall always be set to 'one-sided'.
            one-sided, two-sided-long-edge, two-sided-short-edge

        media-supported = STRING L M O
            unknown
            # IPP 'media-supported' - only the standard keyword values
            # The standard names/types/sizes (and optional color
            # suffixes) of the media supported by this printer.
            # The values specified are NOT localized according to the
            # value of 'natural-language-configured', but are in a
            # fixed locale of 'en-US' (US English).  For example
            # 'iso-a4' or 'envelope' or 'na-letter-white'.
            # Legal values of this attribute conform to ISO 10175
            # 'Document Printing Application (DPA)' [10],
            # plus any IANA registered extensions, per [3].
            # If this printer information is not known to the SA,
            # then this attribute shall always be set to 'unknown'.

        media-local-supported = STRING M O
            unknown
            # IPP 'media-supported' - only site-specific name values
            # Site-specific names of media supported by this printer,
            # in the locale specified by 'natural-language-configured'.
            # For example 'purchasing-form' (site-specific name)
            # as opposed to 'na-letter' (standard keyword from [10]).
            # If this printer information is not known to the SA,
            # then this attribute shall always be set to 'unknown'.

        printer-resolution-supported = STRING L M O
            unknown
            # IPP 'printer-resolution-supported'
            # (Compare with 'printer-uri-supported' in this template)
            # The unordered list of resolutions supported for printing
            # documents by this printer.
            # Each resolution supported is a string with 3 elements:
            # 1) Crossfeed direction resolution (positive integer)
            # 2) Feed direction resolution (positive integer)
            # 3) Resolution unit (enumerated value - see below)
            # Each resolution element is delimited by '>', for example:
            # '300> 300> dpi>, 600> 600> dpi>'
            # Legal values of resolution unit are 'dpi' (dots per inch)
            # and 'dpcm' (dots per centimeter).
            # These values are derived from the Printer MIB [6].
            # If this printer information is not known to the SA,
            # then this attribute shall always be set to 'unknown'.

        copies-supported = INTEGER O
            -1
            # IPP 'copies-supported'
            # The maximum number of copies of a document
            # that may be printed as a single job.
            # A value of -1 indicates unknown.
            # If this printer information is not known to the SA,
            # then this attribute shall always be set to '-1'.

        job-k-octets-supported = INTEGER O
            -1
            # IPP 'job-k-octets-supported'
            # The maximum size, in kilobytes, of a print job that
            # this printer will accept.
            # A value of -1 indicates unknown.
            # If this printer information is not known to the SA,
            # then this attribute shall always be set to '-1'.

        pages-per-minute = INTEGER O
            -1
            # IPP 'pages-per-minute'
            # The nominal number of pages per minute which may be
            # output by this printer (e.g., simplex, black-and-white).
            # This attribute is informative, NOT a service guarantee.
            # Typically, it is the value used in marketing literature
            # to describe this printer.
            # A value of -1 indicates unknown.
            # If this printer information is not known to the SA,
            # then this attribute shall always be set to '-1'.

        pages-per-minute-color = INTEGER O
            -1
            # IPP 'pages-per-minute-color'
            # The nominal number of color pages per minute which may be
            # output by this printer (e.g., simplex, color).
            # This attribute is informative, NOT a service guarantee.
            # Typically, it is the value used in marketing literature
            # to describe this printer.
            # A value of -1 indicates unknown.
            # If this printer information is not known to the SA,
            # then this attribute shall always be set to '-1'.

        delivery-orientation-supported = STRING L O
            unknown
            # Printer MIB 'prtOutputPageDeliveryOrientation'
            # The possible delivery orientations of pages as they are
            # printed and ejected from this printer.
            # If this printer information is not known to the SA,
            # then this attribute shall always be set to 'unknown'.
            unknown, face-up, face-down

        job-priority-supported = STRING L O
            unknown
            # IPP 'job-priority-supported'
            # (Compare with Salutation 'priority-levels-supported')
            # Indicates whether job priority scheduling is supported.
            # An IPP conformant printer which supports job priority
            # must always support a full range of priorities from
            # '1' to '100' (to ensure consistent behavior), therefore
            # this template attribute is an extended boolean.
            # If this printer information is not known to the SA,
            # then this attribute shall always be set to 'unknown'.
            unknown, true, false

        multiple-document-handling-supported = STRING L M O
            unknown
            # IPP 'multiple-document-handling'
            # (Compare with Salutation 'paper-output')
            # This attribute is only relevant if a job consists of two
            # or more documents.  The attribute relates to finishing
            # operations and the placement of one or more print-stream
            # pages into impressions and onto media sheets.
            # Please refer to 'multiple-document-handling' in the
            # 'IPP/1.0 Model and Semantics' [3] for full details.
            # If this printer information is not known to the SA,
            # then this attribute shall always be set to 'unknown'.
            unknown,
            single-document,
            separate-documents-uncollated-copies,
            separate-documents-collated-copies,
            single-document-new-sheet

-------------------- template ends here ----------------------