csa/csa.h(5)

NAME
csa/csa.h - calendar and appointment services definitions

SYNOPSIS
#include <csa/csa.h>

DESCRIPTION

The <csa/csa.h> header defines the following data types through typedef:

    typedef short int               CSA_sint16;
    typedef long int                CSA_sint32;
    typedef unsigned char           CSA_uint8;
    typedef unsigned short int      CSA_uint16;
    typedef unsigned long int       CSA_uint32;
    typedef void *                  CSA_buffer;
    typedef CSA_uint32              CSA_entry_handle;
    typedef CSA_uint32              CSA_session_handle;
    typedef char *                  CSA_string;

    typedef CSA_string      CSA_attribute_reference;
    typedef CSA_uint32      CSA_boolean;
    typedef CSA_string      CSA_date_time;
    typedef CSA_string      CSA_date_time_range;
    typedef CSA_sint32      CSA_enum;
    typedef CSA_uint32      CSA_flags;
    typedef CSA_uint32      CSA_return_code;
    typedef CSA_string      CSA_service_reference;
    typedef CSA_string      CSA_time_duration;

    #define CSA_FALSE               ((CSA_boolean)0)
    #define CSA_TRUE                ((CSA_boolean)1)

    /* EXTENSION FLAGS */
    #define CSA_EXT_REQUIRED        ((CSA_flags)0x10000)
    #define CSA_EXT_OUTPUT          ((CSA_flags)0x20000)
    #define CSA_EXT_LAST_ELEMENT    ((CSA_flags)0x40000)

    /* CALENDAR USER TYPE */
    #define CSA_USER_TYPE_INDIVIDUAL        ((CSA_enum)0)
    #define CSA_USER_TYPE_GROUP             ((CSA_enum)1)
    #define CSA_USER_TYPE_RESOURCE          ((CSA_enum)2)

    /* CLASSIFICATION
    #define CSA_CLASS_PUBLIC                ((CSA_enum)0)
    #define CSA_CLASS_PRIVATE               ((CSA_enum)1)
    #define CSA_CLASS_CONFIDENTIAL          ((CSA_enum)2)

    /* ACCESS RIGHTS FLAGS */
    #define CSA_FREE_TIME_SEARCH                    ((CSA_flags)0x1)
    #define CSA_VIEW_PUBLIC_ENTRIES                 ((CSA_flags)0x2)
    #define CSA_VIEW_CONFIDENTIAL_ENTRIES           ((CSA_flags)0x4)
    #define CSA_VIEW_PRIVATE_ENTRIES                ((CSA_flags)0x8)
    #define CSA_INSERT_PUBLIC_ENTRIES               ((CSA_flags)0x10)
    #define CSA_INSERT_CONFIDENTIAL_ENTRIES         ((CSA_flags)0x20)
    #define CSA_INSERT_PRIVATE_ENTRIES              ((CSA_flags)0x40)
    #define CSA_CHANGE_PUBLIC_ENTRIES               ((CSA_flags)0x80)
    #define CSA_CHANGE_CONFIDENTIAL_ENTRIES         ((CSA_flags)0x100)
    #define CSA_CHANGE_PRIVATE_ENTRIES              ((CSA_flags)0x200)
    #define CSA_VIEW_CALENDAR_ATTRIBUTES            ((CSA_flags)0x400)
    #define CSA_INSERT_CALENDAR_ATTRIBUTES          ((CSA_flags)0x800)
    #define CSA_CHANGE_CALENDAR_ATTRIBUTES          ((CSA_flags)0x1000)
    #define CSA_ORGANIZER_RIGHTS                    ((CSA_flags)0x2000)
    #define CSA_SPONSOR_RIGHTS                      ((CSA_flags)0x4000)
    #define CSA_OWNER_RIGHTS                        ((CSA_flags)0x8000)

    /* ATTENDEE PRIORITIES */
    #define CSA_FOR_YOUR_INFORMATION        ((CSA_enum)0)
    #define CSA_ATTENDANCE_REQUESTED        ((CSA_enum)1)
    #define CSA_ATTENDANCE_REQUIRED         ((CSA_enum)2)
    #define CSA_IMMEDIATE_RESPONSE          ((CSA_enum)3)

    /* ATTENDEE STATUS */
    #define CSA_STATUS_ACCEPTED             ((CSA_enum)0)
    #define CSA_STATUS_NEEDS_ACTION         ((CSA_enum)1)
    #define CSA_STATUS_SENT                 ((CSA_enum)2)
    #define CSA_STATUS_TENTATIVE            ((CSA_enum)3)
    #define CSA_STATUS_CONFIRMED            ((CSA_enum)4)
    #define CSA_STATUS_REJECTED             ((CSA_enum)5)
    #define CSA_STATUS_COMPLETED            ((CSA_enum)6)
    #define CSA_STATUS_DELEGATED            ((CSA_enum)7)

    /* ATTRIBUTE VALUE TYPE */
    #define CSA_VALUE_BOOLEAN                       ((CSA_enum) 0)
    #define CSA_VALUE_ENUMERATED                    ((CSA_enum) 1)
    #define CSA_VALUE_FLAGS                         ((CSA_enum) 2)
    #define CSA_VALUE_SINT32                        ((CSA_enum) 3)
    #define CSA_VALUE_UINT32                        ((CSA_enum) 4)
    #define CSA_VALUE_STRING                        ((CSA_enum) 5)
    #define CSA_VALUE_CALENDAR_USER                 ((CSA_enum) 6)
    #define CSA_VALUE_DATE_TIME                     ((CSA_enum) 7)
    #define CSA_VALUE_DATE_TIME_RANGE               ((CSA_enum) 8)
    #define CSA_VALUE_TIME_DURATION                 ((CSA_enum) 9)
    #define CSA_VALUE_ACCESS_LIST                   ((CSA_enum) 10)
    #define CSA_VALUE_ATTENDEE_LIST                 ((CSA_enum) 11)
    #define CSA_VALUE_DATE_TIME_LIST                ((CSA_enum) 12)
    #define CSA_VALUE_REMINDER                      ((CSA_enum) 13)
    #define CSA_VALUE_OPAQUE_DATA                   ((CSA_enum) 14)

    /* CROSS FUNCTION FLAGS */

    /* SCOPE */
    #define CSA_SCOPE_ALL                           ((CSA_enum)0)
    #define CSA_SCOPE_ONE                           ((CSA_enum)1)
    #define CSA_SCOPE_FORWARD                       ((CSA_enum)2)

    /* OPERATORS */
    #define CSA_MATCH_ANY                           ((CSA_enum)0)
    #define CSA_MATCH_EQUAL_TO                      ((CSA_enum)1)
    #define CSA_MATCH_NOT_EQUAL_TO                  ((CSA_enum)2)
    #define CSA_MATCH_GREATER_THAN                  ((CSA_enum)3)
    #define CSA_MATCH_LESS_THAN                     ((CSA_enum)4)
    #define CSA_MATCH_GREATER_THAN_OR_EQUAL_TO      ((CSA_enum)5)
    #define CSA_MATCH_LESS_THAN_OR_EQUAL_TO         ((CSA_enum)6)
    #define CSA_MATCH_CONTAIN                       ((CSA_enum)7)

    #define CSA_LOOKUP_RESOLVE_PREFIX_SEARCH        ((CSA_flags)0x1)
    #define CSA_LOOKUP_RESOLVE_IDENTITY             ((CSA_flags)0x2)

    #define CSA_CONFIG_CHARACTER_SET                ((CSA_enum)0)
    #define CSA_CONFIG_LINE_TERM                    ((CSA_enum)1)
    #define CSA_CONFIG_DEFAULT_SERVICE              ((CSA_enum)2)
    #define CSA_CONFIG_DEFAULT_USER                 ((CSA_enum)3)
    #define CSA_CONFIG_REQ_PASSWORD                 ((CSA_enum)4)
    #define CSA_CONFIG_REQ_SERVICE                  ((CSA_enum)5)
    #define CSA_CONFIG_REQ_USER                     ((CSA_enum)6)
    #define CSA_CONFIG_UI_AVALI                     ((CSA_enum)7)
    #define CSA_CONFIG_VER_IMPLEM                   ((CSA_enum)8)
    #define CSA_CONFIG_VER_SPEC                     ((CSA_enum)9)

    /* CHARACTER SET IDENTIFIERS */
    #define CSA_CHARSET_437         "-//XAPIA//CHARSET IBM 437//EN"
    #define CSA_CHARSET_850         "-//XAPIA//CHARSET IBM 850//EN"
    #define CSA_CHARSET_1252        "-//XAPIA//CHARSET Microsoft 1252//EN"
    #define CSA_CHARSET_ISTRING     "-//XAPIA//CHARSET Apple ISTRING//EN"
    #define CSA_CHARSET_UNICODE     "-//XAPIA//CHARSET UNICODE//EN"
    #define CSA_CHARSET_T61         "-//XAPIA//CHARSET TSS T61//EN"
    #define CSA_CHARSET_IA5         "-//XAPIA//CHARSET TSS IA5//EN"
    #define CSA_CHARSET_ISO_10646   "-//XAPIA//CHARSET ISO 10646//EN"
    #define CSA_CHARSET_ISO_646     "-//XAPIA//CHARSET ISO 646//EN"
    #define CSA_CHARSET_ISO_8859_1  "-//XAPIA//CHARSET ISO 8859-1//EN"

    #define CSA_CB_CALENDAR_LOGON                   ((CSA_flags)0x0
    #define CSA_CB_CALENDAR_DELETED                 ((CSA_flags)0x1)
    #define CSA_CB_CALENDAR_ATTRIBUTE_UPDATED       ((CSA_flags)0x2)
    #define CSA_CB_ENTRY_ADDED                      ((CSA_flags)0x4)
    #define CSA_CB_ENTRY_DELETED                    ((CSA_flags)0x8)
    #define CSA_CB_ENTRY_UPDATED                    ((CSA_flags)0x10)

    /* Entry Types */
    #define CSA_TYPE_EVENT          ((CSA_enum)0)
    #define CSA_TYPE_TODO           ((CSA_enum)1)
    #define CSA_TYPE_MEMO           ((CSA_enum)2)

    /* RETURN ERROR FLAGS */
    #define CSA_ERROR_RSV_MASK      ((CSA_return_code)0x0000FFFF)
    #define CSA_ERROR_IMPL_MASK     ((CSA_return_code)0xFFFF0000)

    /* RETURN CODES */
    #define CSA_SUCCESS                             ((CSA_return_code)0)

    #define CSA_E_AMBIGUOUS_USER                    ((CSA_return_code)1)
    #define CSA_E_CALENDAR_EXISTS                   ((CSA_return_code)2)
    #define CSA_E_CALENDAR_NOT_EXIST                ((CSA_return_code)3)
    #define CSA_E_CALLBACK_NOT_REGISTERED           ((CSA_return_code)4)
    #define CSA_E_DISK_FULL                         ((CSA_return_code)5)
    #define CSA_E_FAILURE                           ((CSA_return_code)6)
    #define CSA_E_FILE_EXIST                        ((CSA_return_code)7)
    #define CSA_E_FILE_NOT_EXIST                    ((CSA_return_code)8)
    #define CSA_E_INSUFFICIENT_MEMORY               ((CSA_return_code)9)
    #define CSA_E_INVALID_ATTRIBUTE                 ((CSA_return_code)10)
    #define CSA_E_INVALID_ATTRIBUTE_VALUE           ((CSA_return_code)11)
    #define CSA_E_INVALID_CALENDAR_SERVICE          ((CSA_return_code)12)
    #define CSA_E_INVALID_CONFIGURATION             ((CSA_return_code)13)
    #define CSA_E_INVALID_DATA_EXT                  ((CSA_return_code)14)
    #define CSA_E_INVALID_DATE_TIME                 ((CSA_return_code)15)
    #define CSA_E_INVALID_ENTRY_HANDLE              ((CSA_return_code)16)
    #define CSA_E_INVALID_ENUM                      ((CSA_return_code)17)
    #define CSA_E_INVALID_FILE_NAME                 ((CSA_return_code)18)
    #define CSA_E_INVALID_FLAG                      ((CSA_return_code)19)
    #define CSA_E_INVALID_FUNCTION_EXT              ((CSA_return_code)20)
    #define CSA_E_INVALID_MEMORY                    ((CSA_return_code)21)
    #define CSA_E_INVALID_PARAMETER                 ((CSA_return_code)22)
    #define CSA_E_INVALID_PASSWORD                  ((CSA_return_code)23)
    #define CSA_E_INVALID_RETURN_CODE               ((CSA_return_code)24)
    #define CSA_E_INVALID_SESSION_HANDLE            ((CSA_return_code)25)
    #define CSA_E_INVALID_USER                      ((CSA_return_code)26)
    #define CSA_E_LOCALE_MISMATCH                   ((CSA_return_code)27)
    #define CSA_E_LOGON_FAILURE                     ((CSA_return_code)28)
    #define CSA_E_NO_AUTHORITY                      ((CSA_return_code)29)
    #define CSA_E_NOT_SUPPORTED                     ((CSA_return_code)30)
    #define CSA_E_PASSWORD_REQUIRED                 ((CSA_return_code)31)
    #define CSA_E_READONLY                          ((CSA_return_code)32)
    #define CSA_E_SERVICE_UNAVAILABLE               ((CSA_return_code)33)
    #define CSA_E_TEXT_TOO_LARGE                    ((CSA_return_code)34)
    #define CSA_E_TOO_MANY_USERS                    ((CSA_return_code)35)
    #define CSA_E_UNABLE_TO_OPEN_FILE               ((CSA_return_code)36)
    #define CSA_E_UNSUPPORTED_ATTRIBUTE             ((CSA_return_code)37)
    #define CSA_E_UNSUPPORTED_CHARACTER_SET         ((CSA_return_code)38)
    #define CSA_E_UNSUPPORTED_DATA_EXT              ((CSA_return_code)39)
    #define CSA_E_UNSUPPORTED_FLAG                  ((CSA_return_code)40)
    #define CSA_E_UNSUPPORTED_FUNCTION_EXT          ((CSA_return_code)41)
    #define CSA_E_UNSUPPORTED_PARAMETER             ((CSA_return_code)42)
    #define CSA_E_UNSUPPORTED_VERSION               ((CSA_return_code)43)
    #define CSA_E_USER_NOT_FOUND                    ((CSA_return_code)44)

    /* CALENDAR ATTRIBUTES */

    /* CALENDAR ATTRIBUTE NAMES */
    #define CSA_CAL_ATTR_ACCESS_LIST                              \
            "-//XAPIA/CSA/CALATTR//NONSGML Access List//EN"
    #define CSA_CAL_ATTR_CALENDAR_NAME                            \
            "-//XAPIA/CSA/CALATTR//NONSGML Calendar Name//EN"
    #define CSA_CAL_ATTR_CALENDAR_OWNER                           \
            "-//XAPIA/CSA/CALATTR//NONSGML Calendar Owner//EN"
    #define CSA_CAL_ATTR_CALENDAR_SIZE                            \
            "-//XAPIA/CSA/CALATTR//NONSGML Calendar Size//EN"
    #define CSA_CAL_ATTR_CODE_PAGE                                \
            "-//XAPIA/CSA/CALATTR//NONSGML Character Set//EN"
    #define CSA_CAL_ATTR_COUNTRY                                  \
            "-//XAPIA/CSA/CALATTR//NONSGML Country//EN"
    #define CSA_CAL_ATTR_DATE_CREATED                             \
            "-//XAPIA/CSA/CALATTR//NONSGML Date Created//EN"
    #define CSA_CAL_ATTR_LANGUAGE                                 \
            "-//XAPIA/CSA/CALATTR//NONSGML Language//EN"
    #define CSA_CAL_ATTR_NUMBER_ENTRIES                           \
            "-//XAPIA/CSA/CALATTR//NONSGML Number Entries//EN"
    #define CSA_CAL_ATTR_PRODUCT_IDENTIFIER                       \
            "-//XAPIA/CSA/CALATTR//NONSGML Product Identifier//EN"
    #define CSA_CAL_ATTR_TIME_ZONE                                \
            "-//XAPIA/CSA/CALATTR//NONSGML Time Zone//EN"
    #define CSA_CAL_ATTR_VERSION                                  \
            "-//XAPIA/CSA/CALATTR//NONSGML Version//EN"
    #define CSA_CAL_ATTR_WORK_SCHEDULE                            \
            "-//XAPIA/CSA/CALATTR//NONSGML Work Schedule//EN"

    /* ENTRY ATTRIBUTES */

    /* ENTRY ATTRIBUTES NAMES */
    #define CSA_ENTRY_ATTR_ATTENDEE_LIST                          \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Attendee List//EN"
    #define CSA_ENTRY_ATTR_AUDIO_REMINDER                         \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Audio Reminder//EN"
    #define CSA_ENTRY_ATTR_CLASSIFICATION                         \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Classification//EN"
    #define CSA_ENTRY_ATTR_DATE_COMPLETED                         \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Date Complated//EN"
    #define CSA_ENTRY_ATTR_DATE_CREATED                           \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Date Created//EN"
    #define CSA_ENTRY_ATTR_DESCRIPTION                            \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Description//EN"
    #define CSA_ENTRY_ATTR_DUE_DATE                               \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Due Date//EN"
    #define CSA_ENTRY_ATTR_END_DATE                               \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML End Date//EN"
    #define CSA_ENTRY_ATTR_EXCEPTION_DATES                        \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Exception Dates//EN"
    #define CSA_ENTRY_ATTR_EXCEPTION_RULE                         \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Exception Rule//EN"
    #define CSA_ENTRY_ATTR_FLASHING_REMINDER                      \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Flashing Reminder//EN"
    #define CSA_ENTRY_ATTR_LAST_UPDATE                            \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Last Update//EN"
    #define CSA_ENTRY_ATTR_MAIL_REMINDER                          \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Mail Reminder//EN"
    #define CSA_ENTRY_ATTR_NUMBER_RECURRENCES                     \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Number Recurrences//EN"
    #define CSA_ENTRY_ATTR_ORGANIZER                              \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Organizer//EN"
    #define CSA_ENTRY_ATTR_POPUP_REMINDER                         \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Popup Reminder//EN"
    #define CSA_ENTRY_ATTR_PRIORITY                               \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Priority//EN"
    #define CSA_ENTRY_ATTR_RECURRENCE_RULE                        \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Recurrence Rule//EN"
    #define CSA_ENTRY_ATTR_RECURREING_DATES                       \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Recurring Dates//EN"
    #define CSA_ENTRY_ATTR_REFERENCE_IDENTIFIER                   \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Reference_identifier//EN"
    #define CSA_ENTRY_ATTR_SEQUENCE_NUMBER                        \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Sequence Number//EN"
    #define CSA_ENTRY_ATTR_SPONSOR                                \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Sponsor//EN"
    #define CSA_ENTRY_ATTR_START_DATE                             \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Start Date//EN"
    #define CSA_ENTRY_ATTR_STATUS                                 \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Status//EN"
    #define CSA_ENTRY_ATTR_SUBTYPE                                \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Subtype//EN"
    #define CSA_ENTRY_ATTR_SUMMARY                                \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Summary//EN"
    #define CSA_ENTRY_ATTR_TIME_TRANSPARENCY                      \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Transparency//EN"
    #define CSA_ENTRY_ATTR_TYPE                                   \
            "-//XAPIA/CSA/ENTRYATTR//NONSGML Type//EN"

    /* COMMON EXTENSIONS DECLARATIONS */

    /* EXTENSION SET ID */

    /* Common Extension Set */
    #define CSA_XS_COM                      ((CSA_uint32) 0)
    /* Bilateral Extension Set */
    #define CSA_XS_BLT                      ((CSA_uint32) 256)

    /* FUNCTION EXTENSIONS */

    /* Query for extension support in implementation */

    #define CSA_X_COM_SUPPORT_EXT           ((CSA_uint32) 1)

    #define CSA_X_COM_SUPPORTED             ((CSA_flags) 1)
    #define CSA_X_COM_NOT_SUPPORTED         ((CSA_flags) 2)
    #define CSA_X_COM_DATA_EXT_SUPPORTED    ((CSA_flags) 4)
    #define CSA_X_COM_FUNC_EXT_SUPPORTED    ((CSA_flags) 8)
    #define CSA_X_COM_SUP_EXCLUDE           ((CSA_flags) 16)

    #define CSA_X_UI_ID_EXT                 ((CSA_uint32)2)
    /* EXTENSION FLAGS */
    #define CSA_X_LOGON_UI_ALLOWED          ((CSA_flags)0x1)
    #define CSA_X_ERROR_UI_ALLOWED          ((CSA_flags)0x2)
    #define CSA_X_LOOKUP_RESOLVE_UI         ((CSA_flags)0x4)
    #define CSA_X_LOOKUP_DETAILS_UI         ((CSA_flags)0x8)
    #define CSA_X_LOOKUP_ADDRESSING_UI      ((CSA_flags)0x10)
    #define CSA_X_ADD_DEFINE_ENTRY_UI       ((CSA_flags)0x20)

    /* EXTENSION RETURN CODES */
    #define CSA_X_E_INVALID_UI_ID           ((CSA_return_code)1025)
    #define CSA_X_E_LOGON_FAILURE           ((CSA_return_code)1026)
    #define CSA_X_E_USER_CANCEL             ((CSA_return_code)1027)

    #define CSA_X_XT_APP_CONTEXT_EXT        ((CSA_uint32)3)

