This command supports a number of subcommands which are used to process the calendaring/scheduling support in Citadel. Here are the subcommands which may be issued:
Test server for calendaring support. Always returns OK unless the server does not have the calendar module enabled.
Respond to a meeting request. 'msgnum' and 'partnum' refer to a MIME-encoded meeting invitation in the current room. 'action' must be set to either “accept” or “decline” to determine the action to take. This subcommand will return either OK or ERROR.
Determine whether an incoming VEVENT will fit in the user's calendar by checking it against the existing VEVENTs. 'msgnum' and 'partnum' refer to a MIME-encoded meeting invitation in the current room (usually the inbox). This command may return ERROR if something went wrong, but usually it will return LISTING_FOLLOWS followed by a list of zero or more conflicting events. A zero-length list means that there were no conflicts.
Handle an incoming “reply” (or RSVP) to a meeting request you sent out. 'msgnum' and 'partnum' refer to a MIME-encoded reply in the current room. 'action' must be set to either “update” or “ignore” to determine the action to take. If the action is “update” then the server will hunt for the meeting in the user's Calendar> room, and update the status for this attendee. Either way, the reply message is deleted from the current room. This subcommand will return either OK or ERROR.
Output the free/busy times for the requested user. If the user specified has a calendar available, this command will return LISTING_FOLLOWS and a compound VCALENDAR object. That object, in turn, will contain VEVENT objects that have been stripped of all properties except for the bare minimum needed to learn free/busy times (such as DTSTART, DTEND, and TRANSP). If there is no such user, or no calendar available, the usual ERROR codes will be returned.
Readers who are paying attention will notice that there is no subcommand to send out meeting invitations. This is because that task can be handled automatically by the Citadel server. Issue this command with <bool> set to 1 to enable Server Generated Invitations. In this mode, when an event is saved to the user's Calendar> room and it contains attendees, Citadel will automatically turn the event into calendar REQUEST messages and mail them out to all listed attendees. If for some reason the client needs to disable Server Generated Invitations, the command may be sent again with <bool> = 0.
Output the contents of the entire calendar (assuming we are in a calendar room) as one big data stream. All of the events (or tasks, etc.) in the room are combined into a single VCALENDAR object, which is then serialized and transmitted to the client. This is suitable for subscribing to a calendar in third-party software. This command will output LISTING_FOLLOWS followed by the calendar data stream, or ERROR if the requested operation is not permitted.
Delete the entire contents of a calendar room and replace it with the calendar supplied by a client-input data stream. This is suitable for publishing a calendar from third-party software. This command will output SEND_LISTING and then expect the client to transmit the calendar data stream. Alternatively, it will return ERROR if the requested operation is not permitted.