Skip to content

Latest commit

 

History

History
301 lines (177 loc) · 12.2 KB

IPP-EXTENSIONS.md

File metadata and controls

301 lines (177 loc) · 12.2 KB
title author copyright
PAPPL IPP Extensions
Michael R Sweet
Copyright © 2022-2023 by Michael R Sweet

1. Introduction

This document describes the IPP extensions unique to the Printer Application Framework (PAPPL). Conformance words including MAY, MUST, MUST NOT, RECOMMENDED, REQUIRED, SHOULD, SHOULD NOT

2. Terminology

The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in RFC2119.

Other printing terminology is imported from RFC 8011: Internet Printing Protocol/1.1: Model and Semantics and PWG 5100.22-2019: IPP System Service v1.0 (SYSTEM).

3. Model

The Printer Application Framework (PAPPL) provides a generic framework for integrating legacy printer drivers with a common IPP Everywhere front-end. The framework implements a subset of the IPP System Service to manage multiple IPP Printers. Each Printer has an associated Output Device whose URI ("smi55357-device-uri") and driver ("smi55357-driver") specify where and how to communicate with the Output Device.

In order to support remote management of Printers, the existing Create-Printer operation is amended and two new operations are added to list the available Output Devices and drivers. Additionally, a third new operation automates adding multiple printers.

4. IPP Operations

All of the new operations can require authentication and authorization as an Operator or Administrator.

4.1 PAPPL-Create-Printers

The REQUIRED PAPPL-Create-Printers System operation creates zero or more Printers for newly discovered Output Devices.

4.1.1 PAPPL-Create-Printers Request

Group 1: Operation Attributes

  • Natural Language and Character Set: The "attributes-charset" and "attributes-natural-language" attributes as described in Section 4.1.4.1 of RFC 8011.

  • Target: The "system-uri" (uri) operation attribute, which is the target for this operation.

  • Requesting User Name: The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied by the Client as described in Section 9.3 of RFC 8011.

  • "smi55357-device-type" (1setOf type2 keyword): The Client OPTIONALLY supplies and a System MUST support this attribute which lists one or more device types to query; the default is 'all'.

4.1.2 PAPPL-Create-Printers Response

Group 1: Operation Attributes

  • Natural Language and Character Set: The "attributes-charset" and "attributes-natural-language" attributes as described in Section 4.1.4.1 of RFC 8011.

Groups 2-N: Printer Attributes

  • “printer-id” (integer(1:65535)): The System MUST return this attribute.
  • “printer-is-accepting-jobs” (boolean): The System MUST return all three of these attributes.
  • “printer-state” (type1 enum): The System MUST return this attribute.
  • “printer-state-reasons” (1setOf type2 keyword): The System MUST return this attribute.
  • “printer-uuid” (uri(45)): The System MUST return this attribute.
  • “printer-xri-supported” (1setOf collection): The System MUST return this attribute.

4.2 PAPPL-Find-Devices

The REQUIRED PAPPL-Find-Devices System operation queries the System for a list of known or discovered Output Devices that can be used with the Create-Printer operation. The System MAY cache the list of Output Devices but the list MUST have been updated or confirmed within the 300 seconds prior to receiving a Client request.

Access Rights: The authenticated user (see Section 9.3 of RFC 8011) performing this operation MUST be an Operator or Administrator of the System (see Sections 1 and 9.5 of RFC 8011). Otherwise, the IPP System MUST reject the operation and return 'client-error-forbidden', 'client-error-not-authenticated', or 'client-error-not-authorized' as appropriate.

4.2.1 PAPPL-Find-Devices Request

Group 1: Operation Attributes

  • Natural Language and Character Set: The "attributes-charset" and "attributes-natural-language" attributes as described in Section 4.1.4.1 of RFC 8011.

  • Target: The "system-uri" (uri) operation attribute, which is the target for this operation.

  • Requesting User Name: The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied by the Client as described in Section 9.3 of RFC 8011.

  • "smi55357-device-type" (1setOf type2 keyword): The Client OPTIONALLY supplies and a System MUST support this attribute which lists one or more device types to query; the default is 'all'.

