![]() |
Sun ONE Calendar Server Programmer's Manual |
Chapter 7 WCAP Commands
This chapter is divided into two parts: topics of common interest, and the individual WCAP commands for Sun ONE Calendar Server.
Common topics
Access Control Entries
Application IDs (appid parameter)
Choosing a Different Language or Character Set
Deleting or Modifying Recurring Components
Fetching Specific Component State Data Commands
WCAP commands accept various parameters, which are defined for each command in the Commands section. Unless otherwise noted, the maximum length value for any parameter accepted by WCAP commands is 1024 characters. While no input length checking is performed by WCAP, any parameter value longer than 1024 can produce unpredictable results.
Table 7-1 lists the WCAP commands in alphabetical order.
Common Topics
This section discusses topics of common interest that apply to one or more commands. The topics are listed in alphabetical order.
Access Control Entries
Access Control Entries (ACE strings) determine access control for calendars. There may be multiple ACE strings that apply to a single calendar. Collectively, all the ACE strings that apply to a calendar are called an Access Control List (ACL). As the system searches the ACL list, the first ACE encountered that either grants of denies access will be used. Thus, the ordering of an ACL is significant. ACE strings should be ordered such that the more specific ones appear before the more general ones.
Some access is "built-in". For example, primary owners have access to everything in their calendars. The system does not need to perform access control checks for primary owners accessing their own calendars.
The set_calprops command uses the acl parameter to facilitate storing of ACE strings to a calendar. The acl parameter is a semicolon-separated list of ACE strings. You may set the default acl in the ics.conf file by changing the calstore.calendar.default.acl preference, or by using the cscal command line utility. See the Sun ONE Calendar Server Administrator's Guide for further information on configuration settings.
Due to a limitation on the user interface, do not add ACE strings for more than 75 users per calendar.
Here is an example of an ACE string:
The string has four elements separated by three "^" characters. The four elements are:
ACE Summary
The first element of an ACE tells who the ACE applies to.
This could be an individual user (specified by user ID), a domain, or a class-type of user. There are four types of classes for users:
All users, represented by the string "@".
Primary owners of a calendar, represented by the string "@@p".
Owners of a calendar, represented by the string "@@o".
Non-owners of a calendar, represented by the string "@@n".
The second element of an ACE indicates what the ACE applies to.
The ACE can be applied to:
The entire calendar.
Applies to both components and calendar properties. To indicate the entire calendar, pass in the value a.
The components of the calendar only.
Applies to calendar components (i.e events/todos). To indicate just the components, pass in the value c.
The calendar properties of the calendar only.
Applies to calendar properties (i.e display name, ownerlist). To indicate calendar properties only, pass in the value p.
The third element of an ACE indicates what access values the ACE applies to.
Multiple values may be specified at the same time. To do this, the caller must pass in a string to indicate which bits to check.
Table 7-2 lists the Access Control characters used in ACE strings. The third element contains a string with one or more of the Access Control characters.
For example, to grant read access, the value r is passed in. To grant write and delete access, the value wd is passed in.
The fourth element of an ACE indicates whether to grant or deny access.
The ACE can either grant or deny access.
Here is a quick summary of the order of an ACE:
Extended Examples
who = A string, type (str).
flags = One of the characters c, p, or a.
how = An access-string composed of one or more of the access control characters described earlier in Table 7-2.
Here are some examples of circumstances and how the ACE would be set in the acl parameter for jdoe's calendar:
To grant john read access to both components and calendar properties (acl=john a r g), and to grant susan write and delete access to components only (acl=susan c wd g), the entire command is:
set_calprops.wcap?id=${SESSIONID}&calid=jdoe&acl=john^a^r^g; susan^c^wd^g
To grant all users in a domain schedule, freebusy, and read access to a calendar (@domainname a sfr g), to grant owners write and delete access to components only (@@o c wd g), to grant owners self-admin, schedule, freebusy, and read access to both components and calendar properties (@@o a zsfr g), to deny susan all access to both components and calendar properties (susan a zsfdwr d), and to grant read access to all users (@ c r g), the entire command is:
set_calprops.wcap?id=${SESSIONID}&calid=jdoe&acl=@domainname^a^sfr^g;@@o^c^wd^g;@@o^a^zsfr^g;susan^a^zfsdwr^d;@^c^r^g
Mapping User Interface Operations to ACLs
Table 7-3 shows the ACLs necessary to achieve the desired user interface operation.
Application IDs (appid parameter)
The following WCAP commands accept the appid parameter:
deletecomponents_by_range - (ENS notifications not yet implemented)
deleteevents_by_range - (ENS notifications not yet implemented
deletetodos_by_range - (ENS notifications not yet implemented This WCAP command parameter is used to set the value of an X-Token that ENS returns with notifications.
Applications passing this parameter in with the appropriate WCAP command can detect which ENS notifications they originated by checking the value of the X-Token X-NSCP-COMPONENT-SOURCE. Note that this X-Token is not returned by WCAP commands, only ENS notifications.
This parameter is a runtime parameter. That is, nothing is stored in the database.
If appid is present, the Event Notification Service (ENS) returns the value of appid as the value of the X-Token X-NSCP-COMPONENT-SOURCE. If the appid parameter is missing, ENS assigns one of the standard values to the X-Token (WCAP, CALENDAR EXPRESS, ADMIN). (Note that ADMIN is not yet implemented.)
Table 7-4 shows the effect of the presence of the appid parameter on the value of the X-Token X-NSCP-COMPONENT-SOURCE. For more information about ENS, see the Sun ONE Messaging and Collaboration Event Notification Service Manual.
Note For Sun ONE Calendar Server 5.1.1, ENS notifications are only returned for some of the commands (as noted earlier). The other commands will be implemented in a later release.
Choosing a Different Language or Character Set
To insert a request for data to be returned in a language other than the system default, set either the lang or charset parameter. Note that the system default for language is now a server preference that you set in the ics.conf file. See the Sun ONE Calendar Server Administrator's Guide for details. The login command uses only the lang parameter.
For the set_calprops command, in most cases, specifying the lang parameter is enough. However, it may be necessary, in some instances, to use the charset parameter instead of the lang parameter. For example, if the user wants the requested data returned in a specified character set, then the user must specify it using charset. One possible charset value is: iso-8859-1. For more information on formatting specifications, see the RFCs referenced in "Formatting of Time, Strings, Parameters, Etc." in this chapter.
Please note that when the user requests data in iCalendar or XML format, data always returns in UTF-8 format, per the RFC specification. Setting charset will not change this.
Here is a list of the valid lang values:
Deleting or Modifying Recurring Components
When you delete or modify a component, you can (and sometimes must) specify whether or not it is recurring, and, if it is, whether to delete the recurrences as well as the original event or todo.
Use the mod parameter to choose which option you want:
For each option, the user must pass in the rid parameter which specifies the recurrence ID of the event, and the type of deletion or modification to do.
Deletions are done with the deleteevents and deletetodos series of commands, and modifications are done using the storeevents and storetodos commands. Examples Using deleteevents_by_id
To delete just the single instance of the event, the mod parameter should be set to 1. For example, this URL would delete just the event that occurs on the date March 1, 2002 11:22:33 AM GMT.
http://webcalendarserver/deleteevents_by_id.wcap?id=23423423434abc& calid=jdoe&uid=001&rid=20020301T112233Z&mod=1
To delete the event and all future instances of the event, the mod parameter should be set to 2. For example, this URL would delete the event that occurs on the date March 1, 2002 11:22:33 AM GMT and all future instances of this event (uid 001).
http://jdoe/deleteevents_by_id.wcap?id=23423423434abc&calid=jdoe&ui d=001&rid=20020301T112233Z&mod=2
To delete the event and all prior instances of the event, the mod parameter should be set to 3.
For example, this URL would delete the event that occurs on the date March 1, 200211:22:33 AM GMT and all prior instances of this event (uid 001).
http://jdoe/deleteevents_by_id.wcap?id=23423423434abc&calid=jdoe&ui d=001&rid=20020301T112233Z&mod=3
To delete all instances of the event, the mod parameter should be set to 4. For example, this URL would delete ALL instances of the event (uid 001).
http://jdoe/deleteevents_by_id.wcap?id=23423423434abc&calid=jdoe&ui d=001&rid=20020301T112233Z&mod=4 Encoded Characters
In the example, the encoded list of parameters for cal includes some encoded characters. Here are some examples of encoded characters:
The %XX is the hexadecimal ASCII value of the character. For example, the '&' character is 26 in hex (38 in ASCII).
Error Handling
Each call to a WCAP command that returns component data (fetch, delete, and store commands) also returns an array and an error string.
Error String
The error string, errno, returns the non-zero error number for the transaction. The value is 0 if the command succeeded.
Layer Error Number Array.
In addition to the possibility of the transaction failing, it is possible that one or more of the layers may have failed during the transaction. Layer refers to one of the multiple actions or items that are being requested. For example, in fetch_components_by_range, you may pass in a list of calendar IDs to fetch from; in this case, each calendar is a layer.
The error number is specific to a layer. The index of the layer array maps to the index number of the layer passed in. Therefore, layer_errno[3], refers to the third item you passed in to the fetch command.
An error in one layer does not prevent the other layers from being processed.
There are three layer error arrays:
Layer Count Array.
In addition, for deleteevents_by_id and deletetodos_by_id, the commands return a second array, delete_event_count, or delete_todo_count respectively. This array contains the count of successful deletions before the error occurred. This is useful if the components passed have recurrences. As with the layer error number array, the index of the layer count array maps to the index number of the layer passed in to the command.
For example, if you pass in three components to deleteevents_by_id and you get an error in the second event, you find the error code in delete_layer_errno[2]. You then look in delete_event_count[2] to see how many occurrences of the event were successfully deleted before the error occurred.
Error Codes
Table 7-6 list some of the error codes returned in the error number array.
Replacing versus Appending Parameter Values
Two commands, storeevents and storetodos, allow you to update parameter values. When updating current values for a component, you can either replace the current values with the new ones being passed in, or you can append the new values to the current values. This applies only to parameters that can accommodate multiple values (that is, parameters that use semicolon-separated values, such as the attendees parameter). The default is to append (replace=0) the new values to the current values. If you want to replace the current values with the new values being passed in, include the replace parameter in the command, with the value set to 1 (replace=1). If you do not include the replace parameter in the command, the system assumes the default setting (replace=0) and appends the new values to the old values.
There is an exception. The recurrence parameters rrules, rdates, exrules, and exdates are always in replace mode, regardless of the value of the replace parameter.
Fetching Component Data
The component_type parameter directs WCAP to return either only events, only todos, or both events and todos. The keyword arguments, respectively, are: event, todo, or all. The parameter is not required. Its default is all, returning both events and todos. If an unrecognized value is passed in, the default value is used.
It is found in the following four commands:
Fetching Recurrence Data
The compressed parameter allows you to retrieve a reduced amount of recurrence data. The parameter defaults (compressed=0) to the compressed format, which returns data without the rrule, rdate, exrule, and exdate properties as the default. To receive all the recurrence data back from the following commands, use compressed=1.
This new parameter was added to the following commands:
Note This parameter is only valid when fmt-out is text/calendar or text/xml.
Fetching Specific Component State Data
All fetch commands, except fetchcomponents_by_attendee_error, have the ability to fetch by component state, using the parameter compstate. The default (compstate=ALL) is to fetch all component states, Use this parameter to limit the type of components fetched.
If the parameter is not specified, the default value is ALL.
Table 7-7 lists component state values. A component state pertains either to the attendee or the organizer.
Table 7-7    Component State Values for compstate Parameter
Value
Attendee
Comment
Organizer's meeting sent. Not all attendees have been processed by the group scheduling engine yet.
Formatting of Time, Strings, Parameters, Etc.
Find the exact format and definition for all times, strings, parameters, etc. by referring to RFC 2445, RFC 2446, and RFC 2447. Unless otherwise noted, all WCAP commands follow these specifications.
The RFC's may be found at the IETF web site:
http://www.ietf.org/rfc/rfc2445.txt
http://www.ietf.org/rfc/rfc2446.txt
http://www.ietf.org/rfc/rfc2447.txt
Note As a reminder, the maximum parameter value length is 1024 characters.
For more information on time zones, see Time Zones, which follows later in this section.
Freebusy Access
Freebusy access means that the user may see scheduled time on the calendar but is not allowed to see the event details. Instead, just the word "Busy" appears by the time block. Blocks of time without any scheduled events are listed also, with the word "Free" next to them.
For example, a calendar called jdoe has the following events:
100:00-11:00
first meeting
12:00-1:00
lunch
3:00-4:00
second meeting
Suppose user john is given freebusy access to the calendar jdoe. The freebusy time for jdoe (from 9:00 to 6:00) would be the following:
9-10
:
Free
10-11
:
Busy
11-12
:
Free
12-1
:
Busy
1-3
:
Free
3-4
:
Busy
4-6
:
Free
Notice that john does not know why the user is busy, but simply knows when the user is busy.
Output Format
WCAP commands can request the output format in three content types:
To change the output format, set fmt-out to the target value. If fmt-out is not specified, the default format of text/js will be returned.
Note In order to start the Sun ONE Calendar Server user interface (Calendar Express), you must specify fmt-out=text/html in the login command. This is the only instance of this format type.
Condensed Output
The brief parameter allows for the printing of condensed event and todo data in JavaScript. The returned output is about half the size of the regular output and encompasses the following parameters:
Table 7-8    Output Parameters Included in brief Output
Parameters Included for Events
Parameters Included for Todos
Recurrence Handling
There are six parameters used to specify recurrence:
rrules - Semicolon-separated list of quoted recurrence-rule strings for recurring events.
rdates - Semicolon-separated list of ISO 8601 date strings listing recurrence dates.
exrules - Semicolon-separated list of quoted recurrence-rule strings for dates to exclude.
exdates - Semicolon-separated list of ISO 8601 date strings listing dates to exclude.
rid - ISO 8601 DateTimeString giving the recurrence ID of an event.
mod - Numeric values 1-4. Modifier telling which instances of the event to store.
rchange - A boolean specifying whether or not to expand recurrences in storeevents, and storetodos. For storeevents and storetodos, the rrules, rdates, exrules, and exdates parameters always function in replace mode. That is, no matter what the replace parameter value is set to, the values passed in always replace the parameter value, rather being appended to it. For more information on the replace parameter, see Replacing versus Appending Parameter Values.
rrules
The rrules parameter takes a semicolon-separated list of quoted recurrence rule strings. Each string represents a recurrence rule of the event. Each string must be enclosed in quotes. There are many parameters possible for recurrence rules. See RFC 2445 for a complete description of the syntax.
Two very useful parameters for specifying recurrence are freq and count:
The freq parameter in a rule defines the periodicity of the event, and has the following possible values:
DAILY
The event recurs daily.
WEEKLY
The event recurs weekly.
MONTHLY
The event recurs monthly.
YEARLY
The event recurs yearly.
The count parameter in a rule defines how many times the meeting will repeat. If you do not specify the count, the default is the maximum number of recurrences allowed.The default maximum is 60. To change the maximum number, set the server configuration preference calstore.recurrence.bound. The following example shows an rrules parameter that specifies two recurrence rules:
rrules="count%3D10%3Bfreq%3Ddaily";"freq%3Dweekly%3Bcount%3D4"
(COUNT=10;FREQ=DAILY and FREQ=WEEKLY;COUNT=4 encoded)
The first rule specifies that the event is to occur daily for 10 instances. The second rule specifies that the event is to occur weekly for 4 instances.
The following example URL passes the example rrules parameter:
http://webcalendarserver/storecomponents.wcap?id=b5q2o8ve2rk02nv9t6
&calid=jdoe&uid=333&dtstart=20020301T112233Z
&rrules="count%3D10%3Bfreq%3Ddaily";"freq%3Dweekly%3Bcount%3D4"
&dtend=20020301T112233&summary=uuuurdates
The rdates parameter takes a semicolon-separated list of date-time specifications where each date-time gives a recurrence date of the event.
For example, the following rdates parameter specifies a recurring event with two recurrence dates (3/31/02 11:22:33 and 5/31/02 11:22:33):
rdates=20020331T112233;20020531T112233
The following example URL passes the example rdates parameter:
http://webcalendarserver/storecomponents.wcap?id=b5q2o8ve2rk02nv9t6
&calid=jdoe&uid=333&dtstart=20020301T112233Z
&rdates=20020331T112233;20020531T112233
&dtend=20020301T112233&summary=uuuu
If you want to the change the recurrence rule after a certain date, you must set rchange to 1.
exrules
The exrules parameter takes a semicolon-separated list of quoted recurrence rule strings where each rule is an excluded recurrence of the event.
For example, the following exrules parameter specifies a recurring event that does not recur at the times specified by the two rules:
exrules="count%3D10%3Bfreq%3Ddaily";"freq%3Dweekly%3Bcount%3D4"
(COUNT=10;FREQ=DAILY and FREQ=WEEEKLY;COUNT=4 encoded)
The first rule is for the event not to occur daily for 10 instances. The second rule is for the event not to occur weekly for 4 instances.
The following example URL passes the example exrules parameter:
http://webcalendarserver/storecomponents.wcap?id=b5q2o8ve2rk02nv9t6
&calid=jdoe&uid=333&dtstart=20020301T112233Z
&exrules="count%3D10%3Bfreq%3Ddaily";"freq%3Dweekly%3Bcount%3D4"
&rrules="count%3D100%3Bfreq%3Ddaily"&dtend=20020301T112233&summary= uuuuexdates
The exdates parameter takes a semicolon-separated list of date-time specifications. Each date-time represents an excluded date of the event.
For example, the following exdates parameter specifies a recurring event that does not occur on the two specified dates (3/31/02 11:22:33 and 5/31/02 11:22:33):
exdates=20020331T112233;20020531T112233
The following example URL passes the example exdates parameter:
http://webcalendarserver/storecomponents.wcap?id=b5q2o8ve2rk02nv9t6
&calid=jdoe&uid=333&dtstart=20020301T112233Z
&exdates=20020331T112233;20020531T112233
&rrules="COUNT%3D200%3BFREQ=DAILY";dtend=20020301T112233&summary=uu uurid
This parameter specifies a unique recurrence date of an event or todo. Use rid in conjunction with the mod parameter to specify a range of events and todos to be modified.
http://webcalendarserver/storecomponents.wcap?id=b5q2o8ve2rk02nv9t6
&calid=jdoe&uid=333&dtstart=20020301T112233Z
&rid=20020331T112233;dtend=20020301T112233&summary=uuuu&mod=1mod
This parameter specifies whether to apply the changes to one or more instances of the event or todo. The mod values result in the following behavior:
For a non-recurring event or todo, the rid is 0.
rchange
The rchange parameter specifies whether recurrences are expanded in storeevents, and storetodos. Normally, events and todos calendar components are not expanded, so the parameter defaults to 0.
However, you might not want to expand recurrences when you are modifying multiple events. For example, suppose a meeting recurs every Friday starting Jan. 1, 2002. Use the following URL to change the summary of each event after Feb. 1, 2002 to changed-event. This example sets the rchange parameter to 0, to make the modification without adding additional events:
http://webcalendarserver/storeevents.wcap?id=b5q2o8ve2rk02nv9t6
&calid=jdoe&uid=abcxyz&dtstart=20020201T112233Z
&rrules="byday%3Dfr%3Bfreq%3Dweekly"&summary=changed-event
&rid=20020201T112233Z&mod=2&rchange=0Time Zones
To support a universal standard, Sun ONE Calendar Server uses the date and time strings in Greenwich Mean Time (GMT) or Coordinated Universal Time (UTC), called Zulu time. The server stores and returns all date and time strings from the database in Zulu time. WCAP converts the Zulu times to the appropriate time zone settings depending upon the value of the tzid and tzidout parameters.
The tzid parameter is used for date and time strings passed in with the dtstart, dtend, and rid parameters, which are not already in Zulu time. WCAP uses the value of the tzid parameter to calculate the Zulu time. If the tzid parameter is not passed in, the server's default time zone is used to calculate Zulu time.
For commands that return events and todos, the data will be returned in Zulu time, unless the tzidout parameter is passed in. In this case the Zulu time is translated into the time zone specified in the tzidout parameter.
For example, if the fetch_components_by range command specifies a date range of 20020506T100000 to 20020507T100000, with a tzid=America/Los_Angeles, WCAP will translate that to Zulu time for database lookup. If the tzidout parameter was also passed in (for our example, tzidout=America/New_York), then the resulting output would be translated to that time zone and returned. If the tzidout parameter is missing, the component data is returned in Zulu time.
The tzidout parameter can be used with the storeevents and storetodos command when the fetch parameter is set to 1 (fetch=1).
The time zones information is kept in a plain text file (timezones.ics) in VTIMEZONE format.
The server never uses the system time zone information to calculate the current date and time. It uses the time elapsed in seconds since the Epoch (00:00:00 UTC, January 1, 1970) to calculate current date and time. Then depending on the user's time zone settings, the date is displayed to reflect the correct time zone.
The following commands use both the tzid and tzidout parameters:
In addition, the following commands use the tzid parameter (but not the tzidout):
Commands
For all commands that have the id parameter (session ID), it is a required parameter. There are two exceptions to this rule. It is not required in order to grant anonymous access to a calendar, nor is it required in order to grant read access to a public calendar. In all other situations, you must provide the session ID in the id parameter.
Note The server supports "anonymous" as a special principal name. The anonymous user can log in with any password. It is not associated with any particular domain.
Unless otherwise specified, the maximum length parameter value for WCAP commands is 1024 characters. For example, you can't have a uid longer than 1024 characters. No length checking is done by WCAP on incoming parameter values, but a longer value can cause unpredictable results.
Purpose
Add links from one calendar's events or todos to another calendar.
Parameters
Table 7-9 lists addlink parameters:
Description
Use this command to add links in the destination calendar to the specified events and/or todos in the source calendar.
You must specify the id parameter with the command unless the specified calendar is a public calendar.
The number of items in the uid and rid lists must match exactly, with each rid corresponding to the uid in the same position in the list. If an event or todo has no recurrence ID, use 0 in the rid list.
Unless the following three requirements are met, the transaction will fail:
The source calendar and destination calendar parameters must be valid calendar ID's.
The user must have write access to the destination calendar and read access to the source calendar.
The uid and rid lists must have the same number of elements.
Returns
If the transaction fails, an error of ADDLINK_FAILED(12) returns; otherwise, the return code is 0.
Example
This example shows how to add two event links to the calendar jdoe. The links should point to events in the pub calendar. The events are 1111 and 2222, (their uids). Neither event is recurring, so their recurrence-id is 0.
This URL executes the above transaction.
http://webcalendarserver/addlink.wcap?id=b5q2o8ve2rk02nv9t6&destCal =jdoe&srcCal=pub&uid=1111;2222&rid=0;0
Purpose
Change the password of the current user. This command is deprecated. It is here only for backward compatibility. See the "Administrator's Guide" for details on changing a password.
Parameters
Table 7-10 lists change_password parameters:
Table 7-10    change_password Parameters
Parameter
Type
Purpose
Required
Default
Purpose
This command changes a user's password. Passwords are passed as plain text. Only users with administrative privilege may use this command unless the service.wcap.allowchangepassword preference is set.
You must specify the id parameter with the command unless the specified calendar is a public calendar.
Returns
A failure of the command will return the error CHANGE_PASSWORD_FAILED(27).
Example
This example URL requests a password change:
http://webcalendarserver/change_password.wcap?id=b5q2o8ve2rk02nv9t6 &oldPassword=abc&newPassword=def
Purpose
This administrator only command allows the administrator to verify that a session is still valid.
Parameters
Table 7-10 lists check_id parameters:
Table 7-11    check_id Parameters
Parameter
Type
Purpose
Required
Default
Purpose
This command allows the administrator to verify that the session is still valid.
Returns
The server returns the property X-NSCP-WCAP-CHECK-ID. If the value of this property is 1 the session is valid. If a zero (0) is returned, the session is invalid. It has either timed out or is unrecognized.
Example
The following command returns whether the specified session is valid or not:
http://webcalendarserver/check_id.wcap?id=n3l0eeu6s3n3o3b8v&fmt-out =text/calendar
HTTP/1.1 200
Date: Thu, 14 Dec 2002 19:48:17 GMT
Content-type: text/calendar; charset=UTF-8
Content-length: 131
Last-modified: Thu, 14 Dec 2002 19:48:17 GMT
Pragma: no-cache
Expires: 0
Cache-Control: no-cache
Connection: Keep-Alive
BEGIN:VCALENDAR
PRODID:-//SunONE/Calendar Hosting Server//EN
METHOD:PUBLISH
VERSION:5.1.1
X-NSCP-WCAP-CHECK-ID:1
END:VCALENDAR
Purpose
Create a new calendar.
Parameters
Table 7-12 lists createcalendar parameters:
Description
Use this command to create a new calendar for the current user. To enable users who do not have administrative privileges to use this command, set the service.wcap.allowcreatecalendars preference in the ics.conf file.
Creating a Valid Calid
The new calid of the created calendar is a combination of the user's userid and the calid parameter passed in. The system retrieves the userid by doing a lookup on the session specified with the id parameter. The format for the new calendar's calid is userid:calid. For example, if the user is jdoe, and the calid parameter is tv, the new calendar's calid is jdoe:tv.
The server will attempt to truncate calid parameters that are too long or contain any illegal characters. If the server is unable to truncate the calid parameter, the error returned is ILLEGAL_CALID_NAME(30).
Valid characters for the calid parameter are:
Alphabet characters (A-Z, a-z)
For example, these are legal values for the calid parameter: calendar1, calendar-1, calendar_1, calendar.1
Setting Calendar Properties
You can set the calendar properties during creation. Pass in the set_calprops parameter with a value of 1. You can then pass in any additional parameters as defined for the set_calprops command for setting calendar properties.
For more information on calendar properties you can set, see the set_calprops command.
Returns
The returned output shows the calendar properties (retrieved with a call to the fetchcomponents_by_range command) formatted according to the fmt-out value.
Error Codes
If the operation is successful, the error number of 0 is appended to the error string. If the newly created calid already exists in the database, an error code returns: CREATECALENDAR_ALREADY_EXISTS_FAILED(25)
Example
The following example URL creates a calendar with the ID jdoe:newcal for the user jdoe, sets the name to New-Calendar, and the categories to business and work:
http://webcalendarserver/createcalendar.wcap?id=b5q2o8ve2rk02nv9t6& calid=newcal&set_calprops=1&name=New-Calendar&categories=business;w ork
Purpose
This command deletes a user's calendar.
Parameters
Table 7-13 lists deletecalendar parameters:
Table 7-13    deletecalendars Parameters
Parameter
Types
Purposes
Required
Default
Description
Use this command to delete a user's calendar. You must pass in the calid, which is the name of the calendar to delete.
Only users with administrative privilege may use this command unless the service.wcap.allowdeletecalendars preference is set.
Returns
The returned output is the formatted output from a call to fetchcomponents_by_range.
Error Codes
If the operation is successful, the error number of 0 is appended to the error string. If the calid doesn't exist in the database, the delete_layer_errno[x] value is set to 1, where x is the calendar's index in the passed calid list. In addition, the errno variable contains the error: CALENDAR_DOES_NOT_EXIST(29).
Example
For example, sending this URL deletes the calendar named newcal.
http://webcalendarserver/deletecalendar.wcap?id=b5q2o8ve2rk02nv9t6& calid=newcal
Purpose
Delete events and todos from a calendar in a specified range.
Note ENS notifications for appid are not yet implemented.
Parameters
Table 7-14 lists deletecomponents_by_range parameters:
Description.
Use this command to delete the events and todos that fall completely within the specified range from the specified calendars. If a range is not specified, it deletes all events and todos. The range parameters, dtstart and dtend, should be specified in UTC time (the 'Z' must be on the end). Otherwise, results are unpredictable.
Error Codes
If the operation is successful, the error number of 0 is appended to the error string, If an error occurs while deleting from the calendar, the delete_layer_errno[x] value is set to 1, where x is the calendar's index in the passed calid list. In addition, errno contains the error: DELETECOMPONENTS_BY_RANGE_FAILED(21).
Example
For example, assuming the user has read access to the calendars jdoe and john, the following URL deletes all events and todos from those two calendars:
http://deletecomponents_by_range.wcap?id=2342347923479asdf
&calid=jdoe;john&dtstart=0&dtend=0
Purpose
Deletes one or more events from a calendar by event identifier.
Parameters
Table 7-15 lists deleteevents_by_id parameters:
Description.
Use this command to delete the specified event or events from the specified calendar.
Error Codes
If the operation is successful, the error number of 0 is appended to the error string. If there was an error, the server returns two error arrays, delete_layer_errno and delete_event_count, with each element in the arrays representing the corresponding event in the uid list. Each element in delete_layer_errno indicates the error number for the corresponding event. Each element in delete_event_count indicated the number of occurrences successfully deleted for the corresponding event.
See also, Error Handling.
Notify
The notify parameter specifies whether or not to send an IMIP CANCEL message to the email attendees of the event. To send the cancellation message, set the notify value to 1.
For example, here's a URL that sends the IMIP CANCEL message to all attendees of the event with uid=001.
http://webcalendarserver/deleteevents_by_id.wcap?id=3423423asdfasf& calid=jdoe&uid=001¬ify=1
Recurrences
If the rid parameter is passed, the command also deletes recurrences, as specified by the mod parameter. (See Deleting or Modifying Recurring Components.) To delete multiple events, specify a semicolon-separated list for the uid, rid, and mod parameters. The three lists must have the same number of elements. Each list element corresponds to the same element in the other two lists.
Example
For example, there are two non-recurring events in the database with UIDs of uid-EVENT1 and uid-EVENT2. Since the events are non-recurring, the rid value for each event is set to 0 and mod value for each event is set to 1.
The following URL deletes the two events:
http://webcalendarserver/deleteevents_by_id.wcap?id=br6p3t6bh5po35r
&uid=uid-EVENT1;uid-EVENT2&rid=0;0&mod=0;0&fmt-out-text/calendar
The resulting data would look like this:
BEGIN:VCALENDAR
PRODID:-//SunONE/Calendar Hosting Server//EN
METHOD:PUBLISH
VERSION:5.1.1
BEGIN:VEVENT
UID:uid-EVENT1
REQUEST-STATUS:2.0;Success. Delete successful.
END:VEVENT
BEGIN:VEVENT
UID:uid-EVENT2
REQUEST-STATUS:2.0;Success. Delete successful.
END:VEVENT
X-NSCP-WCAP-ERRNO:0
END:VCALENDAR
Purpose
Delete events from a calendar in a specified range.
Note ENS notifications for appid are not yet implemented.
Parameters
Table 7-16 lists deleteevents_by_range parameters:
Description.
Use this command to delete the events that fall completely within the specified range from the specified calendars. If a range is not specified (dtstart and dtend), it deletes all events from the specified calendars.
You must specify the id parameter with the command unless the specified calendar is a public calendar. The server returns data in the format specified by the fmt-out parameter. If this parameter is not passed, the data returns in the default JavaScript format.
Error Codes
If the operation is successful, the error number of 0 is appended to the error string, errno. If an error occurs while deleting from the calendar, the delete_layer_errno[x] value is set to 1, where x is the calendar's index in the passed calid list. In addition, the errno variable contains the error: DELETEEVENTS_BY_RANGE_FAILED(22).
See also, Error Handling.
Example
For example, assuming the user has read access to the calendars jdoe and john, the following URL would result in deleting all events from the calendars jdoe and john:
http://webcalendarserver/deleteevents_by_range.wcap?id=234234792347 9asdf&calid=jdoe;john&dtstart=0&dtend=0
Purpose
Delete one or more todos from a calendar.
Parameters
Table 7-17 lists deletetodos_by_id parameters:
Description.
Use this command to delete the specified todo from the specified calendar.
You must specify the id parameter with the command unless the specified calendar is a public calendar. The server returns data in the format specified by the fmt-out parameter. If this parameter is not passed, the data returns in the default JavaScript format.
Error Codes
If there was an error, the server returns two error arrays, delete_layer_errno and delete_todo_count, with each element in the arrays representing the corresponding todo in the uid list. Each element in delete_layer_errno indicates the error number for the corresponding todo. Each element in delete_todo_count indicates the number of occurrences successfully deleted for the corresponding todo.
See also, Error Handling.
Notify
The notify parameter specifies whether or not to send an IMIP CANCEL message to the email attendees of the todo. If notify is 1, an email cancellation message is sent.
For example, here's a URL that sends the IMIP CANCEL message to all attendees of the todo with uid=001.
http://webcalendarserver/deletetodos_by_id.wcap?id=3423423asdfasf&c alid=jdoe&uid=001¬ify=1
Recurrences
If the rid parameter is passed, the command also deletes recurrences, as specified by the mod parameter. See Deleting or Modifying Recurring Components.
To delete multiple todos, specify a semicolon-separated list for the uid, rid, and mod parameters. The three lists must have the same number of elements. Each list element corresponds to the same element in the other two lists.If the rid parameter is passed, the command also deletes recurrences, as specified by the mod parameter.
Example
For example, there are two non-recurring todos in the database with UIDs of uid-TODO1 and uid-TODO2. Since the todos are non-recurring, the rid value for each todo is set to 0 and mod value for each todo is set to 1.
The following URL deletes the two todos:
http://webcalendarserver/deletetodos_by_id.wcap?id=br6p3t6bh5po35r
&uid=uid-TODO1;uid-TODO2&rid=0;0&mod=1;1&fmt-out=text/calendar
The resulting data would look like this:
BEGIN:VCALENDAR
PRODID:-//SunONE/Calendar Hosting Server//EN
METHOD:PUBLISH
VERSION:5.1.1
BEGIN:VTODO
UID:uid-TODO1
REQUEST-STATUS:2.0;Success. Delete successful.
END:VTODO
BEGIN:VTODO
UID:uid-TODO2
REQUEST-STATUS:2.0;Success. Delete successful.
END:VTODO
X-NSCP-WCAP-ERRNO:0
END:VCALENDAR
Purpose
Delete todos in a range from a calendar.
Note ENS notifications for appid are not yet implemented.
Parameters
Table 7-18 lists deletetodos_by_range parameters:
Description.
Use this command to delete the todos that fall completely within the specified range from the specified calendars. If a range is not specified, it deletes all todos. For example, the following URL would delete just the todo that occurs on the date March 1, 2002 11:22:33 AM GMT.
http://webcalendarserver/deletetodos_by_id.wcap?id=23423423434abc&c alid=jdoe&uid=001&rid=20020301T112233Z&mod=1
You must specify the id parameter with the command unless the specified calendar is a public calendar. The server returns data in the format specified by the fmt-out parameter. If this parameter is not passed, the data is returned in the default JavaScript format.
Error Codes
If the operation is successful, the error number of 0 is appended to the error string. If an error occurs while deleting from the calendar, the delete_layer_errno[x] value is set to 1, where x is the calendar's index in the passed calid list. In addition, the errno variable contains the error: DELETETODOS_BY_RANGE_FAILED(23).
See also, Error Handling.
Purpose
Export events and todos from a calendar to a file.
Parameters
Table 7-19 lists export parameters:
Description.
Use this command to export events and todos from one or more specified calendars to a file. The contents of the file can later be imported to a calendar using the import command. The command creates a file called export.ics or export.xml, depending on the value of the content-out parameter.
Range
If you do not specify either the starting or ending date, all events and todos in the calendars are added to the file. If you specify a starting and ending date, the command exports only events and todos in the calendars that fall within the time range. Specify starting and ending dates in UTC time (indicated by Z at the end of the datetime).
HTTP Post Examples
You must use this command with an HTTP POST (unlike other commands, which can be used with an HTTP GET). Example 1
The following HTTP POST message exports all components of the calendars jdoe and john to an iCalendar file named export.ica: Example 2
POST
/export.wcap?id=t95qm0n0es3bo35r&calid=jdoe;john&dtstart=0&dtend=0
&content-out=text/calendar
Content-type: multipart/form-data;
boundary=---------------------------41091400621290
Content-Length: 47
-----------------------------41091400621290--
WinNT; U)
Host: jdoe:12345
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png
*/*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
The following HTML generates a POST message using the export command, producing files in both iCalendar and XML formats:
<form METHOD=POST ENCTYPE="multipart/form-data" NAME="john.ics"
ACTION="http://webcalendarserver:12345/export.wcap?id=t9u9m0eh8x5pu 9b
&calid=jdoe;john&dtstart=0&dtend=0&content-out=text/calendar">
<ul>
<li>Press Export ICAL Now:<input type="submit" value="Export ICAL now">
</li> </ul> </form>
<form METHOD=POST ENCTYPE="multipart/form-data" NAME="john.xml"
ACTION="http://webcalendarserver:12345/export.wcap?id=t9u9m0eh8x5pu 9b
&calid=jdoe;john&dtstart=0&dtend=0&content-out=text/xml">
<ul>
<li>Press Export XML Now:<input type="submit" value="Export XML now">
</ul> </form>
HTTP/1.0 200
Date: Thu, 03 Jun 2002 22:15:52 GMT
Content-type: text/calendar
Content-disposition: attachment; filename="export.ics"
Content-length: 7004
BEGIN:VCALENDAR
METHOD:PUBLISH
VERSION:5.1.1
BEGIN:VEVENT
UID:tm-001
RECURRENCE-ID:20020519T010000Z
DTSTAMP:20020603T221548Z
SUMMARY:Calendar Staff
DTSTART:20020518T170000Z
DTEND:20020518T190000Z
CREATED:20020603T024254Z
LAST-MODIFIED:20020603T024254Z
PRIORITY:1
SEQ:1
GEO:37.463581;-121.897606
DESC:This is the description for event with UID = tm-001
URL:http://webcalendarserver/susan?uid=tm-001
LOCATION:Green Conference Room
STATUS:CONFIRMED
TRANSP:OPAQUE
END:VEVENT
BEGIN:VEVENT
UID:tm-001
RECURRENCE-ID:20020526T010000Z
DTSTAMP:20020603T221548Z
SUMMARY:Calendar Staff
DTSTART:20020525T170000Z
DTEND:20020525T190000Z
CREATED:20020603T024254Z
LAST-MODIFIED:20020603T024254Z
PRIORITY:1
SEQ:1
GEO:37.463581;-121.897606
DESC:This is the description for event with UID = tm-001
URL:http://webcalendarserver/susan?uid=tm-001
LOCATION:Green Conference Room
STATUS:CONFIRMED
TRANSP:OPAQUE
END:VEVENT
END:VCALENDAR
Purpose
Retrieve calendar events and todos with alarm triggers.
Parameters
Table 7-20 lists fetchcomponents_by_alarmrange parameters:
Table 7-20    fetchcomponents_by_alarmrange Parameters
Parameter
Type
Purpose
Required
Default
A boolean indicating whether or not to print out a brief version of the JavaScript output.
Applies only when output type (fmt-out) is JavaScript (text/js).
Semicolon-separated list of calendar identifiers from which to retrieve components.
Indicates which components to return: event returns only events
todo returns only todos (tasks)
all returns both events and todos
For compressed=0, returns less data. Specifically, it does not return the following parameters:
rrules
rdate
exrule
exdate
For compressed=1, all recurrence data is returned.
This parameter can only be used when fmt-out is text/xml, or text/calendar
The list of component states to fetch.
For compstate values, see Table 7-7
Start time and date of events/todos with alarms ready to go off during the specified time.
A value of 0 means fetch all events from the beginning of time.
The maximum number of events and todos to be returned. When 0, no maximum is applied and the command returns all events and todos found.
If dtstart and dtend parameters are not already in Zulu time, the time zone to use for translating them to Zulu time.
Description.
This command returns a list of events and todos having alarms that are about to go off during the specified time.
Output Format
The server returns data in the format specified by the fmt-out parameter. If this parameter is not passed, the data is returned in the default JavaScript format.
For JavaScript output, events are divided into two arrays. Events that span a smaller range of time, most normal events, print out in the event array. All events that last longer than 24 hours, or are all-day events, print out in the eventD array. All day events are signified by having the isAllDay flag turned on.
maxResults Value
If you specify a maximum n, the command returns up to the first n events and first n todos in the specified range. For example, if you specify a maxResults value of 75, the returned JavaScript would contain the following variables
var maxResults=75 /* maximum cap passed in */
var size=75 /* event size is capped to 75 */
var todosize=28 /* todo size not affected since it is less than 75 */
If the maxResults parameter is set to 0 or is not passed, then the returned JavaScript does not contain the var maxResults statement.
Returns
For each calendar specified in calid, the server returns the calendar's events and todos having alarms about to go off within the range specified by dtstart and dtend.
If the times specified in the dtstart and dtend parameters is not Zulu time, the system uses the time zone specified in the tzid parameter to translate the times into Zulu time for data retrieval. If the tzid parameter is missing, the system uses the server's default time zone.
The system uses the tzidout parameter to determine what time zone to translate retrieved data into before returning it. If the tzidout parameter is missing, the system returns the data in Zulu time.
If neither the starting nor ending date-time is specified, the server returns all events and todos with alarms, up to the specified maximum.
Error Codes
If the operation is successful, the error number of 0 is appended to the error string. If a calendar cannot be accessed or is missing, errno is FETCH_BY_ALARM_RANGE_FAILED(41).
Example
For example, suppose there are 3 events:
Here are two queries and their return values:
This query fetches all events and todos that have alarms about to go off between Dec. 1, 2001 and Jan. 31, 2002.
http://webcalendarserver/fetchcomponents_by_alarmrange.wcap?id=abcdefg&dtstart=20011201T112233Z&dtend=20020131T112233Z&fmt-out=text/calendar
BEGIN:VCALENDAR
PRODID:-//SunONE/Calendar Hosting Server//EN
METHOD:PUBLISH
VERSION:5.1.1
X-NSCP-CALPROPS-LAST-MODIFIED:20011208T005613Z
X-NSCP-CALPROPS-CREATED:20010913T223336Z
X-NSCP-CALPROPS-READ:999
X-NSCP-CALPROPS-WRITE:999
X-NSCP-CALPROPS-RELATIVE-CALID:jdoe
X-NSCP-CALPROPS-NAME:John Doe
X-NSCP-CALPROPS-LANGUAGE:en
X-NSCP-CALPROPS-PRIMARY-OWNER:jdoe
X-NSCP-CALPROPS-TZID:America/Los_Angeles
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^c^WDEIC^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^a^RSF^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^a^frs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^c^^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^a^frs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^c^dw^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^a^rs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^c^w^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^p^r^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^p^r^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^p^r^g
X-NSCP-CALPROPS-RESOURCE:0
BEGIN:VEVENT
UID:3c11625900005ffe00000011000010b7
DTSTAMP:20011208T011139Z
SUMMARY:eventA
DTSTART:20011225T133000Z
DTEND:20011225T143000Z
CREATED:20011208T004409Z
LAST-MODIFIED:20011208T010857Z
PRIORITY:0
SEQUENCE:4
ORGANIZER;SENT-BY="jdoe@sesta.com"
;X-NSCP-ORGANIZER-UID=jdoe
;X-NSCP-ORGANIZER-SENT-BY-UID=jdoe:jdoe
STATUS:CONFIRMED
TRANSP:OPAQUE
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL
;PARTSTAT=ACCEPTED;CN="JOHN SMITH"
;RSVP=TRUE
;X-NSCP-ATTENDEE-GSE-STATUS=2
:jdoe
X-NSCP-ORIGINAL-DTSTART:20020210T190000Z
X-NSCP-LANGUAGE:en
BEGIN:VALARM
ACTION:EMAIL
TRIGGER;VALUE=DATE-TIME:20011225T123000Z
ATTENDEE:MAILTO:jsmith@company22.com
END:VALARM
X-NSCP-DTSTART-TZID:America/Los_Angeles
X-NSCP-TOMBSTONE:0
X-NSCP-ONGOING:0
X-NSCP-ORGANIZER-EMAIL:jdoe@sesta.com
X-NSCP-GSE-COMPONENT-STATE;X-NSCP-GSE-COMMENT="REQUEST-COMPLETED":
31074
END:VEVENT
BEGIN:VTODO
UID:3c1162e200207ff600000015000010b7
DTSTAMP:20011208T011139Z
SUMMARY:todoA
DTSTART:20011208T004626Z
DUE:20020120T141500Z
CREATED:20011208T004626Z
LAST-MODIFIED:20011208T011000Z
PRIORITY:0
SEQUENCE:3
PERCENT-COMPLETE:0
ORGANIZER;SENT-BY="jdoe@sesta.com"
;X-NSCP-ORGANIZER-UID=jdoe
;X-NSCP-ORGANIZER-SENT-BY-UID=jdoe:jdoe
STATUS:NEEDS-ACTION
X-NSCP-ORIGINAL-DTSTART:20011208T004626Z
X-NSCP-LANGUAGE:en
BEGIN:VALARM
ACTION:EMAIL
TRIGGER;VALUE=DATE-TIME:20020120T131500Z
ATTENDEE:MAILTO:jdoe@sesta.com
END:VALARM
X-NSCP-DUE-TZID:America/Los_Angeles
X-NSCP-TOMBSTONE:0
X-NSCP-ONGOING:0
X-NSCP-ORGANIZER-EMAIL:jdoe@sesta.com
X-NSCP-GSE-COMPONENT-STATE;
X-NSCP-GSE-COMMENT="PUBLISH-COMPLETED":65538
END:VTODO
X-NSCP-WCAP-ERRNO:0
END:VCALENDAR
This query fetches all events and todos that have alarms to go off between Jan. 1, 2002 and June 1, 2002.
http://webcalendarserver/fetchcomponents_by_alarmrange.wcap?id=abcdefg&dtstart=20020101T000000Z&dtend=20020601T000000Z&fmt-out=
text/calendar
BEGIN:VCALENDAR
PRODID:-//SunONE/Calendar Hosting Server//EN
METHOD:PUBLISH
VERSION:5.1.1
X-NSCP-CALPROPS-LAST-MODIFIED:20011208T005613Z
X-NSCP-CALPROPS-CREATED:20010913T223336Z
X-NSCP-CALPROPS-READ:999
X-NSCP-CALPROPS-WRITE:999
X-NSCP-CALPROPS-RELATIVE-CALID:jdoe
X-NSCP-CALPROPS-NAME:John Doe
X-NSCP-CALPROPS-LANGUAGE:en
X-NSCP-CALPROPS-PRIMARY-OWNER:jdoe
X-NSCP-CALPROPS-TZID:America/Los_Angeles
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^c^WDEIC^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^a^RSF^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^a^frs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^c^^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^a^frs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^c^dw^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^a^rs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^c^w^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^p^r^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^p^r^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^p^r^g
X-NSCP-CALPROPS-RESOURCE:0
BEGIN:VEVENT
UID:3c1162b3000051c300000013000010b7
DTSTAMP:20011208T011645Z
SUMMARY:eventB
DTSTART:20020210T110000Z
DTEND:20020210T120020Z
CREATED:20011208T004539Z
LAST-MODIFIED:20011208T011638Z
PRIORITY:0
SEQUENCE:4
ORGANIZER;SENT-BY="jdoe@sesta.com"
;X-NSCP-ORGANIZER-UID=jdoe
;X-NSCP-ORGANIZER-SENT-BY-UID=jdoe:jdoe
STATUS:CONFIRMED
TRANSP:OPAQUE
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL
;PARTSTAT=ACCEPTED;CN="John Smith"
;RSVP=TRUE
;X-NSCP-ATTENDEE-GSE-STATUS=2:jsmith
X-NSCP-ORIGINAL-DTSTART:20021225T213000Z
X-NSCP-LANGUAGE:en
BEGIN:VALARM
ACTION:EMAIL
TRIGGER;VALUE=DATE-TIME:20020210T100000Z
ATTENDEE:MAILTO:jsmith@company22.com
END:VALARM
X-NSCP-DTSTART-TZID:America/Los_Angeles
X-NSCP-TOMBSTONE:0
X-NSCP-ONGOING:0
X-NSCP-ORGANIZER-EMAIL:jdoe@sesta.com
X-NSCP-GSE-COMPONENT-STATE;
X-NSCP-GSE-COMMENT="REQUEST-COMPLETED":131074
END:VEVENT
BEGIN:VTODO
UID:3c1162e200207ff600000015000010b7
DTSTAMP:20011208T011645Z
SUMMARY:todoA
DTSTART:20011208T004626Z
DUE:20020120T141500Z
CREATED:20011208T004626Z
LAST-MODIFIED:20011208T011000Z
PRIORITY:0
SEQUENCE:3
PERCENT-COMPLETE:0
ORGANIZER;SENT-BY="jdoe@sesta.com"
;X-NSCP-ORGANIZER-UID=jdoe
;X-NSCP-ORGANIZER-SENT-BY-UID=jdoe:jdoe
STATUS:NEEDS-ACTION
X-NSCP-ORIGINAL-DTSTART:20011208T004626Z
X-NSCP-LANGUAGE:en
BEGIN:VALARM
ACTION:EMAIL
TRIGGER;VALUE=DATE-TIME:20020120T131500Z
ATTENDEE:MAILTO:jdoe@sesta.com
END:VALARM
X-NSCP-DUE-TZID:America/Los_Angeles
X-NSCP-TOMBSTONE:0
X-NSCP-ONGOING:0
X-NSCP-ORGANIZER-EMAIL:jdoe@sesta.com
X-NSCP-GSE-COMPONENT-STATE;X-NSCP-GSE-COMMENT="PUBLISH-COMPLETED":
5538
END:VTODO
X-NSCP-WCAP-ERRNO:0
END:VCALENDAR
fetchcomponents_by_attendee_error
Purpose.
Fetch a list of components that had errors while sending group scheduling messages. Table 7-21 lists fetchcomponents_by_attendee_error parameters
Description.
Use this command to retrieve a list of events and todos that had errors when sending group scheduling messages. This command works almost like fetchcomponents_by_range.
Output Format
The server returns data in the format specified by the fmt-out parameter. If this parameter is not passed, the data is returned in the default JavaScript format.
For JavaScript output, events are divided into two arrays. Events that span a smaller range of time, most normal events, print out in the event array. All events that last longer than 24 hours, or are all-day events, print out in the eventD array. All-day events are signified by having the isAllDay flag turned on.
maxResults Value
If you specify a maximum n, the command returns up to the first n events and first n todos in the specified range. For example, if you specify a maxResults value of 75, the returned JavaScript would contain the following variables
var maxResults=75 /* maximum cap passed in */
var size=75 /* event size is capped to 75 */
var todosize=28 /* todo size not affected since it is less than 75 */
If the maxResults parameter is set to 0 or is not passed, then the returned JavaScript does not contain the var maxResults statement.
Returns
For each calendar specified in calid, the server returns the events and todos that had errors for the specified attendee while sending group scheduling messages.
For example, if the calid parameter specifies calendars cal1 and cal2, and the attendee parameter specifies jdoe, then both cal1 and cal2 would be searched for events with errors that had jdoe as an attendee. In the table that follows, cal1 and cal2 each have four events with associated attendees:
For attendee jdoe, the command returns: events 1c1 and 2c2.
The system uses the tzidout parameter to determine what time zone to translate retrieved data into before returning it. If the tzidout parameter is missing, the system returns the data in Zulu time.
Error Codes
If the operation is successful, the error number of 0 is appended to the error string. If the command fails for any reason, errno is FETCH_BY_ATTENDEE_ERROR_FAILED(42).
Purpose.
Fetch a list of components that have changed during a specified time period. Table 7-22 lists fetchcomponents_by_lastmod parameters
Table 7-22    fetchcomponents_by_lastmod Parameters
Parameter
Type
Purpose
Required
Default
A boolean indicating whether or not to print out a brief version of the JavaScript output.
Applies only when output type (fmt-out) is JavaScript (text/js).
Semicolon-separated list of calendar identifiers from which to retrieve components.
Indicates which components to return: event returns only events
todo returns only todos (tasks)
all returns both events and todos
For compressed=0, returns less data. Specifically, it does not return the following parameters:
rrules
rdate
exrule
exdate
For compressed=1, all recurrence data is returned.
This parameter can only be used when fmt-out is text/xml, or text/calendar
The list of component states to fetch.
For compstate values, see Table 7-7
Start time and date of events to be returned.
A value of 0 means fetch all events from the beginning of time.
The maximum number of events and todos to be returned. When 0, no maximum is applied and the command returns all events and todos found.
Time zone to use if dtstart, or dtend parameters are not in Zulu time.
Description.
Use this command to retrieve a list of events and todos that have changed during a specific time period. This command works almost like fetchcomponents_by_range.
Output Format
The server returns data in the format specified by the fmt-out parameter. If this parameter is not passed, the data is returned in the default JavaScript format.
For JavaScript output, events are divided into two arrays. Events that span a smaller range of time, most normal events, print out in the event array. All events that last longer than 24 hours, or are all-day events, print out in the eventD array. All-day events are signified by having the isAllDay flag turned on.
maxResults Value
If you specify a maximum n, the command returns up to the first n events and first n todos in the specified range. For example, if you specify a maxResults value of 75, the returned JavaScript would contain the following variables
var maxResults=75 /* maximum cap passed in */
var size=75 /* event size is capped to 75 */
var todosize=28 /* todo size not affected since it is less than 75 */
If the maxResults parameter is set to 0 or is not passed, then the returned JavaScript does not contain the var maxResults statement.
Returns
For each calendar specified in calid, the server returns the calendar's the events and todos that changed during the range specified by dtstart and dtend.
If the times specified in the dtstart and dtend parameters is not Zulu time, the system uses the time zone specified in the tzid parameter to translate the times into Zulu time for data retrieval. If the tzid parameter is missing, the system uses the server's default time zone.
The system uses the tzidout parameter to determine what time zone to translate retrieved data into before returning it. If the tzidout parameter is missing, the system returns the data in Zulu time.
If neither the starting nor ending date-time is specified, the server returns all events and todos that have changed, up to the specified maximum.
Error Codes
If the operation is successful, the error number of 0 is appended to the error string. If a calendar cannot be accessed or is missing, the error number is appended to the error string.
Example
For example, the calendar jdoe has these three events:
eventA: last-modified on Feb. 10, 2002, 10:00 AM GMT. Here are some queries and their return values:
http://webcalendarserver/fetchcomponents_by_lastmod.wcap?id=jdoe
&dtstart=0&dtend=0
The above query would fetch all events and todos that have ever been modified. Thus eventA, eventB, and todoA would be returned.
http://webcalendarserver/fetchcomponents_by_lastmod.wcap?id=jdoe
&dtstart=20011201T112233Z&dtend=20020131T112233Z
The above query would fetch all modified events and todos between 12/1/2001 and 1/31/2002. Thus eventB and todoA would be returned.
http://webcalendarserver/fetchcomponents_by_lastmod.wcap?id=jdoe
&dtstart=20020101T112233Z&dtend=20020601T112233Z
The above query would fetch all events and todos that have been modified between 1/1/2002 and 6/1/2002. Thus eventA and todoA would be returned.
Purpose
Retrieve calendar events and todos.
Parameters
Table 7-23 lists fetchcomponents_by_range parameters:
Table 7-23    fetchcomponents_by_range Parameters
Parameter
Type
Purpose
Required
Default
A boolean indicating whether or not to print out a brief version of the JavaScript output.
Applies only when output type (fmt-out) is JavaScript (text/js).
Semicolon-separated list of calendar identifiers from which to retrieve components.
Indicates which components to return: event returns only events
todo returns only todos (tasks)
all returns both events and todos
For compressed=0, returns less data. Specifically, it does not return the following parameters:
rrules
rdate
exrule
exdate
For compressed=1, all recurrence data is returned.
This parameter can only be used when fmt-out is text/xml, or text/calendar
The list of component states to fetch.
For compstate values, see Table 7-7
Start time and date of events to be returned.
A value of 0 means fetch all events from the beginning of time.
The maximum number of events and todos to be returned. When 0, no maximum is applied and the command returns all events and todos found.
Default time zone to use if dtstart, or dtend parameters are not in Zulu time.
Description.
Use this command to retrieve properties, events, and todos from one or more specified calendars.
Output Format
The server returns data in the format specified by the fmt-out parameter. If this parameter is not passed, the data is returned in the default JavaScript format.
For JavaScript output, events are divided into two arrays. Events that span a smaller range of time, most normal events, print out in the event array. All events that last longer than 24 hours, or are all day events, print out in the eventD array. All day events are signified by having the isAllDay flag turned on.
Returns
For each calendar specified in calid, the server returns the calendar's properties and the events and todos of that calendar that fall within the range specified by dtstart and dtend.
Tasks returned by this command:
Tasks due within the date range
Tasks completed within the date range
Tasks that are never due but have a start date within the range If the times specified in the dtstart and dtend parameters is not Zulu time, the system uses the time zone specified in the tzid parameter to translate the times into Zulu time for data retrieval. If the tzid parameter is missing, the system uses the server's default time zone.
The system uses the tzidout parameter to determine what time zone to translate retrieved data into before returning it. If the tzidout parameter is missing, the system returns the data in Zulu time.
If neither the starting nor ending date-time is specified, the server returns all events and todos, up to the specified maximum.
Error Codes
If the operation is successful, the error number of 0 is appended to the error string. If a calendar cannot be accessed or is missing, the error number is appended to the error string.
Output Format
The server returns data in the format specified by the fmt-out parameter. If this parameter is not passed, the data is returned in the default JavaScript format.
For JavaScript output, events are divided into two arrays. Events that span a smaller range of time, most normal events, print out in the event array. All events that last longer than 24 hours, or are all-day events, print out in the eventD array. All-day events are signified by having the isAllDay flag turned on.
maxResults Value
If you specify a maximum n, the command returns up to the first n events and first n todos in the specified range. For example, if you specify a maxResults value of 75, the returned JavaScript would contain the following variables
var maxResults=75 /* maximum cap passed in */
var size=75 /* event size is capped to 75 */
var todosize=28 /* todo size not affected since it is less than 75 */
If the maxResults parameter is set to 0 or is not passed, then the command does not cap the number of returned components, and the returned JavaScript does not contain the var maxResults statement.
Error Codes
If the operation is successful, the error number of 0 is appended to the error string. If a calendar cannot be accessed or is missing, the error number is appended to the error string.
This example fetches components for the current user from Dec. 1, 2001 to Jan. 31, 2002, using the following URL:
http://webcalendarserver/fetchcomponents_by_range.wcap?id=bes6bbe2m u98uw9&dtstart=20011201T000000Z&dtend=20020131T000000Z&fmt-out=text /calendar
It returns one event and one todo for this period:
BEGIN:VCALENDAR
PRODID:-//SunONE/Calendar Hosting Server//EN
METHOD:PUBLISH
VERSION:5.1.1
X-NSCP-CALPROPS-LAST-MODIFIED:20011208T005613Z
X-NSCP-CALPROPS-CREATED:20010913T223336Z
X-NSCP-CALPROPS-READ:999
X-NSCP-CALPROPS-WRITE:999
X-NSCP-CALPROPS-RELATIVE-CALID:jdoe
X-NSCP-CALPROPS-NAME:John Doe
X-NSCP-CALPROPS-LANGUAGE:en
X-NSCP-CALPROPS-PRIMARY-OWNER:jdoe
X-NSCP-CALPROPS-TZID:America/Los_Angeles
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^c^WDEIC^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^a^RSF^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^a^frs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^c^^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^a^frs^
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^c^dw^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^a^rs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^c^w^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^p^r^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^p^r^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^p^r^g
X-NSCP-CALPROPS-RESOURCE:0
BEGIN:VEVENT
UID:3c11625900005ffe00000011000010b7
DTSTAMP:20011208T015014Z
SUMMARY:eventA
DTSTART:20011225T133000Z
DTEND:20011225T143000Z
CREATED:20011208T004409Z
LAST-MODIFIED:20011208T010857Z
PRIORITY:0
SEQUENCE:4
ORGANIZER;SENT-BY="jdoe@sesta.com"
;X-NSCP-ORGANIZER-UID=jdoe
;X-NSCP-ORGANIZER-SENT-BY-UID=jdoe:jdoe
STATUS:CONFIRMED
TRANSP:OPAQUE
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED;
CN="John Smith";RSVP=TRUE;X-NSCP-ATTENDEE-GSE-STATUS=2:jsmith
X-NSCP-ORIGINAL-DTSTART:20020210T190000Z
X-NSCP-LANGUAGE:en
BEGIN:VALARM
ACTION:EMAIL
TRIGGER;VALUE=DATE-TIME:20011225T123000Z
ATTENDEE:MAILTO:jsmith@company22.com
END:VALARM
X-NSCP-DTSTART-TZID:America/Los_Angeles
X-NSCP-TOMBSTONE:0
X-NSCP-ONGOING:0
X-NSCP-ORGANIZER-EMAIL:jdoe@sesta.com
X-NSCP-GSE-COMPONENT-STATE;X-NSCP-GSE-COMMENT="REQUEST-COMPLETED":
31074
END:VEVENT
BEGIN:VTODO
UID:3c1162e200207ff600000015000010b7
DTSTAMP:20011208T015014Z
SUMMARY:todoA
DTSTART:20011208T004626Z
DUE:20020120T141500Z
CREATED:20011208T004626Z
LAST-MODIFIED:20011208T011000Z
PRIORITY:0
SEQUENCE:3
PERCENT-COMPLETE:0
ORGANIZER;SENT-BY="jdoe@sesta.com"
;X-NSCP-ORGANIZER-UID=jdoe
;X-NSCP-ORGANIZER-SENT-BY-UID=jdoe:jdoe
STATUS:NEEDS-ACTION
X-NSCP-ORIGINAL-DTSTART:20011208T004626Z
X-NSCP-LANGUAGE:en
BEGIN:VALARM
ACTION:EMAIL
TRIGGER;VALUE=DATE-TIME:20020120T131500Z
ATTENDEE:MAILTO:jsmith@company22.com
END:VALARM
X-NSCP-DUE-TZID:America/Los_Angeles
X-NSCP-TOMBSTONE:0
X-NSCP-ONGOING:0
X-NSCP-ORGANIZER-EMAIL:jdoe@sesta.com
X-NSCP-GSE-COMPONENT-STATE;X-NSCP-GSE-COMMENT="PUBLISH-COMPLETED":
5538
END:VTODO
X-NSCP-WCAP-ERRNO:0
END:VCALENDAR
The second example fetches all components for calendars jdoe and susan between Dec. 1, 2001 to Jan. 31, 2002.
http://webcalendarserver/fetchcomponents_by_range.wcap?id=bes6bbe2m u98uw9&calid=jdoe;susan&dtstart=20020101T000000Z&dtend=20020202T000 000Z&fmt-out=text/calendar
The following events and todos are returned:
BEGIN:VCALENDAR
PRODID:-//SunONE/Calendar Hosting Server//EN
METHOD:PUBLISH
VERSION:5.1.1
X-NSCP-CALPROPS-LAST-MODIFIED:20011208T005613Z
X-NSCP-CALPROPS-CREATED:20010913T223336Z
X-NSCP-CALPROPS-READ:999
X-NSCP-CALPROPS-WRITE:999
X-NSCP-CALPROPS-RELATIVE-CALID:jdoe
X-NSCP-CALPROPS-NAME:John Doe
X-NSCP-CALPROPS-LANGUAGE:en
X-NSCP-CALPROPS-PRIMARY-OWNER:jdoe
X-NSCP-CALPROPS-TZID:America/Los_Angeles
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^c^WDEIC^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^a^RSF^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^a^frs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^c^^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^a^frs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^c^dw^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^a^rs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^c^w^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^p^r^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^p^r^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^p^r^g
X-NSCP-CALPROPS-RESOURCE:0
BEGIN:VEVENT
UID:3c1162b3000051c300000013000010b7
DTSTAMP:20011208T011645Z
SUMMARY:Joe's event
DTSTART:20020110T110000Z
DTEND:20020110T120020Z
CREATED:20011208T004539Z
LAST-MODIFIED:20011208T011638Z
PRIORITY:0
SEQUENCE:4
ORGANIZER;SENT-BY="jdoe@sesta.com";
X-NSCP-ORGANIZER-UID=jdoe;
X-NSCP-ORGANIZER-SENT-BY-UID=jdoe:jdoe
STATUS:CONFIRMED
TRANSP:OPAQUE
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;PARTSTAT=ACCEPTED;
CN="John Smith";RSVP=TRUE;X-NSCP-ATTENDEE-GSE-STATUS=2:jsmith
X-NSCP-ORIGINAL-DTSTART:20021225T213000Z
X-NSCP-LANGUAGE:en
BEGIN:VALARM
ACTION:EMAIL
TRIGGER;VALUE=DATE-TIME:20020210T100000Z
ATTENDEE:MAILTO:jsmith@company22.com
END:VALARM
X-NSCP-DTSTART-TZID:America/Los_Angeles
X-NSCP-TOMBSTONE:0
X-NSCP-ONGOING:0
X-NSCP-ORGANIZER-EMAIL:jdoe@sesta.com
X-NSCP-GSE-COMPONENT-STATE;
X-NSCP-GSE-COMMENT="REQUEST-COMPLETED":31074
END:VEVENT
BEGIN:VTODO
UID:3c1162e200207ff600000015000010b7
DTSTAMP:20011208T011645Z
SUMMARY:Joe's Todo
DTSTART:20011208T004626Z
DUE:20020120T141500Z
CREATED:20011208T004626Z
LAST-MODIFIED:20011208T011000Z
PRIORITY:0
SEQUENCE:3
PERCENT-COMPLETE:0
ORGANIZER;SENT-BY="jdoe@sesta.com";
X-NSCP-ORGANIZER-UID=jdoe;
X-NSCP-ORGANIZER-SENT-BY-UID=jdoe:jdoe
STATUS:NEEDS-ACTION
X-NSCP-ORIGINAL-DTSTART:20011208T004626Z
X-NSCP-LANGUAGE:en
BEGIN:VALARM
ACTION:EMAIL
TRIGGER;VALUE=DATE-TIME:20020120T131500Z
ATTENDEE:MAILTO:jdoe@sesta.com
END:VALARM
X-NSCP-DUE-TZID:America/Los_AngelesX-NSCP-TOMBSTONE:0
X-NSCP-ONGOING:
X-NSCP-ORGANIZR-EMAIL:jdoe@sesta.com
X-NSCP-GSE-COPONENT-STATE;
X-NSCP-GSE-COMMENT="PUBLISH-COMPLETED":6538
END:VTODO
X-NSCP-WCAP-ERRNO:0
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//SunONE/Calendar Hosting Server//EN
METHOD:PUBLISH
VERSION:5.1.1
X-NSCP-CALPROPS-LAST-MODIFIED:19700101T000000Z
X-NSCP-CALPROPS-CREATED:19700101T000000Z
X-NSCP-CALPROPS-READ:999
X-NSCP-CALPROPS-WRITE:999
X-NSCP-CALPROPS-RELATIVE-CALID:susan
X-NSCP-CALPROPS-RESOURCE:0
BEGIN:VCALENDAR
PRODID:-//SunONE/Calendar Hosting Server//EN
METHOD:PUBLISH
VERSION:5.1.1
X-NSCP-CALPROPS-LAST-MODIFIED:20011010T001050Z
X-NSCP-CALPROPS-CREATED:20000929T180436Z
X-NSCP-CALPROPS-READ:999
X-NSCP-CALPROPS-WRITE:999
X-NSCP-CALPROPS-RELATIVE-CALID:susan
X-NSCP-CALPROPS-NAME:default
X-NSCP-CALPROPS-PRIMARY-OWNER:susan
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^c^WDEIC^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^a^RSF^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^a^^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^c^^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:fred^a^r^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:fred^c^^g
X-NSCP-CALPROPS-RESOURCE:0
BEGIN:VEVENT
UID:3c1162b3000051c300000013000010b7
DTSTAMP:20011208T011645Z
SUMMARY: Susan's event
DTSTART:20020110T110000Z
DTEND:20020110T120020Z
CREATED:20011208T004539Z
LAST-MODIFIED:20011208T011638Z
PRIORITY:0
SEQUENCE:4
ORGANIZER;SENT-BY="susan@sesta.com";
X-NSCP-ORGANIZER-UID=susan;
X-NSCP-ORGANIZER-SENT-BY-UID=susan:susan
STATUS:CONFIRMED
TRANSP:OPAQUE
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;
PARTSTAT=ACCEPTED;CN="Mary Anderson";RSVP=TRUE;
X-NSCP-ATTENDEE-GSE-STATUS=2:marya
X-NSCP-ORIGINAL-DTSTART:20021225T213000Z
X-NSCP-LANGUAGE:en
BEGIN:VALARM
ACTION:EMAIL
TRIGGER;VALUE=DATE-TIME:20020210T100000Z
ATTENDEE:MAILTO:marya@company22.com
END:VALARM
X-NSCP-DTSTART-TZID:America/Los_Angeles
X-NSCP-TOMBSTONE:0
X-NSCP-ONGOING:0
X-NSCP-ORGANIZER-EMAIL:susan@seata.com
X-NSCP-GSE-COMPONENT-STATE;
X-NSCP-GSE-COMMENT="REQUEST-COMPLETED":131074
END:VEVENT
BEGIN:VTODO
UID:3c1162e200207ff600000015000010b7
DTSTAMP:20011208T011645Z
SUMMARY:susan's todo
DTSTART:20011208T004626Z
DUE:20020120T141500Z
CREATED:20011208T004626Z
LAST-MODIFIED:20011208T011000Z
PRIORITY:0
SEQUENCE:3
PERCENT-COMPLETE:0
ORGANIZER;SENT-BY="susan@sesta.com";
X-NSCP-ORGANIZER-UID=crowe;
X-NSCP-ORGANIZER-SENT-BY-UID=susan:susa
STATUS:NEEDS-ACTION
X-NSCP-ORIGINAL-DTSTART:20011208T004626Z
X-NSCP-LANGUAGE:en
BEGIN:VALARM
ACTION:EMAIL
TRIGGER;VALUE=DATE-TIME:20020120T131500Z
ATTENDEE:MAILTO:susan@sesta.com
END:VALARM
X-NSCP-DUE-TZID:America/Los_Angeles
X-NSCP-TOMBSTONE:0
X-NSCP-ONGOING:0
X-NSCP-ORGANIZER-EMAIL:susan@sesta.com
X-NSCP-GSE-COMPONENT-STATE;
X-NSCP-GSE-COMMENT="PUBLISH-COMPLETED":65538
END:VTODO
X-NSCP-WCAP-ERRNO:0
END:VCALENDAR
Purpose
Retrieve specific calendar events.
Parameters
Table 7-24 lists fetchevents_by_id parameters:
Table 7-24    fetchevents_by_id Parameters
Parameter
Type
Purpose
Required
Default
A boolean indicating whether or not to print out a brief version of the JavaScript output.
Applies only when output type (fmt-out) is JavaScript (text/js).
The unique identifier for the calendar from which to retrieve events.
For compressed=0, returns less data. Specifically, it does not return the following parameters:
rrules
rdate
exrule
exdate
For compressed=1, all recurrence data is returned.
This parameter can only be used when fmt-out is text/xml, or text/calendar
The list of component states to fetch.
For compstate values, see Table 7-7
A modifier indicating which recurrences to retrieve. One of the following values:
1 = THISINSTANCE
2 = THISANDFUTURE
3 = THISANDPRIOR
4 = THISANDALL
The recurrence identifier for the event. For a nonrecurring event, set to 0.
Description.
Use this command to retrieve the specified events and recurrences from the specified calendar. You must specify the id parameter with the command unless the specified calendar is a public calendar. The command returns recurrences as specified by the mod parameter. See Recurrence Handling
Output Format
The server returns data in the format specified by the fmt-out parameter. If this parameter is not passed, the data is returned in the default format.
In the default output format, events are divided into two arrays. Events that span a smaller range of time, most normal events, print out in the event array. All events that last longer than 24 hours, or are all-day events, print out in the eventD array. All-day events are signified by having the isAllDay flag turned on.
Returns
The system uses the tzidout parameter to determine what time zone to translate retrieved data into before returning it. If the tzidout parameter is missing, the system returns the data in Zulu time.
Error Codes
If the operation is successful, the error number of 0 is appended to the error string. If a calendar cannot be accessed or is missing, the error number is appended to the error string.
Example
This query retrieves an event with a specific id.
http://webcalendarserver/fetchevents_by_id.wcap?id=bes6bbe2mu98uw9& calid=jdoe&uid=3c11625900005ffe00000011000010b7
&fmt-out=text/calendar
BEGIN:VCALENDAR
PRODID:-//SunONE/Calendar Hosting Server//EN
METHOD:PUBLISH
VERSION:5.1.1
X-NSCP-CALPROPS-LAST-MODIFIED:20011208T005613Z
X-NSCP-CALPROPS-CREATED:20010913T223336Z
X-NSCP-CALPROPS-READ:999
X-NSCP-CALPROPS-WRITE:999
X-NSCP-CALPROPS-RELATIVE-CALID:jdoe
X-NSCP-CALPROPS-NAME:John Doe
X-NSCP-CALPROPS-LANGUAGE:en
X-NSCP-CALPROPS-PRIMARY-OWNER:jdoe
X-NSCP-CALPROPS-TZID:America/Los_Angeles
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^c^WDEIC^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^a^RSF^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^a^frs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^c^^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^a^frs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^c^dw^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^a^rs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^c^w^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^p^r^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^p^r^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^p^r^g
X-NSCP-CALPROPS-RESOURCE:0
BEGIN:VEVENT
UID:3c11625900005ffe00000011000010b7
DTSTAMP:20011208T015845Z
SUMMARY:eventA
DTSTART:20011225T133000Z
DTEND:20011225T143000Z
CREATED:20011208T004409Z
LAST-MODIFIED:20011208T010857Z
PRIORITY:0
SEQUENCE:4
ORGANIZER;SENT-BY="jdoe@sesta.com";
X-NSCP-ORGANIZER-UID=jdoe;
X-NSCP-ORGANIZER-SENT-BY-UID=jdoe:jdoe
STATUS:CONFIRMED
TRANSP:OPAQUE
ATTENDEE;ROLE=REQ-PARTICIPANT;CUTYPE=INDIVIDUAL;
PARTSTAT=ACCEPTED;CN="John Smith";RSVP=TRUE;
X-NSCP-ATTENDEE-GSE-STATUS=2:jsmith
X-NSCP-ORIGINAL-DTSTART:20020210T190000Z
X-NSCP-LANGUAGE:en
BEGIN:VALARM
ACTION:EMAIL
TRIGGER;VALUE=DATE-TIME:20011225T123000Z
ATTENDEE:MAILTO:jdoe@sesta.com
END:VALARM
X-NSCP-DTSTART-TZID:America/Los_Angeles
X-NSCP-TOMBSTONE:0
X-NSCP-ONGOING:0
X-NSCP-ORGANIZER-EMAIL:jdoe@sesta.com
X-NSCP-GSE-COMPONENT-STATE;
X-NSCP-GSE-COMMENT="REQUEST-COMPLETED":31074
END:VEVENT
X-NSCP-WCAP-ERRNO:0
END:VCALENDAR
Purpose
Retrieve specific calendar todos.
Parameters
Table 7-25 lists fetchtodos_by_id parameters:
Table 7-25    fetchtodos_by_id Parameters
Parameter
Type
Purpose
Required
Default
A boolean indicating whether or not to print out a brief version of the JavaScript output.
Applies only when output type (fmt-out) is JavaScript (text/js).
The unique identifier for the calendar from which to retrieve todos.
For compressed=0, returns less data. Specifically, it does not return the following parameters:
rrules
rdate
exrule
exdate
For compressed=1, all recurrence data is returned.
This parameter can only be used when fmt-out is text/xml, or text/calendar
The list of component states to fetch.
For compstate values, see Table 7-7
A modifier indicating which recurrences to retrieve. One of the following values:
1 = THISINSTANCE
2 = THISANDFUTURE
3 = THISANDPRIOR
4 = THISANDALL
The recurrence identifier for the todo. For a nonrecurring todo, set to 0.
Description
Use this command to retrieve the specified todo and its recurrences from the specified calendar. You must specify the id parameter with the command unless the specified calendar is a public calendar.
Output Format
The server returns data in the format specified by the fmt-out parameter. If this parameter is not passed, the data is returned in the default JavaScript format.
For JavaScript output, todos are divided into two arrays. Todos that span a smaller range of time, most normal todos, print out in the todo array. All todos that last longer than 24 hours, or are all-day todos, print out in the todoD array. All-day todos are signified by having the isAllDay flag turned on.
Returns
For each calendar specified in calid, the server returns the calendar's todos of that calendar. If the todo has recurrences, it returns them as specified by the rid and mod parameters. See Recurrence Handling.
If the times specified in the rid parameter is not Zulu time, the system uses the time zone specified in the tzid parameter to translate the times into Zulu time for data retrieval. If the tzid parameter is missing, the system uses the server's default time zone.
The system uses the tzidout parameter to determine what time zone to translate retrieved data into before returning it. If the tzidout parameter is missing, the system returns the data in Zulu time.
Error Codes
If the operation is successful, the error number of 0 is appended to the error string. If a calendar cannot be accessed or is missing, the error number is appended to the error string.
Example
For example, a todo "weekly todo B" that's due weekly at 5:00pm starting on Feb 1, 2002 and ending on Mar 1, 2002.
This query fetches just the first todo, on Feb 1, 2002, because the recurrence ID of the first item is specified (rid=20020201T170000Z) but no modifier is specified, so it defaults to 1 (THISINSTANCE):
http://webcalendarserver/fetchtodos_by_id.wcap?
id=n3o3m05sx9v6t98t8u2p&uid=3c15309d000037020020021400003189&
rid=20020201T170000Z&fmt-out=text/calendar
The following output is generated:
BEGIN:VCALENDARPRODID:-//SunONE/Calendar Hosting Server//EN
METHOD:PUBLIS
VERSION:5.1.1
X-NSCP-CALPROPS-LAST-MODIFIED:20011208T005613Z
X-NSCP-CALPROPS-CREATED:20010913T223336Z
X-NSCP-CALPROPS-READ:999
X-NSCP-CALPROPS-WRITE:999
X-NSCP-CALPROPS-RELATIVE-CALID:jdoe
X-NSCP-CALPROPS-NAME:John Doe
X-NSCP-CALPROPS-LANGUAGE:en
X-NSCP-CALPROPS-PRIMARY-OWNER:jdoe
X-NSCP-CALPROPS-TZID:America/Los_Angeles
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^c^WDEIC^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^a^RSF^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^a^frs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^c^^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^a^frs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^c^dw^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^a^rs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^c^w^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^p^r^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^p^r^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^p^r^g
X-NSCP-CALPROPS-RESOURCE:0
BEGIN:VTODO
UID:3c15309d000037020020021400003189
RECURRENCE-ID:20020201T170000Z
DTSTAMP:20011210T222131Z
SUMMARY:weekly todo B
DTSTART:20020201T170000Z
DUE:20020201T170000Z
CREATED:20011210T220101Z
LAST-MODIFIED:20011210T220101Z
PRIORITY:0
SEQUENCE:0
PERCENT-COMPLETE:0
ORGANIZER;SENT-BY="jdoe@sesta.com";
X-NSCP-ORGANIZER-UID=jdoe;
X-NSCP-ORGANIZER-SENT-BY-UID=jdoe:jdoe
STATUS:NEEDS-ACTION
X-NSCP-ORIGINAL-DTSTART:20020201T170000Z
X-NSCP-LANGUAGE:en
X-NSCP-DUE-TZID:Europe/London
X-NSCP-TOMBSTONE:0
X-NSCP-ONGOING:0
X-NSCP-ORGANIZER-EMAIL:jdoe@sesta.com
X-NSCP-GSE-COMPONENT-STATE;
X-NSCP-GSE-COMMENT="PUBLISH-COMPLETED":65538
END:VTODO
X-NSCP-WCAP-ERRNO:0
END:VCALENDAR
This query fetches the last two recurrences by specifying the recurrence ID of the second to last recurrence on Feb. 22, 2002 (rid=20020222T170000Z) and a modifier of 2 (mod=2) which means THISANDFUTURE recurrences:
http://webcalendarserver/fetchtodos_by_id.wcap?
id=n3o3m05sx9v6t98tu2p&uid=3c15309d000037020020021400003189&
rid=20020222T170000Z&mod=2&fmt-out=text/calendar
The results of the query are as follows:
BEGIN:VCALENDAR
PRODID:-//SunONE/Calendar Hosting Server//EN
METHOD:PUBLISH
VERSION:5.1.1
X-NSCP-CALPROPS-LAST-MODIFIED:20011208T005613Z
X-NSCP-CALPROPS-CREATED:20010913T223336Z
X-NSCP-CALPROPS-READ:999
X-NSCP-CALPROPS-WRITE:999
X-NSCP-CALPROPS-RELATIVE-CALID:jdoe
X-NSCP-CALPROPS-NAME:John Doe
X-NSCP-CALPROPS-LANGUAGE:en
X-NSCP-CALPROPS-PRIMARY-OWNER:jdoe
X-NSCP-CALPROPS-TZID:America/Los_Angeles
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^c^WDEIC^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^a^RSF^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^a^frs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^c^^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^a^frs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^c^dw^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^a^rs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^c^w^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^p^r^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^p^r^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^p^r^g
X-NSCP-CALPROPS-RESOURCE:0
BEGIN:VTODO
UID:3c15309d000037020020021400003189
RECURRENCE-ID:20020222T170000Z
DTSTAMP:20011210T222757Z
SUMMARY:weekly todo B
DTSTART:20020222T170000Z
DUE:20020222T170000Z
CREATED:20011210T220101Z
LAST-MODIFIED:20011210T220101Z
PRIORITY:0
SEQUENCE:0
PERCENT-COMPLETE:0
ORGANIZER;SENT-BY="jdoe@sesta.com";
X-NSCP-ORGANIZER-UID=jdoe;
X-NSCP-ORGANIZER-SENT-BY-UID=jdoe:jdoe
STATUS:NEEDS-ACTION
X-NSCP-ORIGINAL-DTSTART:20020222T170000Z
X-NSCP-LANGUAGE:en
X-NSCP-DUE-TZID:Europe/London
X-NSCP-TOMBSTONE:0
X-NSCP-ONGOING:0
X-NSCP-ORGANIZER-EMAIL:jdoe@sesta.com
X-NSCP-GSE-COMPONENT-STATE;
X-NSCP-GSE-COMMENT="PUBLISH-COMPLETED":65538
END:VTODO
BEGIN:VTODO
UID:3c15309d000037020020021400003189
RECURRENCE-ID:20020301T170000Z
DTSTAMP:20011210T222757Z
SUMMARY:weekly todo B
DTSTART:20020301T170000Z
DUE:20020301T170000Z
CREATED:20011210T220101Z
LAST-MODIFIED:20011210T220101Z
PRIORITY:0
SEQUENCE:0
PERCENT-COMPLETE:0
ORGANIZER;SENT-BY="jode@sesta.com";
X-NSCP-ORGANIZER-UID=jdoe;
X-NSCP-ORGANIZER-SENT-BY-UID=jdoe:jdoe
STATUS:NEEDS-ACTION
X-NSCP-ORIGINAL-DTSTART:20020301T170000Z
X-NSCP-LANGUAGE:en
X-NSCP-DUE-TZID:Europe/London
X-NSCP-TOMBSTONE:0
X-NSCP-ONGOING:0
X-NSCP-ORGANIZER-EMAIL:jdoe@sesta.com
X-NSCP-GSE-COMPONENT-STATE;
X-NSCP-GSE-COMMENT="PUBLISH-COMPLETED":65538
END:VTODO
X-NSCP-WCAP-ERRNO:0
END:VCALENDAR
Purpose
Retrieve data about all timezones supported by the server.
Parameters
Table 7-26 lists get_all_timezones parameters:
Description.
Use this command to retrieve data about all timezones that are supported by the server. The crossover values are defined to be the dates when the timezone enters/exits daylight savings time. The odd index dates are the beginning of daylight-savings. The even index dates are the end of daylight-savings. If the timezone does not have daylight-savings, then this value will be set to the empty-string.
Returns
If you specify a range of years with the dtstart and dtend parameters, the command returns only the crossover dates for the years within the range. Otherwise, it returns all crossover dates from the first to the last known year (1987-2087).
The server returns data in the format specified by the fmt-out parameter. If you do not pass in the fmt-out parameter, the server uses the default JavaScript format.
Error Codes
If there was an error in getting the timezones, the server returns the error GET_ALL_TIMEZONES_FAILED(24).
Example
The first example shows the command output. The second example is a crossover array.
This query gets all time zones.
http://calendarserver/get_all_timezones.wcap?
id=2m2ns6w9x9h2mr6p3b&fmt-out=text/calendar
This is the result of the query:
BEGIN:VCALENDAR
PRODID:-//SunONE/Calendar Hosting Server//EN
METHOD:PUBLISH
VERSION:5.1.1
X-NSCP-CALPROPS-LAST-MODIFIED:19700101T000000Z
X-NSCP-CALPROPS-CREATED:19700101T000000Z
X-NSCP-CALPROPS-READ:999
X-NSCP-CALPROPS-WRITE:999
X-NSCP-CALPROPS-RELATIVE-CALID:default
X-NSCP-CALPROPS-LANGUAGE:en
X-NSCP-CALPROPS-PRIMARY-OWNER:jdoe
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^a^r^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^c^wdeic^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^a^sf^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^c^^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^p^r^g
X-NSCP-CALPROPS-RESOURCE:0
BEGIN:VTIMEZONE
TZID:Africa/Amman
BEGIN:STANDARD
DTSTART:19950920T000000
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
TZNAME:EEST
RRULE:FREQ=YEARLY;BYDAY=-1FR;BYMONTH=9
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19930420T000000
TZOFFSETFROM:+0200
TZOFFSETTO:+0300
TZNAME:EEDT
RRULE:FREQ=YEARLY;BYDAY=-1FR;BYMONTH=4
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VTIMEZONE
TZID:Africa/Cairo
BEGIN:STANDARD
DTSTART:19950924T000000
TZOFFSETFROM:+0300
TZOFFSETTO:+0200
TZNAME:EEST
COMMENT:this is a comment
RRULE:FREQ=YEARLY;BYDAY=-1FR;BYMONTH=9
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:19950420T000000
TZOFFSETFROM:+0200
TZOFFSETTO:+0300
TZNAME:EEDT
RRULE:FREQ=YEARLY;BYDAY=-1FR;BYMONTH=4
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VTIMEZONE
...(other time zones omitted to conserve space)
BEGIN:VTIMEZONE
TZID:Pacific/Tongatapu
BEGIN:STANDARD
DTSTART:19970101T000000
TZOFFSETFROM:+1300
TZOFFSETTO:+1300
TZNAME:TOT
TZNAME:PHOT
END:STANDARD
END:VTIMEZONE
X-NSCP-WCAP-ERRNO:0
END:VCALENDAR
The following is an example of a timezone array element where crossover dates have been limited to the years from mid-1998 to 2006:
timezoneList[20] = new TZ('America/Los_Angeles',
'PST',
'PDT',
'-0800',
'-0700',
new Array
('19981025T090000Z','20020404T100000Z','20021031T090000Z',
'20020402T100000Z','20021029T090000Z','20020401T100000Z',
'20021028T090000Z', '20020407T100000Z', '20021027T090000Z',
'20030406T100000Z', '20031026T090000Z', '20040404T100000Z',
'20041031T090000Z', '20050403T100000Z', '20051030T090000Z',
'20060402T100000Z', '20061029T090000Z'))
The "America/Phoenix" timezone does not have daylight-savings. Thus the daylight elements exactly equal the standard elements. Also, the crossover strings are set to the empty string.
timezoneList[23] = new TZ('America/Phoenix',
'MST',
'MST',
'-0700',
'-0700',
new Array())
Purpose
Retrieve calendar properties.
Parameters
Table 7-27 lists get_calprops parameters:
Table 7-27    get_calprops Parameters
Parameter
Type
Purpose
Required
Default
A list of calendar identifiers for the calendars from which to retrieve properties.
Description.
Use this command to retrieve the calendar properties for the specified calendars.
Returns
The command returns a page with the following property information for the specified calendars:
relative ID
read-access value (0 = cannot read, 1 = can read)
write-access value (0 = cannot write, 1 = can write)
character set (if empty, default is us-ascii)
language (if empty string, default is en = English)
cal-master (contact information, usually email address of primary owner)
Error Codes
If the calendar exists, but the user does not have READ access to it, layer_errno[x] is set to the value 1 for that calendar's index.
If the calendar is not found, the server sets layer_errno[x] to the value 2 for that calendar's index.
If the fetch fails for any calendar, its error number, errno, is set to GET_CALPROPS_FAILED(20).
Example
In the following example, you want to retrieve the calendar properties for the calendars jdoe, jsmith, and susan, in that order.
http://webcalendarserver/get_calprops.wcap?id=2mu95r5so0hq68ts6q3
&calid=jdoe;jsmith;susan&fmt-out=text/calendar
BEGIN:VCALENDAR
PRODID:-//SunONE/Calendar Hosting Server//EN
METHOD:PUBLISH
VERSION:5.1.1
X-NSCP-CALPROPS-LAST-MODIFIED:20011208T005613Z
X-NSCP-CALPROPS-CREATED:20010913T223336Z
X-NSCP-CALPROPS-READ:999
X-NSCP-CALPROPS-WRITE:999
X-NSCP-CALPROPS-RELATIVE-CALID:jdoe
X-NSCP-CALPROPS-NAME:John Doe
X-NSCP-CALPROPS-LANGUAGE:en
X-NSCP-CALPROPS-PRIMARY-OWNER:jdoe
X-NSCP-CALPROPS-TZID:America/Los_Angeles
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^c^WDEIC^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^a^RSF^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^a^frs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^c^^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^a^frs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^c^dw^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^a^rs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^c^w^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^p^r^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^p^r^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^p^r^g
X-NSCP-CALPROPS-RESOURCE:0
X-NSCP-WCAP-ERRNO:0
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//SunONE/Calendar Hosting Server//EN
METHOD:PUBLISH
VERSION:5.1.1
X-NSCP-CALPROPS-LAST-MODIFIED:20011115T234638Z
X-NSCP-CALPROPS-CREATED:20011115T234638Z
X-NSCP-CALPROPS-READ:999
X-NSCP-CALPROPS-WRITE:999
X-NSCP-CALPROPS-RELATIVE-CALID:jsmith
X-NSCP-CALPROPS-NAME:James Smith
X-NSCP-CALPROPS-LANGUAGE:en
X-NSCP-CALPROPS-PRIMARY-OWNER:jsmith
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^a^r^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^c^wdeic^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^a^sf^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^c^^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^p^r^g
X-NSCP-CALPROPS-RESOURCE:0
X-NSCP-WCAP-ERRNO:0
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//SunONE/Calendar Hosting Server//EN
METHOD:PUBLISH
VERSION:5.1.1
X-NSCP-CALPROPS-LAST-MODIFIED:20011130T002458Z
X-NSCP-CALPROPS-CREATED:20010914T015956Z
X-NSCP-CALPROPS-READ:999
X-NSCP-CALPROPS-WRITE:999
X-NSCP-CALPROPS-RELATIVE-CALID:susan
X-NSCP-CALPROPS-NAME:Susan Anderson
X-NSCP-CALPROPS-LANGUAGE:en
X-NSCP-CALPROPS-PRIMARY-OWNER:susan
X-NSCP-CALPROPS-OWNERS:jdoe
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^c^WDEIC^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^a^RSF^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^a^rsf^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^c^w^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^p^r^g
X-NSCP-CALPROPS-RESOURCE:0
X-NSCP-WCAP-ERRNO:0
END:VCALENDAR
Purpose
Get the freebusy information for users.
Parameters
Table 7-28 lists get_freebusy parameters:
Description.
This command to retrieve the freebusy information for specified users. Freebusy information tells whether or not a user's time has been scheduled. It does not indicate why the user is busy.
Error Codes
If this command fails for any reason, errno is set to GET_FREEBUSY_FAILED(39).
Example
For example, a calendar called jdoe has the following events:
10:00-11:00
first meeting
12:00-1:00
lunch
3:00-4:00
second meeting
The freebusy time for jdoe (from 9:00 to 6:00) would be the following:
9-10
:
Free
10-11
:
Busy
11-12
:
Free
12-1
:
Busy
1-3
:
Free
3-4
:
Busy
4-6
:
Free
The following URL generates freebusy information found in the calendar jdoe between May 1 2002 and July 1 2002.
The output is returned in text/calendar format.
http://webcalendarserver/get_freebusy.wcap?id=2mu95r5so0hq68ts6q3&c alid=jsun&dtstart=20020501T112233Z&dtend=20020701T112233Z&fmt-out=t ext/calendar
BEGIN:VCALENDAR
PRODID:-//SunONE/Calendar Hosting Server//EN
METHOD:PUBLISH
VERSION:5.1.1
X-NSCP-CALPROPS-LAST-MODIFIED:20010517T012259Z
X-NSCP-CALPROPS-CREATED:20010517T012259Z
X-NSCP-CALPROPS-READ:999
X-NSCP-CALPROPS-WRITE:999
X-NSCP-CALPROPS-DESCRIPTION:Work Calendar for John Doe
X-NSCP-CALPROPS-RELATIVE-CALID:jdoe
X-NSCP-CALPROPS-NAME:John Doe
X-NSCP-CALPROPS-PRIMARY-OWNER:jdoe
X-NSCP-CALPROPS-OWNERS:susan
X-NSCP-CALPROPS-CATEGORIES:business
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^a^S^g
BEGIN:VFREEBUSY
DTSTART:20020501T112233Z
DTEND:20020701T112233Z
FREEBUSY;FBTYPE=FREE:20020501T112233Z/20020518T170000Z
FREEBUSY;FBTYPE=BUSY:20020518T170000Z/20020518T190000Z
FREEBUSY;FBTYPE=FREE:20020518T190000Z/20020525T170000Z
FREEBUSY;FBTYPE=BUSY:20020525T170000Z/20020525T190000Z
FREEBUSY;FBTYPE=FREE:20020525T190000Z/20020601T170000Z
FREEBUSY;FBTYPE=BUSY:20020601T170000Z/20020601T190000Z
FREEBUSY;FBTYPE=FREE:20020601T190000Z/20020608T170000Z
FREEBUSY;FBTYPE=BUSY:20020608T170000Z/20020608T190000Z
FREEBUSY;FBTYPE=FREE:20020608T190000Z/20020615T170000Z
FREEBUSY;FBTYPE=BUSY:20020615T170000Z/20020615T190000Z
FREEBUSY;FBTYPE=FREE:20020615T190000Z/20020622T170000Z
FREEBUSY;FBTYPE=BUSY:20020622T170000Z/20020622T190000Z
FREEBUSY;FBTYPE=FREE:20020622T190000Z/20020629T170000Z
FREEBUSY;FBTYPE=BUSY:20020629T170000Z/20020629T190000Z
FREEBUSY;FBTYPE=FREE:20020629T190000Z/20020701T112233Z
END:VFREEBUSY
X-NSCP-WCAP-ERRNO:0
END:VCALENDAR
Purpose
Generate a set of globally unique identifiers.
Parameters
Table 7-29 lists get_guids parameters:
Table 7-29    get_guids Parameters
Parameter
Type
Purpose
Required
Default
Description.
This command returns the specified number of globally unique identifiers (GUIDs). The client need not be authenticated to call this command.
Example
http://webcalendarserver/get_guids.wcap?guidCount=10
&fmt-out=text/calendar
BEGIN:VCALENDAR
VERSION:5.1.1
PRODID:SunONE Calendar Server 5.1.1
X-NSCP-GUID0:e5e4b537465600000b000000c3000000
X-NSCP-GUID1:e5e4b537d47900000c000000c3000000
X-NSCP-GUID2:e5e4b537961400000d000000c3000000
X-NSCP-GUID3:e5e4b5373d3a00000e000000c3000000
X-NSCP-GUID4:e5e4b537f31400000f000000c3000000
X-NSCP-GUID5:e5e4b5378259000010000000c3000000
X-NSCP-GUID6:e5e4b537b026000011000000c3000000
X-NSCP-GUID7:e5e4b537c263000012002002c3000000
X-NSCP-GUID8:e5e4b537241f000013000000c3000000
X-NSCP-GUID9:e5e4b537e733000014000000c3000000
END:VCALENDAR
Purpose
Retrieve the calendar preferences for the current user.
Parameters
Table 7-30 lists get_userprefs parameters:
Table 7-30    get_userprefs Parameters
Parameter
Type
Purpose
Required
Default
Used only by administrators. Indicates which user's preferences to get.
Description.
This command retrieves all the calendar preferences for the current user, and the following server preferences relating to this user:
allowchangepassword. Users can change the password.
allowcreatecalendars. Users can create calendars.
allowdeletecalendars. Users can delete calendars.
allowpublicwritablecalendars. Users can have publicly writable calendars.
validateowners. If set to 1, the server must validate that each owner of a calendar exists in the directory (whether the directory is LDAP or a CSAPI compatible user mechanism).
allowsetprefs. If set to 1, allow set_userprefs.wcap to modify the user preferences. To use the parameter userid, two conditions must be met. The server configuration preference service.admin.calmaster.wcap.
allowgetmodifyuserprefs must be set to "yes" in the ics.conf file, and the requestor must be logged in as an administrator, using the login.wcap command.
See the "Administrator's Guide" for detailed information about server preferences.
Example
The following URL retrieves user preferences for the current user:
http://webcalendarserver/get_userprefs.wcap?id=b5q2o8ve2rk02nv9t6&
calid=jdoe&fmt-out=text/calendar
BEGIN:VCALENDAR
PRODID:-//SunONE/Calendar Hosting Server//EN
METHOD:PUBLISH
VERSION:5.1.1
X-NSCP-WCAP-PREF-cn:John Doe
X-NSCP-WCAP-PREF-givenName:John
X-NSCP-WCAP-PREF-mail:jdoe@sesta.com
X-NSCP-WCAP-PREF-preferredlanguage:
X-NSCP-WCAP-PREF-sn:Doe
X-NSCP-WCAP-PREF-icsCalendar:jdoe
X-NSCP-WCAP-PREF-icsTimezone:Europe/London
X-NSCP-WCAP-PREF-icsDefaultSet:
X-NSCP-WCAP-PREF-icsFirstDay:
X-NSCP-WCAP-PREF-icsSet:name=mygroup$calendar=lucy\;jjones\;jdoe
TimeZone$tzmode=specify$tz=America/Denver$mergeInDayView=true
$description=
X-NSCP-WCAP-PREF-icsSubscribed:lucy$,jjones$,jsmith:jdoe
X-NSCP-WCAP-PREF-icsFreeBusy:jdoe
X-NSCP-WCAP-PREF-ceInterval:PT0H30M
X-NSCP-WCAP-PREF-ceDayTail:19
X-NSCP-WCAP-PREF-ceDefaultView:overview
X-NSCP-WCAP-PREF-ceColorSet:pref_group4
X-NSCP-WCAP-PREF-ceToolText:1
X-NSCP-WCAP-PREF-ceToolImage:1
X-NSCP-WCAP-PREF-ceFontFace:PrimSansBT,Verdana,sans-serif
X-NSCP-WCAP-PREF-ceExcludeSatSun:0
X-NSCP-WCAP-PREF-ceGroupInviteAll:1
X-NSCP-WCAP-PREF-ceSingleCalendarTZID:0z
X-NSCP-WCAP-PREF-ceAllCalendarTZIDs:0
X-NSCP-WCAP-PREF-ceNotifyEnable:0
X-NSCP-WCAP-PREF-ceNotifyEmail:jdoe@sesta.com
X-NSCP-WCAP-PREF-ceDefaultAlarmStart:P15M
X-NSCP-WCAP-PREF-ceDefaultAlarmEmail:jdoe@sesta.com
X-NSCP-WCAP-PREF-nswcalCALID:jdoe
X-NSCP-WCAP-PREF-icsDWPHost:DWPserver1
X-NSCP-WCAP-PREF-icsCalendarOwned:jdoe$John's Calendar,jdoe:personal$John's Personal Calendar
X-NSCP-WCAP-SERVER-PREF-allowchangepassword:no
X-NSCP-WCAP-SERVER-PREF-allowcreatecalendars:yes
X-NSCP-WCAP-SERVER-PREF-allowdeletecalendars:
X-NSCP-WCAP-SERVER-PREF-allowpublicwritablecalendars:
X-NSCP-WCAP-SERVER-PREF-validateowners:no
X-NSCP-WCAP-ERRNO:0
END:VCALENDAR
Purpose
Import events and todos from a file to a calendar.
Note ENS notifications for appid are not yet implemented.
Parameters
Table 7-31 lists import parameters:
Description.
Use this command to import to the specified calendar events and todos that have previously been exported to a file using the export command. You must specify the file's MIME content type in the content-in parameter.
If you do not specify either the starting or ending date, or you pass in 0 as the value for dtstart and dtend, the command adds all events and todos in the file to the specified calendar. If you specify a starting and ending date, the command imports only events and todos in the file that fall within the time range. Specify starting and ending dates in UTC time (indicated by Z at the end of the datetime).
You must use this command with an HTTP POST message (unlike other commands, which can be used with an HTTP GET message). You attach the file containing the exported events and todos to the POST message. This file must be in either iCalendar (.ics) or XML (.xml) format.
Example
The following POST message imports the attached iCalendar file to the calendar jdoe using the import command (The session id is required.):
POST /import.wcap?id=t95qm0n0es3bo35r&calid=jdoe&dtstart=0&dtend=0
Content-type: multipart/form-data;
boundary=---------------------------33111928916708
Content-Length: 679
-----------------------------33111928916708
Content-Disposition: form-data; name="Upload";
filename="C:\TEMP\ical1.ics"
BEGIN:VCALENDAR
BEGIN:VEVENT
DTSTART:20020105T100000Z
DTEND:20020105T110000Z
DTSTAMP:20010104T120020Z
CREATED:20010105T110000Z
LAST-MODIFIED:20010104T120020Z
SUMMARY:Weekly QA Meeting
UID:random-uid001
END:VEVENT
BEGIN:VEVENT
DTSTART:20020106T100000
DTEND:20020106T110000
DTSTAMP:20010104T120020
CREATED:20010105T110000Z
LAST-MODIFIED:20010104T120020Z
SUMMARY:Weekly QA Meeting 2
UID:random-uid002
END:VEVENT
END:VCALENDAR
-----------------------------33111928916708--
The following HTML form creates such a POST message, attaching a file that the user specifies:
<FORM METHOD=POST ENCTYPE="multipart/form-data"
ACTION="http://webcalendarserver:12345/import.wcap?id=t95qm0n0es3bo 35r&calid=jdoe&dtstart=0&dtend=0&content-in=text/calendar">
<ol>
<li>file to import:<input type="file" accept="text" name="Upload">
</li>
<li>Press Import Now:<input type="submit" value="Import Now"></li>
</ol>
</FORM>
Purpose
Authenticate a specific user.
Parameters
Table 7-32 lists login parameters:
Description.
This command logs a specific user into Sun ONE Calendar Server, authenticating the user to the server with a user name and password convention.
The user name is a plain text string that uniquely identifies the user to the server. This user name could, for example, be the same as a user's email address. The password is also plain text.
fmt-out=text/html
This data type is allowed in only one command in WCAP, login. It is for the express purpose of logging into the SHTML user interface. When fmt-out=text/html occurs in login, the command is redirected to command.shtml, which connects the user to the Sun ONE Calendar Server user interface. Since this data type is not the default for the parameter, you must specify it explicitly when logging in to the Sun ONE Calendar Server interface.
Authentication
Do internal authentication using either the default LDAP authentication, or your own CSAPI plug-in to link to an existing user authentication method (For more information on CSAPI authentication, see csIAuthentication). For more information on the Proxy Authentication SDK, see Chapter 3 for the overview and Chapter 4 for the API Reference.
If the user fails to authenticate correctly, the login window reappears with an error noting a failure to log in.
Example
For example, the following URL attempts to login user jdoe:
http://webcalendarserver/login.wcap?user=jdoe&password=mypword
Returns
If you do not pass in the refresh parameter, and fmt-out specifies text/js, the default value is 0. If fmt-out specifies one of the two other styles, text/calendar or text/xml, the default value is 1.
If you specify 1 in the refresh parameter, the returned page contains only the session identifier in a line such as the following:
This is the value that you pass to many WCAP commands in order to gain access to private calendars. It is also a required parameter for certain commands, such as logout.
If you specify 0 for the refresh parameter, the command returns JavaScript output containing the location of the entry page to the Sun ONE Calendar Server's user interface.
With the parameter set to 0, the login command returns everything, including the default html file:
HTTP/1.0 302 OK
Date: Tue, 11 May 2002 22:38:33 GMT
Pragma: no-cache
Expires: 0
Cache-Control: no-cache
Content-Length: 0
Last-modified: Tue, 11 May 2002 22:38:33 GMT
Location:
http://webcalendarserver/en/main.html?id=er6en05tv6n3bv9&lang=en
&host=http://webcalendarserver/
<html><head><script>
function color(s) { if (s) document.bgColor=s }
var id='er6en05tv6n3bv9'
var userid='jdoe'
var calid='jdoe'
var errno=new Array()
var errstr=''
</script></head>
<body bgcolor='9999CC' onLoad=parent.ceCB(window.name)>
Purpose
Terminate the current user's session.
Parameters
Table 7-33 lists logout parameters:
Table 7-33    logout Parameters
Parameter
Type
Purpose
Required
Default
Description.
This command ends the specified session of the current user, and deletes the session instance of the user in the session table. The user is returned to the login screen.
The following is an example of a URL using this command:
http://webcalendarserver/logout.wcap?id=bu9p3eb8x5p2nm0q3
Purpose
Determine whether the calendar server is active.
Parameters
This command takes no parameters.
Description.
This command returns a minimal HTML page to indicate that the server responded.
Only users with administrative privilege can use this command.
Returns
For this example, the administrator's userid and calid are both adminX.
HTTP/1.0 200
Date: Thu, 03 Jun 2002 21:31:42 GMT
Content-type: text/html; charset=iso-8859-1
Content-length: 190
Last-modified: Thu, 03 Jun 2002 21:31:42 GMT
Pragma: no-cache
Expires: 0
Cache-Control: no-cache
<html><head><script>
function color(s) { if (s) document.bgColor=s }
var id='bb5rt6eb5pu9v9w9'
var userid='adminX'
var calid='adminX'
var errno=new Array()
parent.ceCB(window.name)
</script></head></html>
Purpose
Search for a calendar's properties.
Parameters
Table 7-34 lists search_calprops parameters:
Description.
This command searches for a calendar using the query type specified by searchOpts. It returns the calendar properties for all calendars where a string in the specified properties (primaryOwner, calid, name), matches the search-string, using the specified seachOpts, up to the specified maximum number of matches (maxResults).
Search Properties
This command searches for a matching string in one of three properties:
To search for the value of a specific property, set that parameter to 1. If both primaryOwner and name are set to 0, calid defaults to 1 and the server assumes the search-string is a calid, regardless of the calid parameter setting.
Search Options
There are four search options:
Return the calendar properties that contain the search-string (CONTAINS).
Return the calendar properties that begin with the search-string (BEGINS_WITH).
Return the calendar properties that ends with the search-string (ENDS_WITH).
Return the calendar properties that exactly match the search-string (EXACT).
Example
The following example URL searches the primary owner property (primaryOwner=1) in all calendars to see if it contains (searchOpts=0) the string "jdoe"
http://webcalendarserver/search_calprops.wcap?id=n3o3m05sx9v6t98t8u2p&
search-string=jdoe&primaryOwner=1&searchOpts=0&maxResults=50&
fmt-out=text/calendar
The following data is a result of the example URL above:
BEGIN:VCALENDAR
PRODID:-//SunONE/Calendar Hosting Server//EN
METHOD:PUBLISH
VERSION:5.1.1
X-NSCP-CALPROPS-LAST-MODIFIED:20011208T005613Z
X-NSCP-CALPROPS-CREATED:20010913T223336Z
X-NSCP-CALPROPS-READ:999
X-NSCP-CALPROPS-WRITE:999
X-NSCP-CALPROPS-RELATIVE-CALID:jdoe
X-NSCP-CALPROPS-NAME:John Doe
X-NSCP-CALPROPS-LANGUAGE:en
X-NSCP-CALPROPS-PRIMARY-OWNER:jdoe
X-NSCP-CALPROPS-TZID:America/Los_Angeles
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^c^WDEIC^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^a^RSF^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^a^frs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^c^^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^a^frs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^c^dw^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^a^rs^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^c^w^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^p^r^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:lucy^p^r^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:jjones^p^r^g
X-NSCP-CALPROPS-RESOURCE:0
X-NSCP-WCAP-ERRNO:0
END:VCALENDAR
BEGIN:VCALENDAR
PRODID:-//SunONE/Calendar Hosting Server//EN
METHOD:PUBLISH
VERSION:5.1.1
X-NSCP-CALPROPS-LAST-MODIFIED:20010917T213724Z
X-NSCP-CALPROPS-CREATED:20010917T213724Z
X-NSCP-CALPROPS-READ:999
X-NSCP-CALPROPS-WRITE:999
X-NSCP-CALPROPS-RELATIVE-CALID:jdoe:sports
X-NSCP-CALPROPS-NAME:Sports Calendar
X-NSCP-CALPROPS-LANGUAGE:en
X-NSCP-CALPROPS-PRIMARY-OWNER:jdoe
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^c^WDEIC^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@@o^a^RSF^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^a^^g
X-NSCP-CALPROPS-ACCESS-CONTROL-ENTRY:@^c^^g
X-NSCP-CALPROPS-RESOURCE:0
X-NSCP-WCAP-ERRNO:0
END:VCALENDAR
Purpose
Set the calendar properties of a calendar.
Parameters
Table 7-35 lists set_calprops parameters:
Description.
This command is an update command, that is, it only changes the values of the parameters you specify. It is not necessary to supply all parameters in the command, only the ones you wish to change. Calendar properties are special states of a calendar, which includes the calendar's name, read and write permission values (acl parameter), the list of owners, and the list of categories.
The read and write parameters have been deprecated. The functionality has been replaced with the acl parameter. They are included for backwards compatibility only.
Use set_calprops to do the following:
Change the name of the calendar.
Change read permission of calendar's event.
Change write permission of calendar's event.
Change description of calendar.
Change character set of calendar.
Single Calendar Example
Here is a sample URL that sets calendar properties: (The calid parameter is required.)
http://webcalendarserver?set_calprops.wcap?id=dfasdfzd3ds&calid=jdo e&categories=business;meeting&name=John%39s%32Calendar
Multiple Calendars Example
To set properties of several calendars at one time, set the multiple parameter to the number of calendars to be set, then pass a cal parameter for each calendar. The cal parameter contains an encoded string with the complete property parameter list for the identified calendar. In this string, replace all special characters with a percent character (%), followed by the hexadecimal ASCII code for the special character. ASCII hex codes for common special characters are as follows:
Character
Code
For example, the following URL modifies three calendars with IDs xxxx, yyyy, and zzzz, setting the descriptions to X-Calendar, Y-Calendar, and Z-Calendar, respectively:
http://webcalendarserver?id=fasdfzd3ds
&multiple=3
&cal=calid%3Dxxxx%26description%3DX-Calendar
&cal=calid%3Dyyyy%26description%3DY-Calendar
&cal=calid%3Dzzzz%26description%3DZ-Calendar
This is the equivalent of the following three URLs:
http://webcalendarserver?id=fasdfzd3ds&calid=xxxx&desc=X-Calendar
http://webcalendarserver?id=fasdfzd3ds&calid=yyyy&desc=Y-Calendar
http://webcalendarserver?id=fasdfzd3ds&calid=zzzz&desc=Z-Calendar
In the example, notice that since the multiple parameter is set to 3, there are three instances of the cal parameter. The value of each cal parameter is an encoded list of parameters and their values. The server will decode each cal parameter and set the properties appropriately.
Access Control Entries
See "Access Control Entries", in the Common Topics section at the front of this chapter. Note that due to limitations of the user interface, it is advisable to limit the number of individuals listed in the ACEs to a maximum of 75 per calendar.
Freebusy Access
See "Freebusy Access", in the Common Topics section at the front of this chapter.
Choosing a Different Language or Character Set
See "Choosing a Different Language or Character Set", in the Common Topics section at the front of this chapter.
Purpose
Modify the preferences or password for a session.
Parameters
Table 7-36 lists set_userprefs parameters:
Description.
This command modifies the preferences for the current user. You may also modify the user's password through LDAP.
Use of this parameter is only necessary when setting the subscribed list of calendars (icsSubscribed), or the subscribed list of groups (icsSet). The calid on incoming commands must have the colon, ":", replaced with a caret, "^". For example, if the calid is jdoe:personal, then WCAP must receive it as jdoe^personal in order for the command to work properly.
If the value of convertCalid is 1, then WCAP will convert the "^" back to a ":". If the value of the convertCalid is 0, the conversion will not be done
When the administrator is logged in, and the ics.conf file preference service.admin.calmaster.wcap.allowgetmodifyuserprefs is set to "yes", the userid parameter specifies which user's preferences to set.
Returns
The function returns the text of get_userprefs.
Examples
For example, the following URL adds a new preference, ceBgcolor, to the calendar and sets it to black:
http://webcalendarserver/set_userprefs.wcap?id=b5q2o8ve2rk02nv9t6
&add_attrs=ceBgcolor=black
This URL deletes the calendar preference ceBgcolor from the user's preferences.
http://webcalendarserver/set_userprefs.wcap?id=b5q2o8ve2rk02nv9t6
&del_attrs=ceBgcolor
This URL would modify the calendar preference ceBgcolor to have the value white:
http://webcalendarserver/set_useprefs.wcap?id=b5q2o8ve2rk02nv9t6
&set_attrs=ceBgcolor=white
This URL would allow the logged-in administrator to modify the calendar preference ceBgcolor to have the value black for user jdoe:
http://webcalendarserver/set_userprefs.wcap?id=b5q2o8ve2rk02nv9t6&u serid=jdoe&set_attrs=ceBgcolor=black
Purpose
Add events to a calendar.
Parameters
Table 7-37 lists storeevents parameters:
Table 7-37    storeevents Parameters
Parameter
Type
Purpose
Required
Default
A runtime parameter (not stored in the database) that specifies which application is making the request. ENS uses this parameter to determine which X-Tokens to return. Does not affect WCAP command output.
For more information on the ENS X-Tokens, see the SunONE Messaging and Collaboration Event Notification Service Manual.
This is for iCalendar interoperability only.
The strings are URLs.
A boolean indicating whether or not to print out a brief version of the JavaScript output.
Applies only when output type (fmt-out) is JavaScript (text/js).
For compressed=0, returns less data. Specifically, it does not return the following parameters:
rrules
rdate
exrule
exdate
For compressed=1, all recurrence data is returned.
This parameter can only be used when fmt-out is text/xml, or text/calendar
Event purpose description. A string of any length. If not passed, desc is set to the summary value.
Event duration. If an event has both a duration and a dtend, the duration is ignored.
Event exclusionary recurrence rules. A semicolon-separated list of recurrence-rule strings.
Each rule value must be enclosed in quotes. See Recurrence Handling.
A boolean indicating whether or not to fetch and return newly stored todos.
Semicolon-separated string of two float numbers representing the event's geographical location (latitude and longitude).
A boolean indicating whether or not the event lasts all day.
ITIP method for group scheduling.
1 = PUBLISH (organizer only uses this)
2 = REQUEST (organizer only uses this)
4 = REPLY (attendees only use this)
8 = CANCEL (organizer only uses this)
16 = MOVE
32 = COUNTER (attendees only use this)
Specifies the recurrences to store/modify.
Not required for creating events.
1 = THISINSTANCE
2 = THISANDFUTURE
3 = THISANDPRIOR
4 = THISANDALL
This has been deprecated. It remains only for backward compatibility. The Group Scheduling Engine (GSE) module now takes care of all email notifications.
A boolean indicating whether or not to notify attendees of a change to an event.
A boolean indicating whether or not to expand a recurring event.
A boolean. For parameters with semicolon-separated values:
1 = update (replace the old values with the new passed-in values)
Event recurrence rules. A semicolon-separated list of recurrence-rule strings.
Each rule value must be enclosed in quotes. See Recurrence Handling.
The event status code. One of the following values:
0 CONFIRMED
1 CANCELLED
2 TENTATIVE
3 NEEDS_ACTION
4 COMPLETED
5 IN_PROCESS
6 DRAFT
7 FINAL
Event summary. A string of any length.
The time zone used to translate dates to Zulu time for storage.
If this parameter is missing, the system assumes the dates are already in Zulu time.
Unique identifier of the event to be stored.
Description.
Use this command to creates or modify events with the specified attributes and stores them in the specified calendar in the database.
The command creates and stores recurrences as specified by the rrules,exrules, rid, mod, and rchange parameters. See Recurrence Handling.
When the notify value is 1, it sends an IMIP PUBLISH message to all attendees of the event.
Use the language parameter to specify the language of the event. See Choosing a Different Language or Character Set for a list of possible language codes.
The server does not support attachments. The attachments parameter exists to support iCalendar interoperability only, and is not functional.
Returns
If the fmt-out parameter is set to text/calendar or text/xml, the command returns only the error value in an HTML comment; for example:
If the fmt-out parameter is set to, or defaults to, text/js, the command returns the JavaScript from a fetchcomponents_by_range.wcap command on all data.
To have the command return the stored todo data, specify the fetch parameter (fetch=1). In addition, use the tzidout parameter to specify the time zone the returned data should be translated to. If the tzidout parameter is missing, the data will be returned in Zulu time.
Error Codes
This command cannot modify a linked event. The command will fail and return CANNOT_MODIFY_LINKED_EVENTS(31) in the errno array.
The command fails, and returns the error STORE_FAILED_DOUBLE_BOOKED(40), when it tries to store an event in a time slot that is already scheduled (double booking).
Required Parameters
This command creates new events and modifies existing events. There is a different set of parameter requirements for both cases:
To create new events requires only two parameters:
Every other parameter is optional. The server generates the uid.
To modify existing events requires three parameters:
All other parameters are optional. If a parameter is not specified, the event will retain the previous value of the property.
Duration
Specify the duration in ISO 8601 format. For example:
P1Y2M3DT1H30M10S represents a duration of 1 year, 2 months, 3 days, 1 hour, 30 minutes, 10 seconds
PT1H30M represents a duration of 1 hour, 30 minutes Notice that the T in the string separates the date information (year, month, day) from the time information (hour, minute, second).
Tip The ending date and time (dtend) overrides duration. If you specify both duration and dtend, the command ignores duration.
Example
For example, this URL would call storeevents.wcap and would result in storing an event in the calendar john,
http://webcalendarserver/storeevents.wcap?id=3423423asdfasf
&calid=john&dtstart=20020101T103000&dtend=20020101T113000&uid=001
&summary=new%20year%20event
The above example results in the following entry in an iCalendar database:
BEGIN:VEVENT
DTSTART:20020101T183000Z
DTEND:20020101T193000Z
UID:001
SUMMARY:new year event
END:VEVENT
Group Scheduling - Attendee Parameter
The two most important parameters for creating a group-scheduled event are attendee and method. The attendee parameter is a semicolon separated list of attendee entries. The attendee entry is explained in the section below.
Each attendee entry may contain several parameters, such as invitation participation status, whether attendance is required or not, etc. All such parameters are encapsulated in a syntax very similar to the ATTENDEE property defined in the iCalendar Specification (RFC 2445). Reading the entire document is recommended in order to have the necessary background information to understand the WCAP attendee syntax. There are some differences, such as, WCAP uses a different delimiter, "^", to set apart these parameters. (WCAP uses the standard iCalendar semicolon delimiter for separating attendees.)
For example, where iCalendar would have the following:
PARSTAT=ACCEPTED;RSVP=TRUE:mailto:abc@xyz.com
WCAP would format it this way: Examples of WCAP Attendee Entries
PARSTAT=ACCEPTED^RSVP^=TRUE^mailto:abc@xyz.com
If attendee A (attA) accepts an invitation, the WCAP command would contain:
PARTSTAT=ACCEPTED^RSVP=TRUE^attA
If attendee B (attB) declines an invitation, the WCAP command would contain:
PARTSTAT=DECLINED^RSVP=TRUE^attB
If the email attendee jdoe@xyz.com has not yet decided to attend and is not required to respond, the WCAP command would contain:
PARTSTAT=NEEDS-ACTION^RSVP=FALSE:mailto:jdoe@xyz.com
Table 7-38 lists the parameters in the iCalendar ATTENDEE property understood by WCAP. Most of the parameters are optional. Not all are fully supported by Calendar Server, although the information will be stored. For group scheduling, only the PARTSTAT and RSVP parameters are relevant.
Group Scheduling - Method Parameter
The method parameter describes the type of message used: invitation, response, cancellation.
In an invitation, three types of messages may occur:
An organizer invites attendees.
When an organizer creates a meeting, there are two ways to invite people:
Send a PUBLISH message, creating or modifying a meeting, and notify the attendees. The method parameter is set to "1".
Send a REQUEST message, creating or modifying a meeting, and requesting a response to the invitation from attendees. The method parameter is set to "2".
Only the organizer of the meeting can send a PUBLISH or REQUEST message.
Attendees respond to invitation.
An attendee sends a REPLY message, either accepting or declining the invitation. (The method parameter is set to "4".)
Organizer cancels the meeting.
The following set of examples demonstrates the WCAP commands for an organizer "org" to invite attendees "attA" and "attB" to a meeting. Attendee "attA" accepts the invitation; attendee "attB" declines it. The uid for the meeting is "event_u1". The event will be created on both attendees' calendars. Each will respond to the event on their own calendar. The response will be sent back to the organizer's calendar by the Sun ONE Calendar Server Group Scheduling Engine.
storeevents.wcap?id=${SESSIONID of org}&calid=org&dtstart=
20020201T200200Z&dtend=20020201T210000Z&summary=invite_attA_attB
&method=2&attendees=PARTSTAT=ACCEPTED^RSVP=TRUE^org;PARTSTAT=
NEEDS-ACTION^RSVP=TRUE^attA;PARTSTAT=NEEDS-ACTION^RSVP=
TRUE^attB&fmt-out=text/xml
storeevents.wcap?id=${SESSIONID ofattA}&calid=attA&uid=event_u1
&method=4&attendees=PARTSTAT=ACCEPTED^RSVP=TRUE^attA
&fmt-out=text/xml
storeevents.wcap?id=${SESSIONID ofattB}&calid=attB&uid=event_u1
&method=4&attendees=PARTSTAT=DECLINED^RSVP=TRUE^attA
&comments=I_cannot_make_it_Sorry&fmt-out=text/xml
Purpose
Add one or more todos to a calendar.
Parameters
Table 7-39 lists storetodos parameters:
Table 7-39    storetodos Parameters
Parameter
Type
Purpose
Required
Default
The time at which to send an alarm notification of the todo.
A runtime parameter (not stored in the database) that specifies which application is making the request. ENS uses this parameter to determine which X-Tokens to return. Does not affect WCAP command output.
For more information on the ENS X-Tokens, see the SunONE Messaging and Collaboration Event Notification Service Manual.
This parameter exists to support iCalendar interoperability only. The strings are URLs.
A boolean indicating whether or not to print out a brief version of the JavaScript output.
Applies only when output type (fmt-out) is JavaScript (text/js).
Completion date of the todo. A value of 0 means the todo is not yet completed.
For compressed=0, returns less data. Specifically, it does not return the following parameters:
rrules
rdate
exrule
exdate
For compressed=1, all recurrence data is returned.
This parameter can only be used when fmt-out is text/xml, or text/calendar
Purpose of the todo. A string of any length.
Todo exclusionary recurrence rules. A semicolon-separated list of recurrence-rule strings.
Each rule value must be enclosed in quotes. See Recurrence Handling.
A boolean indicating whether or not to fetch and return newly stored todos.
1 = Fetch and return newly stored todos.
0 = Do not fetch todos.
Semicolon-separated string of two float numbers representing the todo's geographical location (latitude and longitude).
ITIP method for group scheduling.
1 = PUBLISH
2 = REQUEST
4 = REPLY
8 = CANCEL
16 = MOVE
32 = COUNTER
Specifies the recurrences to store/modify.
1 = THISINSTANCE
2 = THISANDFUTURE
3 = THISANDPRIOR
4 = THISANDALL
This parameter has been deprecated. It remains to provide backward compatibility. The Group Scheduling Engine (GSE) handles sending of email notifications.
A boolean indicating whether or not to notify attendees of a changed todo.
1 = Notify attendees of the change.
0 = Do not notify attendees.
The email address contact for the todo. (Usually the organizer's email.)
A boolean indicating whether or not to expand a recurring todo.
A boolean. For parameters with semicolon-separated values:
1 = update (replace the old values with the new passed-in values)
Todo recurrence rules. A semicolon-
separated list of recurrence-rule strings.
Each rule value must be enclosed in quotes. See Recurrence Handling.
A code for the status of the todo. One of the following values:
0 CONFIRMED
1 CANCELLED
2 TENTATIVE
3 NEEDS_ACTION
4 COMPLETED
5 IN_PROCESS
6 DRAFT
7 FINAL
Todo summary. A string of any length.
The timezone used to convert time parameter values to Zulu time for storage.
If this parameter is not present, the system assumes all time strings are already in Zulu time.
Time zone returned data should be translated to. Only valid when the fetch parameter is set to 1 (fetch=1).
Unique identifier of the todo to be stored.
Description.
Use this command to create and modify todos with the specified attributes and stores them in the specified calendar in the database.
The command creates and stores recurrences as specified by rrules, exrules, rid, mod, and rchange parameters. See Recurrence Handling.
When the notify value is 1, it sends an IMIP PUBLISH message to the email attendees of the todo.
The server does not support attachments. The attachments parameter exists to support iCalendar interoperability only, and is not functional.
method Parameter
For group scheduling, specify one of the following ITIP methods:
1
PUBLISH
Used only by the organizer.
2
REQUEST
Used only by the organizer.
4
REPLY
Used only by attendees.
8
CANCEL
Used only by the organizer.
16
MOVE
N/A
32
COUNTER
Used only by attendees.
Returns
If the fmt-out parameter is set to text/calendar or text/xml, the command returns only the error value in an HTML comment; for example:
To have the command return the stored todo data, specify the fetch parameter (fetch=1). In addition, use the tzidout parameter to specify the time zone the returned data should be translated to. If the tzidout parameter is missing, the data will be returned in Zulu time.
For backward compatibility, if the fmt-out parameter is set to, or defaults to, text/js, the command returns the JavaScript from a fetchcomponents_by_range.wcap command on all data.
Error Codes
This command cannot modify a linked todo. The command will fail and return an error of CANNOT_MODIFY_LINKED_TODOS(32) in errno.
The command fails, and returns the error STORE_FAILED_DOUBLE_BOOKED(40), when it tries to store a todo in a time slot that is already scheduled (double booking).
Required Parameters
This command creates new todos and modifies existing todos. There is a different set of parameter requirements for both cases:
To create new todos requires only two parameters:
Every other parameter is optional. The server generates the uid.
To modify existing todos requires three parameters:
All other parameters are optional. If a parameter is not specified, the todo will retain the previous value of the property.
Duration
The due date and time (due) overrides duration. If you specify both duration and due, the command ignores duration.
Specify the duration in the ISO 8601 format. For example:
P1Y2M3DT1H30M10S represents a duration of 1 year, 2 months, 3 days, 1 hour, 30 minutes, 10 seconds
PT1H30M represents a duration of 1 hour, 30 minutes Notice that the T in the string separates the date information (year, month, day) from the time information (hour, minute, second).
Purpose
Uploads a file to the server. Used in conjunction with write_file for file import.
Parameters
Table 7-40 lists the upload_file parameter:
Table 7-40    upload_file Parameters
Parameter
Type
Purpose
Required
Default
Description.
This command has been deprecated in favor of import. This command, used in conjunction with write_file (also deprecated), handles file importing. It only works through a POST command since a file is attached with it.
File import is handled in the following way through the UI:
Upload the user's files from the user's computer to the server using the upload_file command. The upload_file command must be a POST.
Take the uploaded file(s) and write them to the database using the write_file command. The reason for this separation is that the UI cannot combine both parameters' values and file attachment through the JavaScript UI. Also, this separation allows for uploading multiple files to the server before actually writing them to the database.
upload_file Example
The data sent to upload_file should look exactly like import.wcap data. The only files that can be supported are iCalendar and XML files. Although the user can upload any file, only iCalendar and XML files can be successfully added to the database.
The returned JavaScript from upload.wcap looks like the following:
Completed sending of import HTTP/1.1 200
Date: Tue, 05 Oct 2002 23:37:51 GMT
Content-type: text/html; charset=iso-8859-1
Content-length: 301
Last-modified: Tue, 05 Oct 2002 23:37:51 GMT
Pragma: no-cache
Expires: 0
Cache-Control: no-cache
Connection: Keep-Alive
<html><head><script>
function color(s) { if (s) document.bgColor=s
}
var filename='s://ns//server//msg//calendar//core//parser//test//ical1. ics'
var uniquefilename='cf8bfa37b347000001000000ef000000'
var size=640
var errno=0
var errstr=''
</script></head>
<body onLoad=parent.uploadCB()>
</body></html>
write_file Example
Notice the bold line containing the uniquefilename JavaScript variable in the previous example. This variable should be used as the input to the uniquefilename parameter in the write_file command.
After the UI has uploaded the appropriate files using upload_file, the UI should call write_file to actually write the file to the database.
For example, use this URL to write the previous example's upload call to the calendar jdoe. Notice that the uniquefilename parameter matches the uniquefilename JavaScript variable returned in upload_file.wcap.
http://webcalendarserver/write_file.wcap?id=abc&calid=jdoe&dtstart= 0&dtend=0&content-in=text/calendar&uniquefilename=cf8bfa37b34700000 1000000ef000000
To write two files to the server, put semicolons between the unique filenames. The files must be of the same content-type.
http://webcalendarserver/write_file.wcap?id=abc&calid=jdoe&dtstart= 0&dtend=0&content-in=text/calendar&uniquefilename=cf8bfa37b34700000 1000000ef000000;dg9cgb48c458000001000000ab000000
Purpose
This command is used to verify if the event specified with the uid and rid pair exists in the database.
Parameters
Table 7-43 lists verifyevents_by_ids parameters:
Table 7-41    verifyevents_by_ids Parameters
Parameter
Type
Purpose
Required
Default
* The id must be specified with the command unless the calendar to fetch from is public calendar.
Description.
This command tries to fetch events matching the passed in uid-rid pairs.
Returns
If the events are found, the data is returned in the format specified by the fmt-out parameter. If no format was specified, the output defaults to text/calendar.
If the events are not found, if the rids were not zero (0), then the uids and rids are returned.
If the events are not found and the rids were zero (0), then only the uids are returned.
Example
Example 1 is in text/calendar format, and example 2 is in text/xml output.
verifyevents_by_ids.wcap?id=$n3o2m05sx9v6t98t8u2p&calid=jdoe&uid=3b d9e72f000027cf0000000600002113;3bd9e717000045030000000100002113;3bd 9e717000045030000000100002113;3bd9cd4700002206000000010000202d&rid= 0;20021027T230000Z;20021026T230000Z;0&fmt-out=text/calendar
BEGIN:VCALENDAR
PRODID:-//SunONE/Calendar Hosting Server//EN
VERSION:5.1.1
BEGIN:VEVENT
UID:3bd9e717000045030000000100002113
RECURRENCE-ID:20021027T230000Z
END:VEVENT
BEGIN:VEVENT
UID:3bd9cd4700002206000000010000202d
END:VEVENT
END:VCALENDAR
verifyevents_by_ids.wcap?id=$n3o2m05sx9v6t98t8u2p&calid=savri&uid=3 bd9e72f000027cf0000000600002113;3bd9e717000045030000000100002113;3b d9e717000045030000000100002113;3bd9cd4700002206000000010000202d&rid =0;20021027T230000Z;20021026T230000Z;0&fmt-out=text/xml
<?xml version="1.0" encoding="UTF-8"?>
<iCalendar>
<iCal version="5.1.1" prodid="-//SunONE/Calendar Hosting Server//EN">
<EVENT>
<UID>3bd9e717000045030000000100002113</UID>
<RECURID>20021027T230000Z</RECURID>
</EVENT>
<EVENT>
<UID>3bd9cd4700002206000000010000202d</UID>
</EVENT>
</iCal>
</iCalendar>
Purpose
This command is used to verify if the todo specified with the uid and rid pair exists in the database.
Parameters
Table 7-42 lists verifytodos_by_ids parameters:
Table 7-42    verifytodos_by_ids Parameters
Parameter
Type
Purpose
Required
Default
* The id must be specified with the command unless the calendar to fetch from is public calendar.
Description.
This command tries to fetch todos matching the passed in uid-rid pairs.
Returns
If the todos are found, the data is returned in the format specified by the fmt-out parameter. If no format was specified, the output defaults to text/calendar.
If the todos are not found, if the rids were not zero (0), then the uids and rids are returned.
If the todos are not found and the rids were zero (0), then only the uids are returned.
Example
verifytodos_by_ids.wcap?id=bo35r2pr3e5po35r&calid=jdoe&uid=3bde188f 0000472d0000000b00000399&rid=20021029T200200Z&fmt-out=text/xml
<?xml version="1.0" encoding="UTF-8"?>
<iCalendar>
<iCal version="5.1.1" prodid="-//SunONE/Calendar Hosting Server//EN">
<TODO>
<UID>3bde188f0000472d0000000b00000399</UID>
<RECURID>20021029T200200Z</RECURID>
</TODO>
</iCal>
</iCalendar>
Purpose
To get the current WCAP version.
Parameters
Table 7-43 lists the version parameter:
Table 7-43    version Parameters
Parameter
Type
Purpose
Required
Default
Description.
This command gets the current WCAP version. (Note: this is different from the server version as well as the HTTP version.)
Returns
The commands supports output types of iCalendar, XML, and JavaScript. In iCal and XML, the variable X-NSCP-WCAPVERSION contains the WCAP version number. In JavaScript, the variable wcapversion returns the version number.
Example
The following examples are for each of output data types.
JavaScript: (URL:/version.wcap)
<html><head><script>
function color(s) { if (s) document.bgColor=s
}
var id='0'
var userid=''
var calid=''
var errno=new Array()
var wcapversion=1.0.0
parent.ceCB(window.name)
</script></head></html>
iCalendar: (URL: /version.wcap?fmt-out=text/calendar)
BEGIN:VCALENDAR
VERSION:5.1.1
PRODID:-//SunONE/Calendar Hosting Server//EN
X-NSCP-WCAPVERSION:WCAP
END:VCALENDAR
XML: (URL: /version.wcap?fmt-out=text/xml)
<?xml version="1.0" encoding="UTF-8">
<iCalendar>
<iCal>
<X-NSCP-WCAPVERSION>1.0.0</X-NSCP-WCAPVERSION>
</iCal>
</iCalendar>
Purpose
Writes a file to the database.
Parameters
Table 7-44 lists write_file parameters:
Description.
This command has been deprecated in favor of the export command.
The write_file command, used in conjunction with the upload_file command (also deprecated, in favor of the import command), handles importing files. The parameters correspond exactly to those of the import command. See upload_file for an example and a detailed description of the file import process.
Previous Contents Index Next
Copyright © 2002 Sun Microsystems, Inc. All rights reserved.
Last Updated August 29, 2002