The header declares the following structures:

    typedef struct CSA_TAG_EXTENSION {
    	CSA_uint32 item_code;
    	CSA_uint32 item_data;
    	CSA_buffer item_reference;
    	CSA_flags extension_flags;
    } CSA_extension;

    typedef struct CSA_TAG_CALENDAR_USER {
    	CSA_string user_name;
    	CSA_enum user_type;
    	CSA_string calendar_address;
    	CSA_extension *calendar_user_extensions;
    } CSA_calendar_user;

    typedef struct CSA_TAG_ACCESS_RIGHTS {
    	CSA_calendar_user *user;
    	CSA_flags rights;
    	struct CSA_TAG_ACCESS_RIGHTS *next;
    } CSA_access_rights, *CSA_access_list;

    typedef struct CSA_TAG_ATTENDEE {
    	CSA_calendar_user attendee;
    	CSA_enum priority;
    	CSA_enum status;
    	CSA_boolean rsvp_requested;
    	struct CSA_TAG_ATTENDEE *next;
    } CSA_attendee, *CSA_attendee_list;

    typedef struct CSA_TAG_OPAQUE_DATA {
    	CSA_uint32 size;
    	CSA_uint8 *data;
    } CSA_opaque_data;

    typedef void (*CSA_callback)(
    	CSA_session_handle session,
    	CSA_flags reason,
    	CSA_buffer call_data,
    	CSA_buffer client_data,
    	CSA_extension *callback_extensions
    );

    typedef struct CSA_TAG_LOGON_CB_DATA {
    	CSA_calendar_user *user;
    } CSA_logon_callback_data;

    typedef struct CSA_TAG_CALENDAR_DELETED_CB_DATA {
    	CSA_calendar_user *user;
    } CSA_calendar_deleted_callback_data;

    typedef struct CSA_TAG_CALENDAR_ATTR_UPDATE_CB_DATA {
    	CSA_calendar_user *user;
    	CSA_uint32 number_attributes;
    	CSA_attribute_reference *attribute_names;
    } CSA_calendar_attr_update_callback_data;

    typedef struct CSA_TAG_ADD_ENTRY_CB_DATA {
    	CSA_calendar_user *user;
    	CSA_opaque_data added_entry_id;
    } CSA_add_entry_callback_data;

    typedef struct CSA_TAG_DELETE_ENTRY_CB_DATA {
    	CSA_calendar_user *user;
    	CSA_opaque_data deleted_entry_id;
    	CSA_enum scope;
    	CSA_date_time date_and_time;
    } CSA_delete_entry_callback_data;

    typedef struct CSA_TAG_UPDATE_ENTRY_CB_DATA {
    	CSA_calendar_user *user;
    	CSA_opaque_data old_entry_id;
    	CSA_opaque_data new_entry_id;
    	CSA_enum scope;
    	CSA_date_time date_and_time;
    } CSA_update_entry_callback_data;

    typedef struct CSA_TAG_DATE_TIME_ITEM {
    	CSA_date_time date_time;
            struct CSA_TAG_DATE_TIME_ITEM *next;
    } CSA_date_time_entry, *CSA_date_time_list;

    typedef struct CSA_TAG_FREE_TIME {
    	CSA_uint32 number_free_time_data;
    	CSA_date_time_range *free_time_data;
    } CSA_free_time;

    typedef struct CSA_TAG_REMINDER {
    	CSA_time_duration lead_time;
    	CSA_time_duration snooze_time;
    	CSA_uint32 repeat_count;
    	CSA_opaque_data reminder_data;
    } CSA_reminder;

    typedef struct CSA_TAG_REMINDER_REFERENCE {
    	CSA_entry_handle entry;
    	CSA_date_time run_time;
    	CSA_time_duration snooze_time;
    	CSA_uint32 repeat_count;
    	CSA_attribute_reference attribute_name;
    } CSA_reminder_reference;

    typedef struct CSA_TAG_ATTRIBUTE_ITEM {
    	CSA_enum type;
    	union {
    		CSA_boolean boolean_value;
    		CSA_enum enumerated_value;
    		CSA_flags flags_value;
    		CSA_sint32 sint32_value;
    		CSA_uint32 uint32_value;
    		CSA_calendar_user calendar_user_value;
    		CSA_date_time date_time_value;
    		CSA_date_time_range date_time_range_value;
    		CSA_time_duration time_duration_value;
    		CSA_string string_value;
    		CSA_attendee_list attendee_list_value;
    		CSA_date_time_list date_time_list_value;
    		CSA_access_list access_list_value;
    		CSA_reminder *reminder_value;
    		CSA_opaque_data *opaque_data_value;
    	} item;
    } CSA_attribute_value;

    typedef struct CSA_TAG_ATTRIBUTE {
    	CSA_string name;
    	CSA_attribute_value *value;
    	CSA_extension *attribute_extensions;
    } CSA_attribute;

    typedef struct CSA_TAG_WORK_SCHEDULE {
    	CSA_date_time schedule_begin_time;
    	CSA_boolean cyclic_definition_flag;
    	CSA_date_time cycle_end_time;
    	CSA_date_time_list *work_cycle;
    } CSA_work_schedule;

    typedef struct CSA_TAG_XCOM {
    	CSA_uint32 item_code;
    	CSA_flags flags;
    } CSA_X_COM_support;