4.2.2 PAPPL-Find-Devices Response

Group 1: Operation Attributes

  • Natural Language and Character Set: The "attributes-charset" and "attributes-natural-language" attributes as described in Section 4.1.4.1 of RFC 8011.

Group 2: System Attributes

  • "smi55357-device-col" (1setOf collection): A list of Output Devices supported by the System.

4.3 PAPPL-Find-Drivers

The REQUIRED PAPPL-Find-Drivers System operation queries the System for a list of known or matching Output Device drivers that can be used with the Create-Printer operation.

Access Rights: The authenticated user (see Section 9.3 of RFC 8011) performing this operation MUST be an Operator or Administrator of the System (see Sections 1 and 9.5 of RFC 8011). Otherwise, the IPP System MUST reject the operation and return 'client-error-forbidden', 'client-error-not-authenticated', or 'client-error-not-authorized' as appropriate.

4.3.1 PAPPL-Find-Drivers Request

Group 1: Operation Attributes

  • Natural Language and Character Set: The "attributes-charset" and "attributes-natural-language" attributes as described in Section 4.1.4.1 of RFC 8011.

  • Target: The "system-uri" (uri) operation attribute, which is the target for this operation.

  • Requesting User Name: The "requesting-user-name" (name(MAX)) attribute SHOULD be supplied by the Client as described in Section 9.3 of RFC 8011.

  • "smi55357-device-id" (text(MAX)): The Client OPTIONALLY supplies and a System MUST support this attribute which specifies an IEEE-1284 device ID for filtering the list of drivers.

4.3.2 PAPPL-Find-Drivers Response

Group 1: Operation Attributes

  • Natural Language and Character Set: The "attributes-charset" and "attributes-natural-language" attributes as described in Section 4.1.4.1 of RFC 8011.

Group 2: System Attributes

  • "smi55357-driver-col" (1setOf collection): A list of drivers supported by the System.

5. IPP Attributes

5.1 Operation Attributes

5.1.1 smi55357-device-id (text(MAX))

This operation attribute specifies the IEEE-1284 device ID string for an Output Device.

5.1.2 smi55357-device-type (1setOf type2 keyword)

This operation attribute specifies a list of Output Device connection types the Client wishes to query. The following keyword values are defined:

  • 'all': All devices
  • 'dns-sd': Devices discovered via DNS-SD
  • 'local': Local (directly connected) devices
  • 'network': Network devices
  • 'other-local': Devices connected via another local interface
  • 'other-network': Devices discovered via another network protocol
  • 'snmp': Devices discovered via SNMP
  • 'usb': Devices connected via USB

5.1.3 smi55357-device-uri (uri)

This attribute specifies the URI for the Output Device.

5.1.4 smi55357-driver (keyword)

This attribute specifies the driver for the Output Device.

5.2 Printer Status Attributes

5.2.1 smi55357-device-uri (uri)

This REQUIRED attribute specifies the URI for the Output Device.

5.2.2 smi55357-driver (keyword)

This REQUIRED attribute specifies the driver for the Output Device.

5.3 System Status Attributes

5.3.1 smi55357-device-col (1setOf collection)

This attribute lists available Output Devices. The REQUIRED "smi55357-device-id", "smi55357-device-name", and "smi55357-device-uri" member attributes provide information about an individual Output Device.

5.3.1.1 smi55357-device-id (text(MAX))

This member attribute provides the IEEE-1284 Device ID for the Output Device.

5.3.1.2 smi55357-device-info (text(MAX))

This member attribute provides descriptive information about the Output Device.

5.3.1.3 smi55357-device-uri (uri)

This member attribute provides the URI value to use with the Create-Printer operation.

5.3.2 smi55357-device-uri-schemes-supported (1setOf uriScheme)

This REQUIRED attribute lists the supported "smi55357-device-uri" URI schemes.

5.3.3 smi55357-driver-col (1setOf collection)

