Subject: Re: IPP> PRO Section 9.7 vs. MOD section 4.3: need clarifica

From: Carl Kugler <[email-masked]>
Date: Tue, 7 Apr 1998 15:25:59 -0400

Tom Hastings wrote:
>At 16:24 04/06/1998 PDT, Carl Kugler wrote:
>>Tom Hastings wrote:
>>>At 14:28 04/06/1998 PDT, Carl Kugler wrote:
>>>>Thanks, Bob, I think I get it now.
>>>>
>>>>Maybe your answer also provides a clue to my next question:
>>>>
>>>>If attributes-charset and attributes-natural-language Job Description
>>>>Attributes are MANDATORY according to MOD/4.3, why aren't they shown as
>>>>MANDATORY in "Group 3: Job Object Attributes"  under
>>>>
>>>> Print-Job Response:
>>>> Print-URI Response:
>>>> Create-Job Response:
>>>> Send-Document Response:
>>>> Send-URI Response:
>>>> Get-Job-Attributes Response:
>>>> Get-Jobs Response:
>>>>
>>>>in MOD/15.3.4.3 "Validate the presence of a single occurrence of required
>>>>Operation attributes"?
>>>
>>>Because "attributes-charset" and "attributes-natural-language" MUST
>>>be returned in Group 1 (not Group 3) as shown.
>>>
>>>See sections 3.1.4.2 Response Operation Attributes and
>>>Sections 3.2 Printer Operations under each Xxx Response Group 1.
>>>
>>>As Bob explained, MANDATORY in the document mostly means that a
>>>Server MUST support the attribute.  It is a separate question as to whether
>>>the client MUST supply a MANDATORY attribute and whether an IPP object
>>>MUST return a MANDATORY attribute.  In some cases, the client MUST
>>>supply a MANDATORY attribute and in other cases the client NEED NOT
>>>supply the MANDATORY attribute in a request.  Similarly, in some cases,
>>>an IPP object MUST supply a MANDATORY attribute and in other cases the IPP
>>>object NEED NOT supply the MANDATORY attribute in a response.
>>>
>>>We tried to avoid using the word MANDATORY and OPTIONAL to mean whether
>>>a sender had to supply in a request or a response.  We tried to only
>>>use the words MANDATORY and OPTIONAL to mean whether an IPP object
>>>had to implement or not.
>>>
>>>So there are four combinations for attributes in requests, of which only
>>>three are possible:
>>>
>>>              MANDATORY     OPTIONAL  for an IPP object to support
>>>
>>>MUST supply   we have       we don't have
>>>
>>>MAY omit      we have       we have
>>>
>>
>>So, attributes-charset and attributes-natural-language are MANDATORY Job
>>Description Attributes (4.3.23 and 4.3.24) only in the sense that a Printer
>>must support them.  I.e., it must be able return them if a client requests
>>them specifically?
>
>More than that.  An IPP object must accept attributes-charset and
>attributes-natural-language as operation attributes and take action as
>specified
>by the semantics of those operation attributes.

But my question is specific to Job Description Attributes.  Aren't those
distinct from Operation attributes?

>
>>
>>>
>>>Keep those questions coming.  We can always improve the spec and fix
>>>bugs that you find.
>>>
>>>>
>>>>Could it be that the word MANDATORY has different meanings in these two
>>>>sections?
>>>
>>>See above.
>>>
>>>>
>>>> 4.3:  MANDATORY ... attribute[s] MUST be supported by Printer objects.
>>>>If it is not indicated as MANDATORY, then it is OPTIONAL
>>>>
>>>> 15.3.4.3:  MANDATORY attributes [are those] that an IPP object MUST
>>>>support and that a client MUST supply
>>>
>>>I think I see the confusion.  The entire section in 15.3.4.3 is:
>>>
>>>The following tables list all the attributes for all the operations by
>>>attribute group in each request and each response.  The left to right order
>>>of the groups is the order that the client supplies the groups as specified
>>>in Section 3.3.  The order of the attributes within a group is arbitrary,
>>>though the tables below lists the attributes in the following order with
>>>the following notation:
>>>
>>>(M) MANDATORY attributes that an IPP object MUST support and that a
>>client
>>>MUST supply
>>>
>>>(M*) MANDATORY attributes that an IPP object MUST support, but that a
>>>client may omit in a request or an IPP object may omit in a response
>>>
>>>(O) OPTIONAL attributes that an IPP object NEED NOT support
>>>
>>>(O*) OPTIONAL attributes that an IPP object NEED NOT support and a
>>client
>>>may omit in a request or an IPP object may omit in a response
>>>
>>>The first line is NOT the definition of MANDATORY, but is explaining
>>>the notation (M) which means MANDATORY and that a client MUST supply

---

From: Robert Herriot <[email-masked]>
Date: Tue, 07 Apr 1998 12:55:21 -0700

>distinct from Operation attributes?

Job Description attributes are one of two categories of Job (Object)
Attributes. The other category is job template attributes.  

Operation attributes (i.e. those attributes in the operation attributes 
group) are attributes that are passed as part of a request or response. Some 
of these attributes in a request set the values of job description 
attributes which have the same name but they never set job template 
attributes. Attributes in the job attributes group of a request cause job 
template attributes in the job object to be set, but not job description 
attributes.  

Now you're probably wondering why some job attributes are job template 
attributes and others are job description attributes. Some attributes have 
gone back and forth between these two categrories several times. The 
original idea was that job template attributes are those collection of job 
attributes which a client, even the end user, is allowed to modify.  These 
attributes typically have a list of supported values for the client to 
choose from and a default value if the client doesn't choose a value.  The 
job description attributes are either set by the printer with no input from 
the client, e.g. job-id, or they are characteristics of a job that a user 
has no choice about, e.g. job-k-octets and document-format. These latter 
attributes have supported values and sometimes a default, but a client 
doesn't have a choice. The number of octets and the document-format are 
inherent qualities of the document.

>
>Section 4.3 says that attributes-charset and attributes-natural-language
>Job Description Attributes MUST be supported by printer objects.
>
>(M*) indicates MANDATORY attributes that an IPP object MUST support, but
>that a client may omit in a request or an IPP object may omit in a response.
>
>Isn't that the case for these particular Job Description Attributes?  Or is
>there some subtle difference between the "job-description" attribute group
>described in section 4.3 and the "Group 3: Job Object Attributes"
described in
>15.3.4.3?

I hope the above explanation clears up the difference between job object 
attributes and job description attributes for requests.  For reponses, the 
job attributes group can contain any job attribute, including job 
description and job template attributes.