I tried to take a stab at which attributes are Mandatory and which are
not. I started this just as the "conformance" discussion started and so
where I have:
If Request and Printer:
If not Request and Printer:
If Request and not Printer:
If not Request and not Printer:
best-effort = substitute-as-needed:
best-effort = do-not-substitute:
lines which are not filled in, I think they can all be subsumed by the
generic statements about what happens as described in the
conformance section. Maybe, this should just be a discription of what is
Mandatory and what is not. Just thought I would kick start the
discussion. Also, the whole notion of defaults are not brought into this. I
like Bob's proposal to go back to Printer "default" attributes for all of the
Job/Printer Job Template attributes.
The text below I also posted as
ftp://ftp.pwg.org/pub/pwg/ipp/new_MOD/att-rev-3.txt
Scott
----------------------------------------------------------
Job Template Attributes
Job Naming Attributes (set by client/end user)
-> job-name
Job Syntax: name
Printer Syntax: ?
Mandatory Job: No
Mandatory Printer: No
If Request and Printer:
If not Request and Printer:
If Request and not Printer:
If not Request and not Printer:
best-effort = substitute-as-needed:
best-effort = do-not-substitute:
Job Sheet Attributes (set by client/end user)
-> job-sheets
Job Syntax: type4 keyword
Printer Syntax: setOf type4 keyword
Mandatory Job: No
Mandatory Printer: No
If Request and Printer:
If not Request and Printer:
If Request and not Printer:
If not Request and not Printer:
best-effort = substitute-as-needed:
best-effort = do-not-substitute:
standard values: none, default-sheet
Job Notification Attributes (set by client/end user)
-> notification-events
Job Syntax: setOf type2 keyword
Printer Syntax: setOf type2 keyword
Mandatory Job: No
Mandatory Printer: No
If Request and Printer:
If not Request and Printer:
If Request and not Printer:
If not Request and not Printer:
best-effort = substitute-as-needed:
best-effort = do-not-substitute:
standard values: job-completion, job-canceled,
job-problems,
printer-problems
none
-> notification-addresses
Job Syntax: setOf URL
Printer Syntax: setOf URLScheme
Mandatory Job: No
Mandatory Printer: No
If Request and Printer:
If not Request and Printer:
If Request and not Printer:
If not Request and not Printer:
best-effort = substitute-as-needed:
best-effort = do-not-substitute:
standard values: none, mailto, http, ftp
Job Scheduling Attributes (set by client/end user)
-> job-priority
Job Syntax: integer(1:00)
Printer Syntax: range with default
Mandatory Job: No
Mandatory Printer: No
If Request and Printer:
If not Request and Printer:
If Request and not Printer:
If not Request and not Printer:
best-effort = substitute-as-needed:
best-effort = do-not-substitute:
-> job-hold-until
Job Syntax: type2 keyword
Printer Syntax: setOf type2 keyword
Mandatory Job: No
Mandatory Printer: No
If Request and Printer:
If not Request and Printer:
If Request and not Printer:
If not Request and not Printer:
best-effort = substitute-as-needed:
best-effort = do-not-substitute:
standard values: no-hold, evening, night,
weekend, second-shift,
third-shift, none
Job Production Attributes (set by client/end user)
-> multiple-documents-are
Job Syntax: type1 keyword
Printer Syntax: setOf type1 keyword
Mandatory Job: No
Mandatory Printer: No
If Request and Printer:
If not Request and Printer:
If Request and not Printer:
If not Request and not Printer:
best-effort = substitute-as-needed:
best-effort = do-not-substitute:
standard values: single-document,
separate-documents-
uncollated-copies,
separate-documents-
collated-copies
-> copies
Job Syntax: integer(1:2**31-1)
Printer Syntax: range with default
Mandatory Job: No
Mandatory Printer: No
If Request and Printer:
If not Request and Printer:
If Request and not Printer:
If not Request and not Printer:
best-effort = substitute-as-needed:
best-effort = do-not-substitute:
-> finishing
Job Syntax: setOf type2 keyword
Printer Syntax: setOf type2 keyword
Mandatory Job: No
Mandatory Printer: No
If Request and Printer:
If not Request and Printer:
If Request and not Printer:
If not Request and not Printer:
best-effort = substitute-as-needed:
best-effort = do-not-substitute:
standard values: none, staple, staple-...,
saddle-stitch, edge-stitch,
punch, cover, bind
Document Production Attributes (set by client/end user)
-> media
Job Syntax: setOf type2 keyword
Printer Syntax: setOf type2 keyword
Mandatory Job: No
Mandatory Printer: No
If Request and Printer:
If not Request and Printer:
If Request and not Printer:
If not Request and not Printer:
best-effort = substitute-as-needed:
best-effort = do-not-substitute:
standard values: default, iso-a4, na-letter,
top, ...
-> number-up
Job Syntax: type3 keyword
Printer Syntax: setOf type3 keyword
Mandatory Job: No
Mandatory Printer: No
If Request and Printer:
If not Request and Printer:
If Request and not Printer:
If not Request and not Printer:
best-effort = substitute-as-needed:
best-effort = do-not-substitute:
standard values: none, 1, 2, 4
sides
Job Syntax: type2 keyword
Printer Syntax: setOf type2 keyword
Mandatory Job: No
Mandatory Printer: No
If Request and Printer:
If not Request and Printer:
If Request and not Printer:
If not Request and not Printer:
best-effort = substitute-as-needed:
best-effort = do-not-substitute:
standard values: 1-sided, 2-sided-long-edge,
2-sided-short-edge
-> printer-resolution
Job Syntax: type2 keyword
Printer Syntax: setOf type2 keyword
Mandatory Job: No
Mandatory Printer: No
If Request and Printer:
If not Request and Printer:
If Request and not Printer:
If not Request and not Printer:
best-effort = substitute-as-needed:
best-effort = do-not-substitute:
standard values: res-100, res-200, ...
-> print-quality
Job Syntax: type2 keyword
Printer Syntax: setOf type2 keyword
Mandatory Job: No
Mandatory Printer: No
If Request and Printer:
If not Request and Printer:
If Request and not Printer:
If not Request and not Printer:
best-effort = substitute-as-needed:
best-effort = do-not-substitute:
standard values: draft, normal, high, default
Document Format Attributes (set by client/end user)
-> document-format
Job Syntax: type2 keyword
Printer Syntax: setOf type2 keyword
Mandatory Job: No
Mandatory Printer: No
If Request and Printer:
If not Request and Printer:
If Request and not Printer:
If not Request and not Printer:
best-effort = substitute-as-needed:
best-effort = do-not-substitute:
standard values: other, PCL, PS, ...
Job Size Attributes (set by client/end user)
-> job-k-octets
Job Syntax: integer(0:2**31 - 1)
Printer Syntax: range (no default)
Mandatory Job: No
Mandatory Printer: No
If Request and Printer:
If not Request and Printer:
If Request and not Printer:
If not Request and not Printer:
best-effort = substitute-as-needed:
best-effort = do-not-substitute:
-> job-impressions
Job Syntax: integer(0:2**31 - 1)
Printer Syntax: range (no default)
Mandatory Job: No
Mandatory Printer: No
If Request and Printer:
If not Request and Printer:
If Request and not Printer:
If not Request and not Printer:
best-effort = substitute-as-needed:
best-effort = do-not-substitute:
-> job-media-sheets
Job Syntax: integer(0:2**31 - 1)
Printer Syntax: range (no default)
Mandatory Job: No
Mandatory Printer: No
If Request and Printer:
If not Request and Printer:
If Request and not Printer:
If not Request and not Printer:
best-effort = substitute-as-needed:
best-effort = do-not-substitute:
Job Attributes (set by the Printer)
Job Identification Attributes (set by Printer)
-> job-url
Job Syntax: URL
Mandatory Job: YES
Job Owner Attributes (set by Printer)
-> job-originating-user
Job Syntax: Name
Mandatory Job: YES
-> job-originating-host
Job Syntax: Name
Mandatory Job: No
-> user-locale
Job Syntax: setOf type2 keyword
Mandatory Job: No
standard values: see document locale
Job Status Attributes (set by Printer)
-> job-state (type1Enum)
Job Syntax: type1 keyword
Mandatory Job: YES
standard values: unknown, pending,
processing,
terminating, retained,
completed
-> job-state-reasons
Job Syntax: setOf type2 keyword
Mandatory Job: YES
standard values: incomplete, ...
-> job-state-as-text
Job Syntax: text
Mandatory Job: YES
-> output-device-assigned
Job Syntax: URL
Mandatory Job: No
-> submission-time
Job Syntax: dateTime
Mandatory Job: YES
-> number-of-intervening-jobs
Job Syntax: integer(0:2**31 - 1)
Mandatory Job: YES
-> job-message-from-operator
Job Syntax: text
Mandatory Job: No
-> completion-time
Job Syntax: dateTime
Mandatory Job: YES
Document Data Attributes (set by client/end user)
-> document-name
Document Syntax: name
Mandatory Document: YES
-> document-URL
Document Syntax: URL
Mandatory Document: Either this or content
-> document-content
Document Syntax: octetString
Mandatory Document: Either this or URL
Printer Description Attributes
Printer Identification Attributes (set by administrator)
-> printer-name
Printer Syntax: name
Mandatory Printer: YES
-> printer-URL
Printer Syntax: URL
Mandatory Printer: YES
Printer Description Attributes (set by administrator)
-> printer-location
Printer Syntax: text
Mandatory Printer: No
Printer Description Attributes (set by manufacturer)
-> printer-make-and-model
Printer Syntax: text
Mandatory Printer: No
-> maximum-printer-speed
Printer Syntax: integerUnits
Mandatory Printer: No
units: ppm, ipm, spm, lpm, cps, ...
Printer Status Attributes
Printer StatusAttributes (set by printer)
-> printer-state
Printer Syntax: type1 keyword
Mandatory Printer: YES
units: unknown, idle, processing,
stopped, ...
-> printer-state-reasons
Printer Syntax: setOf type2 keyword
Mandatory Printer: YES
standard values: partly-stopped, paper-jam,
paused, ...
-> printer-is-accepting-jobs
Printer Syntax: boolean(true, false)
Mandatory Printer: YES
-> printer-state-as-text
Printer Syntax: text
Mandatory Printer: YES
-> queued-job-count
Printer Syntax: integer(0:2**31 - 1)
Mandatory Printer: YES
Printer StatusAttributes (set by administrator)
-> printer-message-from-operator (text)
Printer Syntax: text
Mandatory Printer: No
Printer Behavior Attributes
Printer BehaviorAttributes (set by administrator)
-> printer-locale
Printer Syntax: setOf type2 keyword
Mandatory Printer: Yes
-> font-substitutions
Printer Syntax: setOf setOf font
Mandatory Printer: No
-> scheduling-algorithm
Printer Syntax: type3 keyword
Mandatory Printer: Yes
standard values: none, smallest-job-first,
time-received
IPP Model Attributes Review v3.0
4/18/97 1