The header declares the following as functions:

CSA_return_code csa_add_calendar(CSA_session_handle session,
	CSA_calendar_user *user,
	CSA_uint32 number_attributes,
	CSA_attribute *calendar_attributes,
	CSA_extension *add_calendar_extensions);

CSA_return_code csa_add_entry(CSA_session_handle session,
	CSA_uint32 number_attributes,
	CSA_attribute *entry_attributes,
	CSA_entry_handle *entry,
	CSA_extension *add_entry_extensions);

CSA_return_code csa_call_callbacks(CSA_session_handle session,
	CSA_flags reason,
	CSA_extension *call_callbacks_extensions);

CSA_return_code csa_delete_calendar(CSA_session_handle session,
	CSA_extension *delete_calendar_extensions);

CSA_return_code csa_delete_entry(CSA_session_handle session,
	CSA_entry_handle entry,
	CSA_enum delete_scope,
	CSA_extension *delete_entry_extensions);

CSA_return_code csa_free(CSA_buffer memory);

CSA_return_code csa_free_time_search(CSA_session_handle session,
	CSA_date_time_range date_time_range,
	CSA_time_duration time_duration,
	CSA_uint32 number_users,
	CSA_calendar_user *calendar_users,
	CSA_free_time **free_time,
	CSA_extension *free_time_search_extensions);