This attribute lists available or matching drivers for Output Devices. The REQUIRED "smi55357-device-id", "smi55357-driver", and "smi55357-driver-info" member attributes provide information about a driver.

5.3.3.1 smi55357-driver (keyword)

This member attribute provides the driver name as a keyword.

5.3.3.2 smi55357-device-id (text(MAX))

This member attribute provides the IEEE-1284 Device ID for Output Devices supported by the driver.

5.3.3.3 smi55357-driver-info (text(MAX))

This member attribute provides descriptive information about the driver.

6. Amended Semantics for Existing Operations

6.1 Create-Printer: smi55357-device-uri and smi55357-driver

This registration amends the Create-Printer operation to accept the "smi55357-device-uri" and "smi55357-driver" operation attributes. The System MUST either accept the provided values and copy them to the corresponding Printer Status attributes of the new Printer or reject them with the 'client-error-attributes-or-values-not-supported' status code.

When the "smi55357-driver" attribute has the value 'auto', the System copies the value of the automatically-determined driver to the corresponding Printer Status attribute.

7. References

IPP-EVERYWHERE: IPP Everywhere™ technology landing page

PAPPL: Printer Application Framework (PAPPL)

PWG5100.22: IPP System Service v1.0 (SYSTEM), November 2019

RFC2199: Key words for use in RFCs to Indicate Requirement Levels, BCP14, March 1997

RFC8011: Internet Printing Protocol/1.1: Model and Semantics, STD92, January 2017

8. IANA Considerations

8.1 Attribute Registrations

Operation attributes:	Reference
--------------------	---------
smi55357-device-id (text(MAX))	[PAPPL-IPP]
smi55357-device-type (1setOf type2 keyword)	[PAPPL-IPP]
smi55357-device-uri (uri)	[PAPPL-IPP]
smi55357-driver (keyword)	[PAPPL-IPP]

Printer Status attributes:	Reference
------------------------------	---------
smi55357-device-uri (uri)	[PAPPL-IPP]
smi55357-driver (keyword)	[PAPPL-IPP]

System Status attributes:	Reference
------------------------------	---------
smi55357-device-col (1setOf collection)	[PAPPL-IPP]
  smi55357-device-id (text(MAX))	[PAPPL-IPP]
  smi55357-device-info (text(MAX))	[PAPPL-IPP]
  smi55357-device-uri (uri)	[PAPPL-IPP]
smi55357-device-uri-schemes-supported (1setOf uriScheme)	[PAPPL-IPP]
smi55357-driver-col (1setOf collection)	[PAPPL-IPP]
  smi55357-device-id (text(MAX))	[PAPPL-IPP]
  smi55357-driver (keyword)	[PAPPL-IPP]
  smi55357-driver-info (text(MAX))	[PAPPL-IPP]

8.2 Type2 keyword Registrations

Attributes (attribute syntax)
  Keyword Attribute Value	Reference
  -----------------------	---------
smi55357-device-type (1setOf type2 keyword)	[PAPPL-IPP]
  all	[PAPPL-IPP]
  dns-sd	[PAPPL-IPP]
  local	[PAPPL-IPP]
  network	[PAPPL-IPP]
  other-local	[PAPPL-IPP]
  other-network	[PAPPL-IPP]
  snmp	[PAPPL-IPP]
  usb	[PAPPL-IPP]

8.2 Type2 enum Registrations

Attributes (attribute syntax)
  Enum Value	Enum Symbolic Name	Reference
  ----------	------------------	---------
operations-supported (1setOf type2 enum)	[RFC8011]
  0x402B	PAPPL-Find-Devices	[PAPPL-IPP]
  0x402C	PAPPL-Find-Drivers	[PAPPL-IPP]
  0x402D	PAPPL-Create-Printers	[PAPPL-IPP]

8.3 Operation Registrations

Operation Name	Reference
--------------	---------
Create-Printer (Extension)	[PAPPL-IPP]
PAPPL-Create-Printers	[PAPPL-IPP]
PAPPL-Find-Devices	[PAPPL-IPP]
PAPPL-Find-Drivers	[PAPPL-IPP]