Subject: Cap Free-Busy Request

From: "Craig Johnson" <[email-masked]>
Date: Fri, 18 Jul 2003 15:02:30 -0600

A discussion was started on Mar 31, 2003, regarding how a CUA can
request free-busy information using CAP.  It was noted that the CAP spec
promised to "specify how to search for available busy time information"
but there was nothing in the spec that described how to do this.  While
several ideas were discussed the key issue was not resolved.  Toward the
end of the discussion Pat Egen called for proposals, with text, to
resolve the issue.  So far, none have been presented. I wish to make a
proposal for requesting free-busy information via CAP.   From the
abovementioned discussion there seemed to be agreement on some issues:- 
The request should be simple: just specify targets and period of
interest.-  The request should be unambiguous.-  The CS should reply to
the request with the free-busy information (i.e. respond in real-time).-
 To respond in real-time, the CS should
retrieve/compose/generate/formulate/synthesize (or whatever it needs to
do) to provide the free-busy information. With this in mind, my proposal
for a CAP free-busy request is to use the SEARCH command with a
VFREEBUSY object.  The following is an example: C: BEGIN:VCALENDARC:
VERSION:2.0C: PRODID:-//Someone's ProdidC: CMD;ID=FB001:SEARCHC:
TARGET:UserAC: TARGET:UserBC: BEGIN:VFREEBUSYC:
DTSTART:20030804T080000ZC: DTEND:20030808T170000ZC: END:VFREEBUSYC:
END:VCALENDAR Upon receiving this command a Calendar Store (CS) will
compose a response for each TARGET.  A sample response to the above
request would be:  S: BEGIN:VCALENDARS: VERSION:2.0S: PRODID:-//Some
Calendar StoreS: CMD;ID=FB001:REPLYS: TARGET:UserAS: BEGIN:VREPLYS:
BEGIN:VFREEBUSYS: DTSTART:20030804T080000ZS: DTEND:20030808T170000ZS:
DTSTAMP:20030710T131103ZS: FREEBUSY:20030805T100000Z/20030805T110000ZS:
FREEBUSY:20030805T140000Z/20030805T150000ZS: END:VFREEBUSYS:
END:VREPLYS: END:VCALENDAR S: BEGIN:VCALENDARS: VERSION:2.0S:
PRODID:-//Some Calendar StoreS: CMD;ID=FB001:REPLYS: TARGET:UserBS:
BEGIN:VREPLYS: BEGIN:VFREEBUSYS: DTSTART:20030804T080000ZS:
DTEND:20030808T170000ZS: DTSTAMP:20030710T131103ZS:
FREEBUSY:20030806T130000Z/20030805T150000ZS: END:VFREEBUSYS:
END:VREPLYS: END:VCALENDAR This proposal has several advantages:-  It is
simple and straightforward.  No ambiguity about the request.-  It is
'natural' and 'familiar' because it uses an already defined, well
understood object (VFREEBUSY) of which one purpose is "to describe a
request for free/busy time" (RFC 2445, p. 58).  We aren't reinventing or
proposing something new or radically different.-  It is similar to an
iTIP free-busy request which also uses VFREEBUSY.  This creates
uniformity and consistency between CAP and iTIP for requesting free-busy
information.  This is somewhat important and advantageous.  Implementers
will expect that a free-busy request, whether sent via iMIP/iTIP,
CAP/iTIP, or CAP real-time, will result in the same data being returned!
 Using a similar scheme for requesting free-busy information is a step
toward uniformity.  In addition, this will facilitate and simplify
implementations that already have code to handle iTIP free-busy requests
by allowing re-use of that code for CAP free-busy requests.-  It
accommodates a free-busy request/response regardless of how (or whether)
a Calendar Store supports VFREEBUSY as an AGENDA component (i.e. whether
or not VFREEBUSY is listed on the COMPONENTS property in response to
GET-CAPABILITIES).  Calendar Stores that support the VFREEBUSY component
can create a response from them.  Calendar Stores that do not support
the VFREEBUSY component can compose a response from VEVENTs and/or other
vender specific data related to free-busy time.  CUAs are insulated from
the specifics of how a Calendar Store internally represents free-busy
information. The ABNF to accommodate this proposal simply adds
"freebusyc" to the "search-comp" definition.  The ABNF for
"search-comp" was not in the most recent draft (this was noted by B
Kahn  on 6/14/2003 and acknowledged by D Royer on 6/19/2003.)  The
following is the presumed ABNF for "search-comp" that includes
"freebusyc".  It would appear in section "10.8 SEARCH Command"   
ABNF for a "SEARCH" object is:    search-object = "BEGIN" ":"
"VCALENDAR" CRLF                 ;                 ; calprops MUST
include 'search-cmd'                 ;                   calprops       
           other-props                   1*(search-comp)                
  "END" ":" "VCALENDAR" CRLF    search-comp   = queryc / freebusyc      
            / iana-comp / x-component    freebusyc     = "BEGIN" ":"
"VFREEBUSY" CRLF                 ;                  ; The following MUST
occur exactly once.                 ;                   / dtstart       
           / dtend                 ;                 ; The following are
optional,                 ; but MUST NOT occur more than once.          
      ;                   / dtstamp                   / uid             
   ;                 ; The following are optional,                 ; and
MAY occur more than once.                 ;                   /
other-props                    "END" ":" "VFREEBUSY" CRLF I look forward
to response and feedback regarding this proposal. --C Johnson

---

From: Doug Royer <[email-masked]>
Date: Fri, 18 Jul 2003 17:09:28 -0600

Craig Johnson wrote:

> This proposal has several advantages:
> 
> -  It is simple and straightforward.  No ambiguity about the request.
> 
> -  It is ‘natural’ and ‘familiar’ because it uses an already defined, 
> well understood object (VFREEBUSY) of which one purpose is “to describe 
> a request for free/busy time” (RFC 2445, p. 58).  We aren’t reinventing 
> or proposing something new or radically different.

Would you want to disallow:

C: BEGIN:VCALENDAR
C: VERSION:2.0
C: PRODID:-//Someone’s Prodid
C: CMD;ID=FB001:SEARCH
C: TARGET:CalA
C: TARGET:CalB
C: BEGIN:VQUERY
C: QUERY:SELECT DTSTART,DTEND,FREEBUSY FROM VFREEBUSY
C:  WHERE DTEND >= ''20030808T170000Z
C:  AND DTSTART <= '20030804T080000Z'
C: END:VQUERY

-- 

  Doug Royer                     |   http://INET-Consulting.com
  -------------------------------|-----------------------------
  [email-masked]                 | Office: (208)612-INET
  http://Royer.com/People/Doug   |    Fax: (866)594-8574
                                 |   Cell: (208)520-4044

                 We Do Standards - You Need Standards

---

From: Doug Royer <[email-masked]>
Date: Fri, 18 Jul 2003 17:15:38 -0600

Craig Johnson wrote:

> With this in mind, my proposal for a CAP free-busy request is to
> use the SEARCH command with a VFREEBUSY object.  The following is an example:
>  
> 
> C: BEGIN:VCALENDAR
> C: VERSION:2.0
> C: TARGET:UserA
> C: TARGET:UserB

Above you use 'UserA' and 'UserB', did your proposal also
imply that you can do a search based on a UPN across CALIDs?
Or are those still CALID's that just happen to be named 'User'X ?

AND THANK YOU VERY MUCH FOR PROPOSING A SOLUTION. Without specific
proposals, 'I' end up adding and making up the solution and it
makes it SO MUCH easier when others provide solutions!!!

--