CSA_return_code csa_list_calendar_attributes(CSA_session_handle session,
	CSA_uint32 *number_names,
	CSA_attribute_reference **calendar_attributes_names,
	CSA_extension *list_calendar_attributes_extensions);

CSA_return_code csa_list_calendars(CSA_service_reference calendar_service,
	CSA_uint32 *number_names,
	CSA_calendar_user **calendar_names,
	CSA_extension *list_calendars_extensions);

CSA_return_code csa_list_entries(CSA_session_handle session,
	CSA_uint32 number_attributes,
	CSA_attribute *entry_attributes
	CSA_enum *list_operators,
	CSA_uint32 *number_entries,
	CSA_entry_handle **entries,
	CSA_extension *list_entries_extensions);

CSA_return_code csa_list_entry_attributes(CSA_session_handle session,
	CSA_entry_handle entry,
	CSA_uint32 *number_names,
	CSA_attribute_reference **entry_attributes_names
	CSA_extension *list_entry_attributes_extensions);

CSA_return_code csa_list_entry_sequence(CSA_session_handle session,
	CSA_entry_handle entry,
	CSA_date_time_range time_range,
	CSA_uint32 *number_entries,
	CSA_entry_handle **entry_list,
	CSA_extension *list_entry_sequence_extensions);

