Subject: IPP> MOD - Mandatory attributes

From: Scott Isaacson <[email-masked]>
Date: Tue, 22 Apr 1997 12:29:46 -0600

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