CSA_return_code csa_logoff(CSA_session_handle session,
	CSA_extension *logoff_extensions);

CSA_return_code csa_logon(CSA_service_reference calendar_service,
	CSA_calendar_user *user,
	CSA_string password,
	CSA_string character_set,
	CSA_string required_csa_version,
	CSA_session_handle *session,
	CSA_extension *logon_extensions);

CSA_return_code csa_look_up(CSA_session_handle session,
	CSA_calendar_user *users,
	CSA_flags look_up_flags,
	CSA_uint32 *number_users,
	CSA_calendar_user **user_list,
	CSA_extension *look_up_extensions);

CSA_return_code csa_query_configuration(CSA_session_handle session,
	CSA_enum item,
	CSA_buffer *reference,
	CSA_extension *query_configuration_extensions);

CSA_return_code csa_read_calendar_attributes(CSA_session_handle session,
	CSA_uint32 number_names,
	CSA_attribute_reference *attribute_names,
	CSA_uint32 *number_attributes,
	CSA_attribute **calendar_attributes
	CSA_extension *read_calendar_attributes_extensions);

CSA_return_code csa_read_entry_attributes(CSA_session_handle session,
	CSA_entry_handle entry,
	CSA_uint32 number_names,
	CSA_attribute_reference *attribute_names,
	CSA_uint32 *number_attributes,
	CSA_attribute **entry_attributes,
	CSA_extension *read_entry_attributes_extensions);

CSA_return_code csa_read_next_reminder(CSA_session_handle session,
	CSA_uint32 number_names,
	CSA_attribute_reference *reminder_names,
	CSA_date_time given_time,
	CSA_uint32 *number_reminders
	CSA_reminder_reference **reminder_references,
	CSA_extension *read_next_reminder_extensions);

CSA_return_code csa_register_callback(CSA_session_handle session,
	CSA_flags reason,
	CSA_callback callback,
	CSA_buffer client_data,
	CSA_extension *register_callback_extensions);

CSA_return_code csa_restore(CSA_session_handle session,
	CSA_string archive_name,
	CSA_uint32 number_attributes,
	CSA_attribute *attributes,
	CSA_enum *operators,
	CSA_extension *restore_extensions);

CSA_return_code csa_save(CSA_session_handle session,
	CSA_string archive_name,
	CSA_uint32 number_attributes
	CSA_attribute *attributes,
	CSA_enum *operators,
	CSA_boolean delete_entry,
	CSA_extension *save_extensions);

CSA_return_code csa_unregister_callback(CSA_session_handle session,
	CSA_flags reason,
	CSA_callback callback,
	CSA_buffer client_data,
	CSA_extension *unregister_callback_extensions);

CSA_return_code csa_update_calendar_attributes(CSA_session_handle session,
	CSA_uint32 number_attributes,
	CSA_attribute *calendar_attributes,
	CSA_extension *update_calendar_attributes_extensions);

CSA_return_code csa_update_entry_attributes(CSA_session_handle session,
	CSA_entry_handle entry,
	CSA_enum update_scope,
	CSA_boolean update_propagation,
	CSA_uint32 number_attributes,
	CSA_attribute *entry_attributes,
	CSA_entry_handle *new_entry,
	CSA_extension *update_entry_attributes_extensions);