{"swagger":"2.0","info":{"title":"OX HTTP API","description":"Documentation of the Open-Xchange HTTP API which is used by the new AJAX GUI.\n","contact":{"name":"Open-Xchange GmbH","email":"info@open-xchange.com","url":"https://www.open-xchange.com/"},"version":"7.10.0"},"host":"example.com","schemes":["https"],"basePath":"/ajax","produces":["application/json"],"consumes":["application/x-www-form-urlencoded"],"tags":[{"name":"Login","description":"The login module is used to obtain a session from the user's login credentials. To understand the details\nof the different login methods, see the article titled [Login variations](http://oxpedia.org/wiki/index.php?title=Login_variations).\n\nBecause of security reasons each login variation will reject requests containing the parameter\n\"password\" within the URL query. \n"},{"name":"Config","description":"The config module is used to retrieve and set user-specific configuration. The configuration is\nstored in a tree. Each node of the tree has a name and a value. The values of leaf nodes are strings\nwhich store the actual configuration data. The values of inner nodes are defined recursively as\nobjects with one field for each child node. The name and the value of each field is the name and the\nvalue of the corresponding child node, respectively.\n"},{"name":"Folders","description":"The folders module is used to access the OX folder structure.\n\nSpecial system folders:\n\n
ID | \nType | \nDescription | \n
---|---|---|
6 | \ncontacts | \nSystem Users | \n
CHAIR
- The chair of the calendar entity.REQ-PARTICIPANT
- A participant whose participation is required.OPT-PARTICIPANT
- A participant whose participation is optional.NON-PARTICIPANT
- A participant who is copied for information purposes only.ASC
for ascending, or DESC
for descending.","required":false},"QueryParamChronosSort":{"name":"sort","in":"query","type":"string","description":"Specifies the field for sorting the results.","required":false},"QueryParamChronosCheckConflicts":{"name":"checkConflicts","in":"query","type":"boolean","default":false,"description":"Whether to check for conflicts or not.","required":false},"QueryParamChronosExpand":{"name":"expand","in":"query","type":"boolean","default":false,"description":"Defines if event series should be extended or not.","required":false},"QueryParamChronosNotification":{"name":"sendInternalNotifications","in":"query","type":"boolean","description":"Specifies that attendees should be notified about the changes when saving a meeting or not.","required":false,"default":false},"ChronosFromTimeRange":{"name":"from","in":"query","type":"string","description":"Lower inclusive limit of the queried range as a utc date-time value as specified in rfc 5545 chapter 3.3.5. E.g. \"20170708T220000Z\". Only events which start on or after this date are returned.","required":true},"ChronosUntilTimeRange":{"name":"until","in":"query","type":"string","description":"Upper exclusive limit of the queried range as a utc date-time value as specified in rfc 5545 chapter 3.3.5. E.g. \"20170708T220000Z\". Only events which end before this date are returned.","required":true},"QueryParamChronosSchedJoulesLanguage":{"in":"query","name":"language","type":"string","description":"The language/locale to translate the results to. If none is provided then the locale of the user's session will be used. \nIf that one is not available then falls back to 'en'.\n","required":false},"QueryParamChronosExtendedEntities":{"in":"query","name":"extendedEntities","type":"boolean","description":"If set to 'true' attendees of internal users will be extended by a 'contact' field, which contains some of the contact fields of this user.\n","required":false,"default":false},"QueryParamChronosUpdateCache":{"name":"updateCache","in":"query","type":"boolean","description":"If set to 'true' the cache will be forced to be updated (e. g. by contacting the underlying external account)\n","required":false,"default":false}},"paths":{"/advertisement?action=get":{"get":{"operationId":"getAdvertisementConfig","tags":["Advertisement"],"summary":"Retrieves the advertisement configuration","parameters":[{"$ref":"#/parameters/gblQueryParamSession"}],"responses":{"200":{"description":"'The configuration as a JSON object or in case of errors the responsible fields in the\nresponse are filled (see [Error handling](#error-handling)).'\n","schema":{"type":"string"}}}}},"/attachment?action=all":{"get":{"operationId":"getAllAttachments","tags":["Attachments"],"summary":"Gets all attachments for an object.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/gblQueryParamAttached"},{"$ref":"#/parameters/gblQueryParamAttachmentsFolder"},{"$ref":"#/parameters/gblQueryParamAttachmentsModule"},{"$ref":"#/parameters/gblQueryParamAttachmentsColumns"},{"in":"query","name":"sort","type":"string","description":"The identifier of a column which determines the sort order of the response. If this parameter is specified, then the parameter order must be also specified.","required":false},{"in":"query","name":"order","type":"string","description":"\"asc\" if the response entities should be sorted in the ascending order, \"desc\" if the response entries should be sorted in the descending order. If this parameter is specified, then the parameter sort must be also specified.","required":false}],"responses":{"200":{"description":"A JSON object containing an array with data for all attachments. Each array element describes one attachment and\nis itself an array. The elements of each array contain the information specified by the corresponding\nidentifiers in the `columns` parameter. In case of errors the responsible fields in the response are\nfilled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/AttachmentsResponse"}}}}},"/attachment?action=list":{"put":{"operationId":"getAttachmentList","tags":["Attachments"],"summary":"Gets a list of attachments.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/gblQueryParamAttached"},{"$ref":"#/parameters/gblQueryParamAttachmentsFolder"},{"$ref":"#/parameters/gblQueryParamAttachmentsModule"},{"$ref":"#/parameters/gblQueryParamAttachmentsColumns"},{"in":"body","name":"body","description":"A JSON array with the identifiers of the requested attachments.","required":true,"schema":{"type":"array","items":{"type":"integer"}}}],"responses":{"200":{"description":"A JSON object containing an array with data for the requested infoitems. Each array element describes one infoitem and\nis itself an array. The elements of each array contain the information specified by the corresponding\nidentifiers in the `columns` parameter. In case of errors the responsible fields in the response are\nfilled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/InfoItemsResponse"}}}}},"/attachment?action=attach":{"post":{"operationId":"createAttachment","tags":["Attachments"],"summary":"Creates an attachment.","description":"#### Note\nIt is possible to create multiple attachments at once. Therefor add additional form fields and replace \"[index]\" in `json_[index]`\nand `file_[index]` with the appropriate index, like `json_1`, `file_1`. The index always starts with 0 (mandatory attachment object).\n","consumes":["multipart/form-data"],"produces":["text/html"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"formData","name":"json_0","type":"string","description":"A JSON string representing an attachment object as described in [AttachmentData](#/definitions/AttachmentData) model with at least the fields `folder`, `attached` and `module`.","required":true},{"in":"formData","name":"file_0","type":"file","description":"The attachment file as per ``.","required":true}],"responses":{"200":{"description":"A HTML page as described in [File uploads](#file-uploads) containing a JSON array of object IDs of the newly created attachments or errors if some occurred.\n","schema":{"type":"string"}}}}},"/attachment?action=detach":{"put":{"operationId":"deleteAttachments","tags":["Attachments"],"summary":"Deletes attachments.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/gblQueryParamAttached"},{"$ref":"#/parameters/gblQueryParamAttachmentsFolder"},{"$ref":"#/parameters/gblQueryParamAttachmentsModule"},{"in":"body","name":"body","description":"A JSON array with the identifiers of the attachments that shall be deleted.","required":true,"schema":{"type":"array","items":{"type":"string"}}}],"responses":{"200":{"description":"In case of errors the responsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/CommonResponse"}}}}},"/attachment?action=updates":{"get":{"operationId":"getAttachmentUpdates","tags":["Attachments"],"summary":"Gets the new and deleted attachments.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/gblQueryParamAttached"},{"$ref":"#/parameters/gblQueryParamAttachmentsFolder"},{"$ref":"#/parameters/gblQueryParamAttachmentsColumns"},{"$ref":"#/parameters/gblQueryParamAttachmentsModule"},{"in":"query","name":"timestamp","type":"integer","format":"int64","description":"Timestamp of the last update of the requested infoitems.","required":false},{"in":"query","name":"ignore","type":"string","description":"Which kinds of updates should be ignored. Currently, the only valid value – \"deleted\" – causes deleted object IDs not to be returned.","required":false,"enum":["deleted"]},{"in":"query","name":"sort","type":"string","description":"The identifier of a column which determines the sort order of the response. If this parameter is specified, then the parameter order must be also specified.","required":false},{"in":"query","name":"order","type":"string","description":"\"asc\" if the response entities should be sorted in the ascending order, \"desc\" if the response entries should be sorted in the descending order. If this parameter is specified, then the parameter sort must be also specified.","required":false}],"responses":{"200":{"description":"An array with new and deleted attachments. New attachments are represented by arrays. The\nelements of each array contain the information specified by the corresponding identifiers in the `columns`\nparameter. Deleted attachments would be identified by their object IDs as integer, without being part of\na nested array. In case of errors the responsible fields in the response are filled (see\n[Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/AttachmentUpdatesResponse"}}}}},"/attachment?action=get":{"get":{"operationId":"getAttachment","tags":["Attachments"],"summary":"Gets an attachment.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"id","type":"string","description":"Object ID of the requested infoitem.","required":true},{"$ref":"#/parameters/gblQueryParamAttached"},{"$ref":"#/parameters/gblQueryParamAttachmentsFolder"},{"$ref":"#/parameters/gblQueryParamAttachmentsModule"}],"responses":{"200":{"description":"A JSON object containing all data of the requested attachment. In case of errors the responsible fields in the response are\nfilled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/AttachmentResponse"}}}}},"/attachment?action=document":{"get":{"operationId":"getAttachmentDocument","tags":["Attachments"],"summary":"Gets an attachment's document/filedata.","description":"It is possible to add a filename to the request's URI like `/attachment/{filename}?action=document`.\nThe filename may be added to the customary attachment path to suggest a filename to a Save-As dialog.\n","produces":["application/octet-stream"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/gblQueryParamAttached"},{"$ref":"#/parameters/gblQueryParamAttachmentsFolder"},{"$ref":"#/parameters/gblQueryParamAttachmentsModule"},{"in":"query","name":"id","type":"string","description":"Object ID of the requested attachment.","required":true},{"in":"query","name":"content_type","type":"string","description":"If present the response declares the given `content_type` in the Content-Type header and not the attachments file MIME type.","required":false}],"responses":{"200":{"description":"The raw byte data of the document. The response type for the HTTP request is set accordingly to the defined MIME type for this attachment or the content_type given.","schema":{"type":"string","format":"binary"}}}}},"/autoconfig?action=get":{"post":{"operationId":"getAutoConfig","tags":["Autoconfig"],"summary":"Gets the auto configuration for a mail account.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"formData","name":"email","type":"string","description":"The email address for which a mail configuration will be discovered.","required":true},{"in":"formData","name":"password","type":"string","description":"The corresponding password for the mail account.","required":true},{"in":"formData","name":"force_secure","type":"boolean","description":"Enforces a secure connection for configured mail account, default is `true`.","required":false},{"in":"formData","name":"oauth","type":"integer","description":"The optional identifier of the OAuth account to use for authentication."}],"responses":{"200":{"description":"A JSON object containing the best available settings for an appropriate mail server for the given email\naddress. The data may be incomplete or empty. In case of errors the responsible fields in the response\nare filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/AutoConfigResponse"}}}}},"/calendar?action=all":{"get":{"operationId":"getAllAppointments","tags":["Calendar"],"summary":"Gets all appointments.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/gblQueryParamCalendarColumns"},{"in":"query","name":"start","type":"integer","format":"int64","description":"Lower inclusive limit of the queried range as a Date. Only appointments which start on or after this date are returned.","required":true},{"in":"query","name":"end","type":"integer","format":"int64","description":"Upper exclusive limit of the queried range as a Date. Only appointments which end before this date are returned.","required":true},{"in":"query","name":"folder","type":"string","description":"Object ID of the folder, whose contents are queried. If not specified, defaults to all calendar folders.","required":false},{"$ref":"#/parameters/gblQueryParamRecurrenceMaster"},{"in":"query","name":"showPrivate","type":"boolean","description":"Only works in shared folders: When enabled, shows private appointments of the folder owner. Such appointments are anonymized by stripping away all information except start date, end date and recurrence information.","required":false}],"responses":{"200":{"description":"A JSON object containing an array with appointment data. Each array element describes one appointment and\nis itself an array. The elements of each array contain the information specified by the corresponding\nidentifiers in the `columns` parameter. Appointment sequencies are broken up into individual appointments\nand each occurrence of a sequence in the requested range is returned separately. The appointments are\nsorted in ascending order by the field `start_date`. In case of errors the responsible fields in the\nresponse are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/AppointmentsResponse"}}}}},"/calendar?action=has":{"get":{"operationId":"hasAppointmentsOnDays","tags":["Calendar"],"summary":"Requests whether there are appointments on days in a specified time range.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"start","type":"integer","format":"int64","description":"Lower inclusive limit of the queried range as a Date. Only appointments which start on or after this date are returned.","required":true},{"in":"query","name":"end","type":"integer","format":"int64","description":"Upper exclusive limit of the queried range as a Date. Only appointments which end before this date are returned.","required":true}],"responses":{"200":{"description":"A JSON object containing an array with the length of the number of days between `start` and `end`. Meaning,\neach element corresponds with one day in the range that was queried, explaining whether there is an\nappointment on this day (true) or not (false). In case of errors the responsible fields in the response\nare filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/AppointmentInfoResponse"}}}}},"/calendar?action=list":{"put":{"operationId":"getAppointmentList","tags":["Calendar"],"summary":"Gets a list of appointments.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/gblQueryParamCalendarColumns"},{"$ref":"#/parameters/gblQueryParamRecurrenceMaster"},{"in":"body","name":"body","description":"A JSON array of JSON objects with the id, folder and optionally either recurrence_position or recurrence_date_position of the requested appointments.","required":true,"schema":{"type":"array","items":{"$ref":"#/definitions/AppointmentListElement"}}}],"responses":{"200":{"description":"A JSON object containing an array with data for the requested appointments. Each array element describes one appointment and\nis itself an array. The elements of each array contain the information specified by the corresponding\nidentifiers in the `columns` parameter. In case of errors the responsible fields in the response\nare filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/AppointmentsResponse"}}}}},"/calendar?action=updates":{"get":{"operationId":"getAppointmentUpdates","tags":["Calendar"],"summary":"Gets updated appointments.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/gblQueryParamCalendarColumns"},{"in":"query","name":"timestamp","type":"integer","format":"int64","description":"Timestamp of the last update of the requested appointments.","required":true},{"in":"query","name":"folder","type":"string","description":"Object ID of the folder, whose contents are queried. That parameter may be absent in case ignore is set to \"deleted\", which means all accessible calendar folders are considered. If ignore is not set to \"deleted\", that parameter is mandatory.","required":false},{"in":"query","name":"start","type":"integer","format":"int64","description":"Lower inclusive limit of the queried range as a Date. Only appointments which end on or after this date are returned. This parameter is optional in case a certain folder is queried, but mandatory if all accessible calendar folders are supposed to be considered (folder not specified).","required":false},{"in":"query","name":"end","type":"integer","format":"int64","description":"Upper exclusive limit of the queried range as a Date. Only appointments which start before this date are returned. This parameter is optional in case a certain folder is queried, but mandatory if all accessible calendar folders are supposed to be considered (folder not specified).","required":false},{"in":"query","name":"ignore","type":"string","description":"Which kinds of updates should be ignored. Currently, the only valid value – \"deleted\" – causes deleted object IDs not to be returned.","required":false,"enum":["deleted"]},{"$ref":"#/parameters/gblQueryParamRecurrenceMaster"},{"in":"query","name":"showPrivate","type":"boolean","description":"Only works in shared folders: When enabled, shows private appointments of the folder owner. Such appointments are anonymized by stripping away all information except start date, end date and recurrence information.","required":false}],"responses":{"200":{"description":"An array with new, modified and deleted appointments. New and modified appointments are represented by arrays.\nThe elements of each array contain the information specified by the corresponding identifiers in the\n`columns` parameter. Deleted appointments (should the ignore parameter be ever implemented) would be identified\nby their object IDs as integers, without being part of a nested array. Appointment sequencies are broken up\ninto individual appointments and each modified occurrence of a sequence in the requested range is returned\nseparately. The appointments are sorted in ascending order by the field start_date. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/AppointmentUpdatesResponse"}}}}},"/calendar?action=get":{"get":{"operationId":"getAppointment","tags":["Calendar"],"summary":"Gets an appointment.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"id","type":"string","description":"Object ID of the requested appointment.","required":true},{"$ref":"#/parameters/gblQueryParamCalendarFolder"},{"in":"query","name":"recurrence_position","type":"integer","description":"Recurrence position of requested appointment.","required":false}],"responses":{"200":{"description":"An object containing all data of the requested appointment. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/AppointmentResponse"}}}}},"/calendar?action=update":{"put":{"operationId":"updateAppointment","tags":["Calendar"],"summary":"Updates an appointment.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"id","type":"string","description":"Object ID of the requested appointment.","required":true},{"$ref":"#/parameters/gblQueryParamCalendarFolder"},{"in":"query","name":"timestamp","type":"integer","format":"int64","description":"Timestamp of the updated appointment. If the appointment was modified after the specified timestamp, then the update must fail.","required":true},{"in":"body","name":"body","description":"A JSON object containing the appointment's data. The field `recurrence_id` is always present\nif it is present in the original appointment. The field `recurrence_position` is present if\nit is present in the original appointment and only this single appointment should be modified.\nThe field `id` is not present because it is already included as a parameter. Other fields are\npresent only if modified.\n","required":true,"schema":{"$ref":"#/definitions/AppointmentData"}}],"responses":{"200":{"description":"A JSON object containing the id of the updated appointment. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/AppointmentUpdateResponse"}}}}},"/calendar?action=new":{"put":{"operationId":"createAppointment","tags":["Calendar"],"summary":"Creates an appointment.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"body","name":"body","description":"A JSON object containing the appointment's data.","required":true,"schema":{"$ref":"#/definitions/AppointmentData"}}],"responses":{"200":{"description":"'A JSON object containing the id of the newly created appointment if it was created successfully.\nIf the appointment could not be created due to conflicts, the response body is an object with the\nfield `conflicts`, which is an array of appointment objects which caused the conflict. Each appointment\nobject which represents a resource conflict contains an additional field `hard_conflict` with the\nBoolean value `true`. If the user does not have read access to a conflicting appointment, only the\nfields `id`, `start_date`, `end_date`, `shown_as` and `participants` are present and the field `participants`\ncontains only the participants which caused the conflict. In case of errors the responsible fields\nin the response are filled (see [Error handling](#error-handling)).'\n","schema":{"$ref":"#/definitions/AppointmentCreationResponse"}}}}},"/calendar?action=delete":{"put":{"operationId":"deleteAppointment","tags":["Calendar"],"summary":"Deletes appointments.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"timestamp","type":"integer","format":"int64","description":"Timestamp of the last update of the deleted appointments.","required":true},{"in":"body","name":"body","description":"A JSON array of JSON objects with the id, folder and optionally the recurrence position (if present in an appointment to fully identify it) of the appointments.","required":true,"schema":{"type":"array","items":{"$ref":"#/definitions/AppointmentDeletionsElement"}}}],"responses":{"200":{"description":"A JSON array of objects identifying the appointments which were modified after the specified timestamp and were therefore not deleted. In case of errors the responsible fields in the response are\nfilled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/AppointmentDeletionsResponse"}}}}},"/calendar?action=confirm":{"put":{"operationId":"confirmAppointment","tags":["Calendar"],"summary":"Confirms an appointment.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"id","type":"string","description":"Object ID of the appointment that shall be confirmed.","required":true},{"$ref":"#/parameters/gblQueryParamCalendarFolder"},{"in":"query","name":"timestamp","type":"integer","format":"int64","description":"Timestamp of the last update of the appointment.","required":true},{"in":"query","name":"occurrence","type":"integer","description":"The numeric identifier of the occurrence to which the confirmation applies (in case `id` denotes a series appointment).","required":false},{"in":"body","name":"body","description":"A JSON object with the fields `confirmation`, `confirmmessage` and optionally `id`.","required":true,"schema":{"$ref":"#/definitions/AppointmentConfirmationBody"}}],"responses":{"200":{"description":"Nothing, except the standard response object with empty data, the timestamp of the confirmed and thereby\nupdated appointment, and maybe errors. In case of errors the responsible fields in the response are\nfilled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/CommonResponse"}}}}},"/calendar?action=freebusy":{"get":{"operationId":"getFreeAndBusy","summary":"Gets appointments between a specified time range.","tags":["Calendar"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"id","type":"integer","description":"Internal user id. Must be obtained from the contact module.","required":true},{"in":"query","name":"start","type":"integer","format":"int64","description":"Lower inclusive limit of the queried range as a Date. Only appointments which end on or after this date are returned.","required":true},{"in":"query","name":"end","type":"integer","format":"int64","description":"Upper exclusive limit of the queried range as a Date. Only appointments which start before this date are returned.","required":true},{"in":"query","name":"type","type":"integer","description":"Constant for user or resource (1 for users, 3 for resources).","required":true,"enum":[1,3]}],"responses":{"200":{"description":"An array of objects identifying the appointments which lie between start and end as described. In\ncase of errors the responsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/AppointmentFreeBusyResponse"}}}}},"/calendar?action=search":{"put":{"operationId":"searchAppointments","tags":["Calendar"],"summary":"Searches for appointments.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/gblQueryParamCalendarColumns"},{"in":"body","name":"body","description":"A JSON object containing search parameters.","required":true,"schema":{"$ref":"#/definitions/AppointmentSearchBody"}}],"responses":{"200":{"description":"A JSON object containing an array with matching appointments. Appointments are represented by arrays. The elements of each array contain the\ninformation specified by the corresponding identifiers in the `columns` parameter. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/AppointmentsResponse"}}}}},"/calendar?action=newappointments":{"get":{"operationId":"getNewAppointments","tags":["Calendar"],"summary":"Gets new appointments.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/gblQueryParamCalendarColumns"},{"in":"query","name":"start","type":"integer","format":"int64","description":"Lower inclusive limit of the queried range as a Date. Only appointments which end on or after this date are returned.","required":true},{"in":"query","name":"end","type":"integer","format":"int64","description":"Upper exclusive limit of the queried range as a Date. Only appointments which start before this date are returned.","required":true},{"in":"query","name":"limit","type":"string","description":"Limits the number of returned objects to the given value.","required":true},{"in":"query","name":"sort","type":"string","description":"The identifier of a column which determines the sort order of the response. If this parameter is specified and holds a column number, then the parameter order must be also specified.","required":false},{"in":"query","name":"order","type":"string","description":"\"asc\" if the response entires should be sorted in the ascending order, \"desc\" if the response entries should be sorted in the descending order. If this parameter is specified, then the parameter sort must be also specified.","required":false}],"responses":{"200":{"description":"A JSON object containing an array with appointment data. Appointments are represented by arrays. The elements of each array contain the\ninformation specified by the corresponding identifiers in the `columns` parameter. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/AppointmentsResponse"}}}}},"/calendar?action=resolveuid":{"get":{"operationId":"resolveUID","tags":["Calendar"],"summary":"Resolves the UID to an OX object ID.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"uid","type":"string","description":"The UID that shall be resolved.","required":true}],"responses":{"200":{"description":"A JSON object containing the related object ID in the field `id`. If no object exists with the\nspecified UID or in case of errors the responsible fields in the response are filled\n(see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/AppointmentUpdateResponse"}}}}},"/calendar?action=getChangeExceptions":{"get":{"operationId":"getChangeExceptions","tags":["Calendar"],"summary":"Gets all change exceptions.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"id","type":"string","description":"Object ID of the appointment series.","required":true},{"$ref":"#/parameters/gblQueryParamCalendarFolder"},{"$ref":"#/parameters/gblQueryParamCalendarColumns"}],"responses":{"200":{"description":"A JSON object containing an array with appointment data. Each array element describes one appointment and\nis itself an array. The elements of each array contain the information specified by the corresponding\nidentifiers in the `columns` parameter. In case of errors the responsible fields in the response are filled\n(see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/AppointmentsResponse"}}}}},"/calendar?action=copy":{"put":{"operationId":"createAppointment","tags":["Calendar"],"summary":"Creates an appointment.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"id","type":"string","description":"Object ID of the requested appointment.","required":true},{"in":"query","name":"ignore_conflicts","type":"boolean","description":"Flag indicating whether conflicts should be ignored or not.","required":true},{"$ref":"#/parameters/gblQueryParamCalendarFolder"},{"in":"query","name":"timezone","type":"string","description":"The timezone which should be used","required":true},{"in":"body","name":"body","description":"A JSON object containing the new destination folder id.","required":true,"schema":{"type":"object","properties":{"folder_id":{"type":"string","description":"ID of the destination folder."}}}}],"responses":{"200":{"description":"'A JSON object containing the id of the newly created appointment if it was created successfully.\nIf the appointment could not be created due to conflicts, the response body is an object with the\nfield `conflicts`, which is an array of appointment objects which caused the conflict. Each appointment\nobject which represents a resource conflict contains an additional field `hard_conflict` with the\nBoolean value `true`. If the user does not have read access to a conflicting appointment, only the\nfields `id`, `start_date`, `end_date`, `shown_as` and `participants` are present and the field `participants`\ncontains only the participants which caused the conflict. In case of errors the responsible fields\nin the response are filled (see [Error handling](#error-handling)).'\n","schema":{"$ref":"#/definitions/AppointmentCreationResponse"}}}}},"/capabilities?action=all":{"get":{"operationId":"getAllCapabilities","tags":["Capabilities"],"summary":"Gets all capabilities.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"}],"responses":{"200":{"description":"A JSON object containing an array with data for all capabilities. In case of errors the responsible fields in the response are\nfilled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/CapabilitiesResponse"}}}}},"/capabilities?action=get":{"get":{"operationId":"getCapability","tags":["Capabilities"],"summary":"Gets a capability.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"id","type":"string","description":"The identifier of the capability","required":true}],"responses":{"200":{"description":"A JSON object containing the data of the capability or an empty result, if capability not available. In case of errors the responsible fields in the response are\nfilled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/CapabilityResponse"}}}}},"/certificate?action=all":{"get":{"operationId":"getAllCertificates","tags":["Certificate"],"summary":"Gets all SSL certificates.","description":"Returns all trusted and untrusted SSL certificates","parameters":[{"$ref":"#/parameters/gblQueryParamSession"}],"responses":{"200":{"description":"A JSON object containing an array with data for all certificates. In case of errors the responsible fields in the response are\nfilled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/CertificatesAllResponse"}}}}},"/certificate?action=deleteAll":{"put":{"operationId":"deleteAllCertificates","tags":["Certificate"],"summary":"Deletes all fingerprint/hostname combinations for the user","description":"Deletes all fingerprint/hostname combinations for the user","parameters":[{"$ref":"#/parameters/gblQueryParamSession"}],"responses":{"200":{"description":"An empty JSON object. In case of errors the responsible fields in the response are filled (see [Error handling](#error-handling))."}}}},"/certificate?action=delete":{"put":{"operationId":"deleteCertificate","tags":["Certificate"],"summary":"Deletes the fingerprint/hostname combination","description":"Deletes the fingerprint/hostname combination","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"fingerprint","type":"string","description":"The fingerprint of the SSL certificate","required":true},{"in":"query","name":"hostname","type":"string","description":"The hostname for which the SSL certificate is trusted/not trusted. If absent, then all entries for the specified fingerprint will be deleted","required":false}],"responses":{"200":{"description":"An empty JSON object. In case of errors the responsible fields in the response are filled (see [Error handling](#error-handling))."}}}},"/certificate?action=examine":{"get":{"operationId":"examineCertificate","tags":["Certificate"],"summary":"Examines an untrusted SSL certificate from a previous endpoint call","description":"Examines an untrusted SSL certificate from a previous endpoint call. The SSL certificate is cached for a brief amount of time by the middleware (2 minutes).","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"fingerprint","type":"string","description":"The fingerprint of the SSL certificate","required":true}],"responses":{"200":{"description":"A JSON object containing the data of the certificate. In case of errors the responsible fields in the response are filled (see [Error handling](#error-handling)).","schema":{"$ref":"#/definitions/CertificateExamineResponse"}}}}},"/certificate?action=get":{"get":{"operationId":"getCertificate","tags":["Certificate"],"summary":"Gets a specific or all SSL certificates","description":"Gets a specific or all SSL certificates","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"fingerprint","type":"string","description":"The fingerprint of the SSL certificate","required":true},{"in":"query","name":"hostname","type":"string","description":"The hostname for which the SSL certificate is trusted/not trusted. If absent, then all entries for the specified fingerprint will be returned","required":false}],"responses":{"200":{"description":"A JSON object containing an array with data for all certificates. In case of errors the responsible fields in the response are\nfilled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/CertificatesAllResponse"}}}}},"/certificate?action=store":{"put":{"operationId":"storeCertificate","tags":["Certificate"],"summary":"Stores the fingerprint of an SSL certificate.","description":"Stores the fingerprint of an SSL certificate in combination with a hostname as either trusted or untrusted. This API call also accepts a JSONObject.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"fingerprint","type":"string","description":"The fingerprint of the SSL certificate","required":true},{"in":"query","name":"hostname","type":"string","description":"The hostname for which to trust/untrust the SSL certificate","required":true},{"in":"query","name":"trust","type":"boolean","description":"Whether the combination of the SSL certificate and the hostname is to be trusted","required":true},{"in":"body","name":"body","description":"A JSON object describing the SSL certificate.","required":false,"schema":{"$ref":"#/definitions/CertificateStoreData"}}],"responses":{"200":{"description":"An empty JSON object. In case of errors the responsible fields in the response are filled (see [Error handling](#error-handling))."}}}},"/certificate?action=update":{"put":{"operationId":"storeCertificate","tags":["Certificate"],"summary":"Updates the exception for an SSL certificate in combination with a hostname as either trusted or untrusted","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"fingerprint","type":"string","description":"The fingerprint of the SSL certificate","required":true},{"in":"query","name":"hostname","type":"string","description":"The hostname for which to trust/untrust the SSL certificate","required":true},{"in":"query","name":"trust","type":"boolean","description":"Whether the combination of the SSL certificate and the hostname is to be trusted","required":true}],"responses":{"200":{"description":"An empty JSON object. In case of errors the responsible fields in the response are filled (see [Error handling](#error-handling))."}}}},"/chronos?action=all":{"get":{"operationId":"getAllEvents","tags":["Chronos"],"summary":"Gets all events in folder.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"folder","type":"string","description":"ID of the folder who contains the events. If not set, all events of the default account will be queried.","required":false},{"in":"query","name":"rangeStart","type":"string","description":"Lower inclusive limit of the queried range as a utc date-time value as specified in rfc 5545 chapter 3.3.5. E.g. \"20170708T220000Z\". Only events which start on or after this date are returned.\n","required":true},{"in":"query","name":"rangeEnd","type":"string","description":"Upper exclusive limit of the queried range as a utc date-time value as specified in rfc 5545 chapter 3.3.5. E.g. \"20170708T220000Z\". Only events which end before this date are returned.\n","required":true},{"$ref":"#/parameters/QueryParamChronosFields"},{"$ref":"#/parameters/QueryParamChronosOrder"},{"$ref":"#/parameters/QueryParamChronosSort"},{"$ref":"#/parameters/QueryParamChronosExpand"},{"$ref":"#/parameters/QueryParamChronosExtendedEntities"},{"$ref":"#/parameters/QueryParamChronosUpdateCache"}],"responses":{"200":{"description":"A JSON object containing an array with events. The events are\nsorted in ascending order by the field `start_date`. In case of errors the responsible fields in the\nresponse are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/EventsResponse"}}}},"put":{"operationId":"getAllEventsForMultipleFolders","tags":["Chronos"],"summary":"Gets all events of multiple folders.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"rangeStart","type":"string","description":"Lower inclusive limit of the queried range as a utc date-time value as specified in rfc 5545 chapter 3.3.5. E.g. \"20170708T220000Z\". Only events which start on or after this date are returned.\n","required":true},{"in":"query","name":"rangeEnd","type":"string","description":"Upper exclusive limit of the queried range as a utc date-time value as specified in rfc 5545 chapter 3.3.5. E.g. \"20170708T220000Z\". Only events which end before this date are returned.\n","required":true},{"$ref":"#/parameters/QueryParamChronosFields"},{"$ref":"#/parameters/QueryParamChronosOrder"},{"$ref":"#/parameters/QueryParamChronosSort"},{"$ref":"#/parameters/QueryParamChronosExpand"},{"$ref":"#/parameters/QueryParamChronosUpdateCache"},{"in":"body","name":"body","description":"A JSON object containing the folder ids.","required":true,"schema":{"$ref":"#/definitions/ChronosFolderBody"}}],"responses":{"200":{"description":"A JSON object containing an array with events. The events are\nsorted in ascending order by the field `start_date`. In case of errors the responsible fields in the\nresponse are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/MultipleFolderEventsResponse"}}}}},"/chronos?action=list":{"put":{"operationId":"getEventList","tags":["Chronos"],"summary":"Gets a list of events.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/QueryParamChronosFields"},{"$ref":"#/parameters/QueryParamChronosExtendedEntities"},{"in":"body","name":"body","description":"A JSON array of JSON objects with the id and optionally the recurrence position of the event.","required":true,"schema":{"type":"array","items":{"$ref":"#/definitions/EventId"}}}],"responses":{"200":{"description":"A JSON object containing an array with events. In case of errors the responsible fields in the\nresponse are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/EventsResponse"}}}}},"/chronos?action=updates":{"get":{"operationId":"getUpdates","tags":["Chronos"],"summary":"Gets all changed events since the given timestamp.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/QueryParamChronosFolder"},{"in":"query","name":"timestamp","type":"integer","format":"int64","description":"Timestamp of the last update of the requested events.","required":true},{"in":"query","name":"rangeStart","type":"string","description":"Lower inclusive limit of the queried range as a utc date-time value as specified in rfc 5545 chapter 3.3.5. E.g. \"20170708T220000Z\". Only events which start on or after this date are returned.\n","required":false},{"in":"query","name":"rangeEnd","type":"string","description":"Upper exclusive limit of the queried range as a utc date-time value as specified in rfc 5545 chapter 3.3.5. E.g. \"20170708T220000Z\". Only events which end before this date are returned.\n","required":false},{"$ref":"#/parameters/QueryParamChronosFields"},{"$ref":"#/parameters/QueryParamChronosOrder"},{"$ref":"#/parameters/QueryParamChronosSort"},{"$ref":"#/parameters/QueryParamChronosExpand"},{"$ref":"#/parameters/QueryParamChronosExtendedEntities"}],"responses":{"200":{"description":"A JSON object containing two arrays. One with new and updated events and another one with deleted events. The events are\nsorted in ascending order by the field `start_date`. In case of errors the responsible fields in the\nresponse are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/ChronosUpdatesResponse"}}}}},"/chronos?action=get":{"get":{"operationId":"getEvent","tags":["Chronos"],"summary":"Gets an event.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/QueryParamChronosID"},{"$ref":"#/parameters/QueryParamChronosFolder"},{"$ref":"#/parameters/QueryParamChronosRecurrenceID"},{"$ref":"#/parameters/QueryParamChronosFields"},{"$ref":"#/parameters/QueryParamChronosExtendedEntities"}],"responses":{"200":{"description":"An object containing all data of the requested event. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/EventResponse"}}}}},"/chronos?action=getAttachment":{"get":{"operationId":"getEventAttachment","tags":["Chronos"],"summary":"Gets the attachment of an event.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/QueryParamChronosID"},{"$ref":"#/parameters/QueryParamChronosFolder"},{"in":"query","name":"managedId","type":"integer","description":"The identifier of the attachment.","required":true}],"responses":{"200":{"description":"The attachment's raw data. In case of errors the responsible fields in the response are filled (see [Error handling](#error-handling)).","schema":{"type":"string","format":"binary"}}}}},"/chronos?action=update":{"put":{"operationId":"updateEvent","tags":["Chronos"],"summary":"Updates an event.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/QueryParamChronosFolder"},{"$ref":"#/parameters/QueryParamChronosID"},{"$ref":"#/parameters/QueryParamChronosRecurrenceID"},{"$ref":"#/parameters/QueryParamChronosRecurrenceRange"},{"$ref":"#/parameters/QueryParamChronosCheckConflicts"},{"$ref":"#/parameters/QueryParamChronosNotification"},{"$ref":"#/parameters/QueryParamChronosExtendedEntities"},{"in":"query","name":"rangeStart","type":"string","description":"If expand is set to 'true' this parameter defines a lower inclusive limit as a utc date-time value as specified in rfc 5545 chapter 3.3.5. E.g. \"20170708T220000Z\". \nOnly events which start on or after this date are returned.\n","required":false},{"in":"query","name":"rangeEnd","type":"string","description":"If expand is set to 'true' this parameter defines a upper exclusive limit as a utc date-time value as specified in rfc 5545 chapter 3.3.5. E.g. \"20170708T220000Z\". \nOnly events which end before this date are returned.\n","required":false},{"$ref":"#/parameters/QueryParamChronosExpand"},{"in":"body","name":"body","description":"A JSON object containing the event's data.","required":true,"schema":{"$ref":"#/definitions/EventData"}},{"in":"query","name":"timestamp","type":"integer","format":"int64","description":"Timestamp of the last update of the event.","required":true}],"responses":{"200":{"description":"A JSON object containing containing the result of the update. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/ChronosCalendarResultResponse"}}}},"post":{"operationId":"updateEventWithAttachments","tags":["Chronos"],"summary":"Updates an event and its attachments.","description":"#### Note\nIt is possible to update multiple attachments at once. Therefore add additional form fields and replace \"[index]\" in `file_[index]` \nwith the appropriate index, like `file_1`. The index always starts with 0 (mandatory attachment object). There can only be\none json payload describing the EventData, the rest json payloads (if present) will simply be ignored.\nIf the event already has attachments, then for each of those attachments their valid manageId must be provided as part of the attachment\nmetadata. The absense of an already existing attachment for the event will result in the deletion of that attachment.\n","consumes":["multipart/form-data"],"produces":["text/html"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/QueryParamChronosFolder"},{"$ref":"#/parameters/QueryParamChronosID"},{"$ref":"#/parameters/QueryParamChronosRecurrenceID"},{"$ref":"#/parameters/QueryParamChronosCheckConflicts"},{"$ref":"#/parameters/QueryParamChronosNotification"},{"$ref":"#/parameters/QueryParamChronosExtendedEntities"},{"in":"query","name":"timestamp","type":"integer","format":"int64","description":"Timestamp of the last update of the event.","required":true},{"in":"formData","name":"json_0","type":"string","description":"A JSON object containing the event's data as described in [EventData](#/definitions/EventData).","required":true},{"in":"formData","name":"file_0","type":"file","description":"The attachment file as per ``.","required":true}],"responses":{"200":{"description":"A HTML page containing the result of the update or in case of errors an error object (see [File uploads](https://documentation.open-xchange.com/latest/middleware/http_api/1_introduction.html#file-uploads) as an example).\n","schema":{"type":"string"}}}}},"/chronos?action=new":{"put":{"operationId":"createEvent","tags":["Chronos"],"summary":"Creates an event.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/QueryParamChronosFolder"},{"$ref":"#/parameters/QueryParamChronosCheckConflicts"},{"$ref":"#/parameters/QueryParamChronosNotification"},{"$ref":"#/parameters/QueryParamChronosExtendedEntities"},{"in":"query","name":"rangeStart","type":"string","description":"If expand is set to 'true' this parameter defines a lower inclusive limit as a utc date-time value as specified in rfc 5545 chapter 3.3.5. E.g. \"20170708T220000Z\". \nOnly events which start on or after this date are returned.\n","required":false},{"in":"query","name":"rangeEnd","type":"string","description":"If expand is set to 'true' this parameter defines a upper exclusive limit as a utc date-time value as specified in rfc 5545 chapter 3.3.5. E.g. \"20170708T220000Z\". \nOnly events which end before this date are returned.\n","required":false},{"$ref":"#/parameters/QueryParamChronosExpand"},{"in":"body","name":"body","description":"A JSON object containing the event's data.","required":true,"schema":{"$ref":"#/definitions/EventData"}}],"responses":{"200":{"description":"'A JSON object containing the newly created event, if it was created successfully.\nIf the event could not be created due to conflicts, the response body is an object with the\nfield `conflicts`, which holds informations about the conflict. In case of errors the responsible fields\nin the response are filled (see [Error handling](#error-handling)).'\n","schema":{"$ref":"#/definitions/ChronosCalendarResultResponse"}}}},"post":{"operationId":"createEventWithAttachments","tags":["Chronos"],"summary":"Creates an event and attaches files.","description":"#### Note\nIt is possible to create multiple attachments at once. Therefore add additional form fields and replace \"[index]\" in `file_[index]` \nwith the appropriate index, like `file_1`. The index always starts with 0 (mandatory attachment object). There can only be\none json payload describing the EventData, the rest json payloads (if present) will simply be ignored.\n","consumes":["multipart/form-data"],"produces":["text/html"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/QueryParamChronosFolder"},{"$ref":"#/parameters/QueryParamChronosCheckConflicts"},{"$ref":"#/parameters/QueryParamChronosNotification"},{"$ref":"#/parameters/QueryParamChronosExtendedEntities"},{"in":"formData","name":"json_0","type":"string","description":"A JSON object containing the event's data as described in [EventData](#/definitions/EventData).","required":true},{"in":"formData","name":"file_0","type":"file","description":"The attachment file as per ``.","required":true}],"responses":{"200":{"description":"A HTML page containing the newly created event or in case of errors an error object (see [File uploads](https://documentation.open-xchange.com/latest/middleware/http_api/1_introduction.html#file-uploads) as an example).\nIf the event could not be created due to conflicts, the HTML Page contains an object with the\nfield `conflicts`, which holds informations about the conflict.\n","schema":{"type":"string"}}}}},"/chronos?action=delete":{"put":{"operationId":"deleteEvent","tags":["Chronos"],"summary":"Deletes events.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"timestamp","type":"integer","format":"int64","description":"Timestamp of the last update of the events.","required":true},{"in":"query","name":"rangeStart","type":"string","description":"If expand is set to 'true' this parameter defines a lower inclusive limit as a utc date-time value as specified in rfc 5545 chapter 3.3.5. E.g. \"20170708T220000Z\". \nOnly events which start on or after this date are returned.\n","required":false},{"in":"query","name":"rangeEnd","type":"string","description":"If expand is set to 'true' this parameter defines a upper exclusive limit as a utc date-time value as specified in rfc 5545 chapter 3.3.5. E.g. \"20170708T220000Z\". \nOnly events which end before this date are returned.\n","required":false},{"$ref":"#/parameters/QueryParamChronosExpand"},{"$ref":"#/parameters/QueryParamChronosExtendedEntities"},{"in":"body","name":"body","description":"A JSON array of JSON objects with the id and optionally the recurrence position of the event.","required":true,"schema":{"type":"array","items":{"$ref":"#/definitions/EventId"}}}],"responses":{"200":{"description":"An json object containing the deleted event if the deletion was successfull. In case of errors the responsible fields in the response are\nfilled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/ChronosMultipleCalendarResultResponse"}}}}},"/chronos?action=updateAttendee":{"put":{"operationId":"updateAttendee","tags":["Chronos"],"summary":"Updates the attendee status of an event.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/QueryParamChronosFolder"},{"$ref":"#/parameters/QueryParamChronosID"},{"$ref":"#/parameters/QueryParamChronosRecurrenceID"},{"$ref":"#/parameters/QueryParamChronosNotification"},{"$ref":"#/parameters/QueryParamChronosExtendedEntities"},{"in":"query","name":"timestamp","type":"integer","format":"int64","description":"Timestamp of the last update of the event.","required":true},{"$ref":"#/parameters/QueryParamChronosCheckConflicts"},{"in":"query","name":"rangeStart","type":"string","description":"If expand is set to 'true' this parameter defines a lower inclusive limit as a utc date-time value as specified in rfc 5545 chapter 3.3.5. E.g. \"20170708T220000Z\". \nOnly events which start on or after this date are returned.\n","required":false},{"in":"query","name":"rangeEnd","type":"string","description":"If expand is set to 'true' this parameter defines a upper exclusive limit as a utc date-time value as specified in rfc 5545 chapter 3.3.5. E.g. \"20170708T220000Z\". \nOnly events which end before this date are returned.\n","required":false},{"$ref":"#/parameters/QueryParamChronosExpand"},{"in":"body","name":"body","description":"A JSON object with the field `attendee` and `alarms`.","required":true,"schema":{"type":"object","title":"AttendeeAndAlarm","properties":{"attendee":{"$ref":"#/definitions/Attendee"},"alarms":{"type":"array","description":"A list of alarms for this event.","items":{"$ref":"#/definitions/Alarm"}}}}}],"responses":{"200":{"description":"A JSON object containing containing the result of the update. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/ChronosCalendarResultResponse"}}}}},"/chronos?action=move":{"put":{"operationId":"moveEvent","tags":["Chronos"],"summary":"Moves an event to another calendar folder.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/QueryParamChronosCheckConflicts"},{"$ref":"#/parameters/QueryParamChronosFolder"},{"$ref":"#/parameters/QueryParamChronosID"},{"$ref":"#/parameters/QueryParamChronosRecurrenceID"},{"$ref":"#/parameters/QueryParamChronosNotification"},{"$ref":"#/parameters/QueryParamChronosExtendedEntities"},{"in":"query","name":"timestamp","type":"integer","format":"int64","description":"Timestamp of the last update of the event.","required":true},{"in":"query","name":"targetFolder","type":"string","description":"ID of the target folder.","required":true},{"in":"query","name":"rangeStart","type":"string","description":"If expand is set to 'true' this parameter defines a lower inclusive limit as a utc date-time value as specified in rfc 5545 chapter 3.3.5. E.g. \"20170708T220000Z\". \nOnly events which start on or after this date are returned.\n","required":false},{"in":"query","name":"rangeEnd","type":"string","description":"If expand is set to 'true' this parameter defines a upper exclusive limit as a utc date-time value as specified in rfc 5545 chapter 3.3.5. E.g. \"20170708T220000Z\". \nOnly events which end before this date are returned.\n","required":false},{"$ref":"#/parameters/QueryParamChronosExpand"}],"responses":{"200":{"description":"A JSON object containing containing the result of the update. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/ChronosCalendarResultResponse"}}}}},"/chronos?action=freeBusy":{"put":{"operationId":"freebusy","tags":["Chronos"],"summary":"Gets free-busy timeslots for the given attendees.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/ChronosFromTimeRange"},{"$ref":"#/parameters/ChronosUntilTimeRange"},{"in":"query","name":"maskId","type":"string","description":"The identifier of an existing event or event series to ignore when calculating free/busy information. \nThis is useful when a client wants to find a new timeslot for an existing event.\n","required":false},{"in":"query","name":"merge","type":"boolean","description":"Set to true
to merge the resulting free/busy-times.\n","required":false},{"in":"body","name":"body","description":"A JSON object containing the attendees' data.","required":true,"schema":{"type":"object","title":"FreeBusyBody","properties":{"attendees":{"type":"array","description":"A list of attendees","items":{"$ref":"#/definitions/Attendee"}}}}}],"responses":{"200":{"description":"An object containing an array of json objects for each attendee containing a list of free-busy times. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/ChronosFreeBusyResponse"}}}}},"/chronos?action=needsAction":{"get":{"operationId":"getEventsNeedingAction","tags":["Chronos"],"summary":"Gets all events where the session userattendee's participation status equals \"NEEDS-ACTION\".","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"rangeStart","type":"string","description":"Lower inclusive limit of the queried range as a utc date-time value as specified in rfc 5545 chapter 3.3.5. E.g. \"20170708T220000Z\". Only events which start on or after this date are returned.\n","required":true},{"in":"query","name":"rangeEnd","type":"string","description":"Upper exclusive limit of the queried range as a utc date-time value as specified in rfc 5545 chapter 3.3.5. E.g. \"20170708T220000Z\". Only events which end before this date are returned.\n","required":true},{"$ref":"#/parameters/QueryParamChronosFields"},{"$ref":"#/parameters/QueryParamChronosOrder"},{"$ref":"#/parameters/QueryParamChronosSort"},{"$ref":"#/parameters/QueryParamChronosExtendedEntities"}],"responses":{"200":{"description":"A JSON object containing an array with events. In case of errors the responsible fields in the\nresponse are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/EventsResponse"}}}}},"/chronos?action=resolve":{"get":{"operationId":"resolveEvent","tags":["Chronos"],"summary":"Resolves an event identifier to an event, and returns it in the perspective of the current session's user, i.e. having an appropriate parent folder identifier assigned.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/QueryParamChronosID"},{"$ref":"#/parameters/QueryParamChronosFields"},{"$ref":"#/parameters/QueryParamChronosExtendedEntities"}],"responses":{"200":{"description":"An object containing all data of the requested event, or an empty result if no event was found. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/EventResponse"}}}}},"/chronos/account?action=probe":{"put":{"operationId":"probe","tags":["Chronos","ICal"],"summary":"Probe to check given ICal calendar properties before creating a new account.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"body","name":"body","description":"The properties to check.\n","required":true,"schema":{"$ref":"#/definitions/CalendarAccountProbeData"}}],"responses":{"200":{"description":"A JSON object describing the possible calendar accounts. In case of errors the responsible fields in the\nresponse are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/CalendarAccountProbeResponse"}}}}},"/chronos/alarm?action=pending":{"get":{"operationId":"getAlarmTrigger","tags":["Chronos"],"summary":"Retrieves not acknowledged alarm triggers.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"rangeEnd","type":"string","description":"Upper exclusive limit of the queried range as a utc date-time value as specified in rfc 5545 chapter 3.3.5. E.g. \"20170708T220000Z\". Only events which should trigger before this date are returned.\n","required":true},{"in":"query","name":"actions","type":"string","description":"A comma separated list of alarm actions. Only this actions will be returned.\n","default":"DISPLAY, AUDIO","required":false}],"responses":{"200":{"description":"An array of alarm trigger objects. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/AlarmTriggerResponse"}}}}},"/chronos/alarm?action=snooze":{"get":{"operationId":"snoozeAlarm","tags":["Chronos"],"summary":"Snoozes an alarm by the given duration.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/QueryParamChronosID"},{"$ref":"#/parameters/QueryParamChronosFolder"},{"$ref":"#/parameters/QueryParamChronosExtendedEntities"},{"in":"query","name":"alarmId","type":"integer","description":"The id of the alarm which shall be snoozed.\n","required":true},{"in":"query","name":"snoozeTime","type":"integer","format":"int64","description":"The duration in milliseconds the alarm should be snoozed by. E.g. 300000 for 5 minutes.\n","required":true}],"responses":{"200":{"description":"A JSON object containing containing the result of the snooze operation. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/ChronosCalendarResultResponse"}}}}},"/chronos/alarm?action=ack":{"get":{"operationId":"acknowledgeAlarm","tags":["Chronos"],"summary":"Acknowledges an alarm.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/QueryParamChronosID"},{"$ref":"#/parameters/QueryParamChronosFolder"},{"$ref":"#/parameters/QueryParamChronosExtendedEntities"},{"in":"query","name":"alarmId","type":"integer","description":"The id of the alarm which shall be acknowledged.\n","required":true}],"responses":{"200":{"description":"A JSON object containing containing the result of the acknowledge operation. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/ChronosCalendarResultResponse"}}}}},"/chronos/alarm?action=updateAlarms":{"put":{"operationId":"updateAlarms","tags":["Chronos"],"summary":"Updates the personal alarms of an event.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/QueryParamChronosFolder"},{"$ref":"#/parameters/QueryParamChronosID"},{"$ref":"#/parameters/QueryParamChronosRecurrenceID"},{"$ref":"#/parameters/QueryParamChronosExtendedEntities"},{"in":"query","name":"timestamp","type":"integer","format":"int64","description":"Timestamp of the last update of the event.","required":true},{"in":"body","name":"body","description":"A JSON array containing the alarms.","required":true,"schema":{"type":"array","title":"Alarms","items":{"$ref":"#/definitions/Alarm"}}}],"responses":{"200":{"description":"A JSON object containing containing the result of the update. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/ChronosCalendarResultResponse"}}}}},"/chronos/availability?action=get":{"get":{"operationId":"getAvailability","tags":["Chronos"],"summary":"Gets the configured availability of the user.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"}],"responses":{"200":{"description":"An object containing all data of the requested availability. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/GetAvailabilityResponse"}}}}},"/chronos/availability?action=set":{"put":{"operationId":"setAvailability","tags":["Chronos"],"summary":"Sets/Overwrites the availability of the user. If an empty payload is sent, then the availability of the user is deleted/unset.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"body","name":"body","description":"A JSON object containing the availability's data.","required":true,"schema":{"type":"object","$ref":"#/definitions/AvailabilityData"}}],"responses":{"200":{"description":"'If the availability of the user was successfully set, then an empty JSON object is returned to indicate that.\nIn case of errors the responsible fields in the response are filled (see [Error handling](#error-handling)).'\n"}}}},"/chronos/itip?action=analyze":{"put":{"operationId":"analyze","tags":["Chronos"],"consumes":["application/json"],"summary":"Analyzes an itip message.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"dataSource","type":"string","description":"The identifier of the data source. Currently only \"com.openexchange.mail.ical\" is valid.","default":"com.openexchange.mail.ical","required":true},{"in":"query","name":"descriptionFormat","type":"string","description":"The desired output fromat. Currently only \"html\" is valid.","default":"html","required":true},{"in":"query","name":"timezone","type":"string","description":"The timezone to show the event in.","default":"UTC","required":false},{"in":"body","name":"body","description":"The data source object.","required":true,"schema":{"$ref":"#/definitions/ConversionDataSource"}}],"responses":{"200":{"description":"An analyze response describing what the ical intends to do and handling suggestions.","schema":{"$ref":"#/definitions/AnalyzeResponse"}}}}},"/chronos/itip?action=accept":{"put":{"operationId":"accept","tags":["Chronos"],"consumes":["application/json"],"summary":"Accepts an itip invitation.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"dataSource","type":"string","description":"The identifier of the data source. Currently only \"com.openexchange.mail.ical\" is valid.","default":"com.openexchange.mail.ical","required":true},{"in":"query","name":"descriptionFormat","type":"string","description":"The desired output fromat. Currently only \"html\" is valid.","default":"html","required":true},{"in":"body","name":"body","description":"The data source object.","required":true,"schema":{"$ref":"#/definitions/ConversionDataSource"}}],"responses":{"200":{"description":"An array of Events that were newly created or changed.","schema":{"$ref":"#/definitions/ActionResponse"}}}}},"/chronos/itip?action=tentative":{"put":{"operationId":"tentative","tags":["Chronos"],"consumes":["application/json"],"summary":"Tentatively accepts an itip invitation.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"dataSource","type":"string","description":"The identifier of the data source. Currently only \"com.openexchange.mail.ical\" is valid.","default":"com.openexchange.mail.ical","required":true},{"in":"query","name":"descriptionFormat","type":"string","description":"The desired output fromat. Currently only \"html\" is valid.","default":"html","required":true},{"in":"body","name":"body","description":"The data source object.","required":true,"schema":{"$ref":"#/definitions/ConversionDataSource"}}],"responses":{"200":{"description":"An array of Events that were newly created or changed.","schema":{"$ref":"#/definitions/ActionResponse"}}}}},"/chronos/itip?action=decline":{"put":{"operationId":"decline","tags":["Chronos"],"consumes":["application/json"],"summary":"Declines an itip invitation.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"dataSource","type":"string","description":"The identifier of the data source. Currently only \"com.openexchange.mail.ical\" is valid.","default":"com.openexchange.mail.ical","required":true},{"in":"query","name":"descriptionFormat","type":"string","description":"The desired output fromat. Currently only \"html\" is valid.","default":"html","required":true},{"in":"body","name":"body","description":"The data source object.","required":true,"schema":{"$ref":"#/definitions/ConversionDataSource"}}],"responses":{"200":{"description":"An array of Events that were newly created or changed.","schema":{"$ref":"#/definitions/ActionResponse"}}}}},"/chronos/itip?action=accept_and_ignore_conflicts":{"put":{"operationId":"accept_and_ignore_conflicts","tags":["Chronos"],"consumes":["application/json"],"summary":"Accepts an itip invitation and ignores conflicts ir possible.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"dataSource","type":"string","description":"The identifier of the data source. Currently only \"com.openexchange.mail.ical\" is valid.","required":true},{"in":"query","name":"descriptionFormat","type":"string","description":"The desired output fromat. Currently only \"html\" is valid.","default":"html","required":true},{"in":"body","name":"body","description":"The data source object.","required":true,"schema":{"$ref":"#/definitions/ConversionDataSource"}}],"responses":{"200":{"description":"An array of Events that were newly created or changed.","schema":{"$ref":"#/definitions/ActionResponse"}}}}},"/chronos/itip?action=update":{"put":{"operationId":"update","tags":["Chronos"],"consumes":["application/json"],"summary":"Updates an event based on an update sent by the organizer or a reply sent to the organizer.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"dataSource","type":"string","description":"The identifier of the data source. Currently only \"com.openexchange.mail.ical\" is valid.","default":"com.openexchange.mail.ical","required":true},{"in":"query","name":"descriptionFormat","type":"string","description":"The desired output fromat. Currently only \"html\" is valid.","default":"html","required":true},{"in":"body","name":"body","description":"The data source object.","required":true,"schema":{"$ref":"#/definitions/ConversionDataSource"}}],"responses":{"200":{"description":"An array of Events that were newly created or changed.","schema":{"$ref":"#/definitions/ActionResponse"}}}}},"/chronos/schedjoules?action=browse":{"get":{"operationId":"browse","tags":["Chronos"],"summary":"Browses a specific page of the SchedJoules calendars catalog. If no 'id' is provided, then the root page is returned.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"id","type":"integer","description":"The identifier of the page.","required":false},{"$ref":"#/parameters/QueryParamChronosSchedJoulesLanguage"},{"in":"query","name":"country","type":"string","description":"The country/location for which to fetch the available catalog pages from the SchedJoules. If none is provided then \nthe country of the user's session will be used. If that one is not available then falls back to 'us'. The 'country' \nparameter is only used for the root page. Otherwise it has no effect.\n","required":false}],"responses":{"200":{"description":"A JSON object containing the result of the browse operation. The structure of the returned JSON object can be found\nhere (https://github.com/schedjoules/calendar-store-api/blob/master/details/pages.md)\n","schema":{"$ref":"#/definitions/BrowseResponse"}}}}},"/chronos/schedjoules?action=countries":{"get":{"operationId":"countries","tags":["Chronos"],"summary":"Retreives a list of all countries that are supported by SchedJoules.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/QueryParamChronosSchedJoulesLanguage"}],"responses":{"200":{"description":"An object containing all supported countries. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/CountriesResponse"}}}}},"/chronos/schedjoules?action=languages":{"get":{"operationId":"languages","tags":["Chronos"],"summary":"Retrieves a list of all supported languages by SchedJoules","parameters":[{"$ref":"#/parameters/gblQueryParamSession"}],"responses":{"200":{"description":"An object containing all supported languages. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/LanguagesResponse"}}}}},"/chronos/schedjoules?action=search":{"get":{"operationId":"search","tags":["Chronos"],"summary":"Performs a full text search with the specified query.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"query","type":"string","description":"The query","required":true},{"$ref":"#/parameters/QueryParamChronosSchedJoulesLanguage"},{"in":"query","name":"maxRows","type":"integer","description":"Specifies the maximum amount of results to return. If not specified, then it will fall back to '20'\n","required":false}],"responses":{"200":{"description":"A JSON object containing the result of the browse operation. The structure of the returned JSON object can be found\nhere (https://github.com/schedjoules/calendar-store-api/blob/master/details/pages.md)\n","schema":{"$ref":"#/definitions/SearchResponse"}}}}},"/onboarding?action=config":{"get":{"operationId":"getClientOnboardingConfig","tags":["Clientonboarding"],"summary":"Retrieves the configuration providing available client on-boarding possibilities for session-associated user","parameters":[{"$ref":"#/parameters/gblQueryParamSession"}],"responses":{"200":{"description":"'The configuration as a JSON object or in case of errors the responsible fields in the\nresponse are filled (see [Error handling](#error-handling)).\n\nThe JSON object consists of five fields: \"platforms\", \"devices\", \"scenarios\", \"actions\" and \"matching\". Each field provides an array of objects.\n\nThe \"platforms\" field lists the available platforms for which a device can receive on-boarding information.\n\nThe \"devices\" field lists the concrete devices, which are supported to receive on-boarding information. Each object mainly provides:\n- A unique identifier for the associated device (e.g. \"apple.iphone\") and a display name\n- Whether the device is enabled; \"false\" to trigger upsell activities\n- A listing of applicable scenarios for the device consisting of composite identifiers (delimited by \"/\" character), which point to an entry from the \"matching\" object\n\nThe \"scenarios\" field provides all available on-boarding scenarios (like installing an app or receive a profile configuration for a built-in application; e.g. Apple Mail). Each scenario also provides:\n- A unique identifier and a display name\n- Whether the scenario is enabled along-side with \"missing_capabilities\" to trigger upsell activities\n- A description text for the user\n\nThe \"actions\" field represents the available actions that can be performed in order to transfer a certain on-boarding information to a device. As of now there are five possible actions for a certain device/scenario combination: \"download\", \"email\", \"display\", \"link\" and \"sms\".\n- \"download\" refers to a simple download that is performed; e.g. a profile configuration file.\n- \"email\" lets the Middleware to send out an E-Mail containing the on-boarding information.\n- \"sms\" lets the Middleware to send out an SMS containing the on-boarding information.\n- \"display\" represents a plain display of on-boarding information for manual setup. Actions of this type provide a composite identifier (delimited by \"/\" character) that also contains the concrete scenario to which that action applies; e.g. \"display/davsync\". Moreover it has a \"data\" field that provides the user-sensitive information to display; e.g. the mail settings.\n- \"link\" hints to an available link that a user can follow; e.g, a link to a certain app held in an app store. Actions of this type provide a composite identifier (delimited by \"/\" character) that also contains the concrete scenario to which that action applies. In addition there is a field for each device providing the exact link and type; e.g. having a link to Apple Appstore for an iPhone device.\n\nThe \"matching\" field is the combination of supported device, scenario and actions combinations. It provides an \"id\" field that contains a composite identifier (delimited by \"/\" character) to refer to the device and scenario combination; e.g. \"apple.ipad/mailsync\". Moreover, there is a listing of available action identifiers (pointing to entries from \"actions\") that are possible being executed in order to let such a device being on-boarded for the referenced scenario.'\n","schema":{"$ref":"#/definitions/ClientOnboardingResponse"}}}}},"/onboarding?action=execute":{"put":{"operationId":"executeClientOnboarding","tags":["Clientonboarding"],"summary":"Performs a certain client on-boarding action for a given device and scenario; e.g. download a profile or send an E-Mail/SMS","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"id","type":"string","description":"The compiste identifier of device and scenario pair; e.g. \"apple.iphone/davsync\"","required":true},{"in":"query","name":"action_id","type":"string","description":"The identifier of action to perform; one of\n- download\n- email\n- sms\n- display or\n- link\n","required":true},{"in":"body","name":"body","description":"An optional JSON object containing additional data for the action.","schema":{"type":"string"}}],"responses":{"200":{"description":"'The appropriate result object or binary data dependent on specified action. In case of errors the responsible fields in the\nresponse are filled (see [Error handling](#error-handling)).'\n","schema":{"$ref":"#/definitions/CommonResponse"}}}}},"/config/{path}":{"get":{"operationId":"getConfigNode","tags":["Config"],"summary":"Gets data of a configuration node.","description":"The configuration is stored in a tree. Each node of the tree has a name and a value.\nThe values of leaf nodes are strings which store the actual configuration data. The\nvalues of inner nodes are defined recursively as objects with one field for each child node.\nThe name and the value of each field is the name and the value of the corresponding child\nnode, respectively.\n","parameters":[{"$ref":"#/parameters/gblPathParamConfigNode"},{"$ref":"#/parameters/gblQueryParamSession"}],"responses":{"200":{"description":"Value of the node specified by path. In case of errors the responsible fields in the response are filled (see [Error handling](#error-handling)).","schema":{"$ref":"#/definitions/ConfigResponse"}}}},"put":{"operationId":"putConfigNode","tags":["Config"],"summary":"Sets the value of a configuration node.","description":"The configuration is stored in a tree. Each node of the tree has a name and a value.\nThe values of leaf nodes are strings which store the actual configuration data. The\nvalues of inner nodes are defined recursively as objects with one field for each child node.\nThe name and the value of each field is the name and the value of the corresponding child\nnode, respectively.\n","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblPathParamConfigNode"},{"$ref":"#/parameters/gblQueryParamSession"},{"in":"body","name":"body","description":"A JSON object containing the value of the config node.","required":true,"schema":{"$ref":"#/definitions/ConfigBody"}}],"responses":{"200":{"description":"In case of errors the responsible fields in the response are filled (see [Error handling](#error-handling)).","schema":{"$ref":"#/definitions/CommonResponse"}}}}},"/config?action=get_property":{"get":{"operationId":"getConfigProperty","tags":["Config"],"summary":"Gets a property of the configuration.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"name","type":"string","description":"The name of the property to return.","required":true}],"responses":{"200":{"description":"A JSON response providing the property's name and its value. In case of errors the responsible fields in the response are filled (see [Error handling](#error-handling)).","schema":{"$ref":"#/definitions/ConfigPropertyResponse"}}}}},"/config?action=set_property":{"put":{"operationId":"setConfigProperty","tags":["Config"],"summary":"Sets a property of the configuration.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"name","type":"string","description":"The name of the property to return.","required":true},{"in":"body","name":"body","description":"A JSON object providing the value to set (Example: {\"value\":\"test123\"}).","required":true,"schema":{"$ref":"#/definitions/ConfigPropertyBody"}}],"responses":{"200":{"description":"A JSON response providing the property's name and its value. In case of errors the responsible fields in the response are filled (see [Error handling](#error-handling)).","schema":{"$ref":"#/definitions/ConfigPropertyResponse"}}}}},"/contacts?action=all":{"get":{"operationId":"getAllContacts","tags":["Contacts"],"summary":"Gets all contacts.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/gblQueryParamContactFolder"},{"$ref":"#/parameters/gblQueryParamContactColumns"},{"in":"query","name":"sort","type":"string","description":"The identifier of a column which determines the sort order of the response. If this parameter is specified, then the parameter order must be also specified.","required":false},{"in":"query","name":"order","type":"string","description":"\"asc\" if the response entities should be sorted in the ascending order, \"desc\" if the response entries should be sorted in the descending order. If this parameter is specified, then the parameter sort must be also specified.","required":false},{"in":"query","name":"admin","type":"boolean","description":"Defines whether the context admin should be included or not. Defaults to `true`.","required":false},{"in":"query","name":"collation","type":"string","description":"Allows you to specify a collation to sort the contacts by. Only supports \"gbk\" and \"gb2312\", not needed for other languages. Parameter sort should be set for this to work.","required":false,"enum":["gbk","gb2312"]}],"responses":{"200":{"description":"A JSON object containing an array with data for all contacts. Each array element describes one contact and\nis itself an array. The elements of each array contain the information specified by the corresponding\nidentifiers in the `columns` parameter. In case of errors the responsible fields in the response are\nfilled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/ContactsResponse"}}}}},"/contacts?action=list":{"put":{"operationId":"getContactList","tags":["Contacts"],"summary":"Gets a list of contacts.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/gblQueryParamContactColumns"},{"in":"body","name":"body","description":"A JSON array of JSON objects with the id and folder of the contacts.","required":true,"schema":{"type":"array","items":{"$ref":"#/definitions/ContactListElement"}}}],"responses":{"200":{"description":"A JSON object containing an array with data for the requested contacts. Each array element describes one contact and\nis itself an array. The elements of each array contain the information specified by the corresponding\nidentifiers in the `columns` parameter. In case of errors the responsible fields in the response are\nfilled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/ContactsResponse"}}}}},"/contacts?action=listuser":{"put":{"operationId":"getContactListByUsers","tags":["Contacts"],"summary":"Gets a list of users.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/gblQueryParamContactColumns"},{"in":"body","name":"body","description":"A JSON array with user IDs.","required":true,"schema":{"type":"array","items":{"type":"integer"}}}],"responses":{"200":{"description":"A JSON object containing an array with contact data. Each array element describes one contact and\nis itself an array. The elements of each array contain the information specified by the corresponding\nidentifiers in the `columns` parameter. In case of errors the responsible fields in the response are\nfilled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/ContactsResponse"}}}}},"/contacts?action=updates":{"get":{"operationId":"getContactUpdates","tags":["Contacts"],"summary":"Gets updated contacts.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/gblQueryParamContactFolder"},{"$ref":"#/parameters/gblQueryParamContactColumns"},{"in":"query","name":"timestamp","type":"integer","format":"int64","description":"Timestamp of the last update of the requested contacts.","required":true},{"in":"query","name":"ignore","type":"string","description":"Which kinds of updates should be ignored. Omit this parameter or set it to \"deleted\" to not have deleted tasks identifier in the response. Set this parameter to `false` and the response contains deleted tasks identifier.","required":false,"enum":["deleted"]},{"in":"query","name":"sort","type":"string","description":"The identifier of a column which determines the sort order of the response. If this parameter is specified, then the parameter order must be also specified.","required":false},{"in":"query","name":"order","type":"string","description":"\"asc\" if the response entities should be sorted in the ascending order, \"desc\" if the response entries should be sorted in the descending order. If this parameter is specified, then the parameter sort must be also specified.","required":false}],"responses":{"200":{"description":"An array with new, modified and deleted contacts. New and modified contacts are represented by arrays.\nThe elements of each array contain the information specified by the corresponding identifiers in the\n`columns` parameter. Deleted contacts (should the ignore parameter be ever implemented) would be identified\nby their object IDs as integers, without being part of a nested array. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/ContactUpdatesResponse"}}}}},"/contacts?action=get":{"get":{"operationId":"getContact","tags":["Contacts"],"summary":"Gets a contact.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"id","type":"string","description":"Object ID of the requested contact.","required":true},{"$ref":"#/parameters/gblQueryParamContactFolder"}],"responses":{"200":{"description":"An object containing all data of the requested contact. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/ContactResponse"}}}}},"/contacts?action=getuser":{"get":{"operationId":"getContactByUser","tags":["Contacts"],"summary":"Gets a contact by user ID.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"id","type":"integer","description":"User ID (not Object ID) of the requested user.","required":true}],"responses":{"200":{"description":"An object containing all data of the requested contact. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/ContactResponse"}}}}},"/contacts?action=update":{"put":{"operationId":"updateContact","tags":["Contacts"],"summary":"Updates a contact.","description":"Updates a contact's data. This request cannot change or add contact images. Therefore it\nis necessary to use the `POST` method.\n","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/gblQueryParamContactFolder"},{"in":"query","name":"id","type":"string","description":"Object ID of the contact that shall be updated.","required":true},{"in":"query","name":"timestamp","type":"integer","format":"int64","description":"Timestamp of the updated contact. If the contact was modified after the specified timestamp, then the update must fail.","required":true},{"in":"body","name":"body","description":"A JSON object containing the contact's data. Only modified fields must be specified. To remove some contact image send the image attribute set to null.","required":true,"schema":{"$ref":"#/definitions/ContactData"}}],"responses":{"200":{"description":"A JSON object with a timestamp. In case of errors the responsible fields in the response are\nfilled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/ContactUpdateResponse"}}}},"post":{"operationId":"updateContactAdvanced","tags":["Contacts"],"summary":"Updates a contact.","description":"Updates a contact's data and images. The normal request body must be placed as form-data using the\ncontent-type `multipart/form-data`. The form field `json` contains the contact's data while the image file\nmust be placed in a file field named `file` (see also [File uploads](#file-uploads)).\n","consumes":["multipart/form-data"],"produces":["text/html"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/gblQueryParamContactFolder"},{"in":"query","name":"id","type":"string","description":"Object ID of the contact that shall be updated.","required":true},{"in":"query","name":"timestamp","type":"integer","format":"int64","description":"Timestamp of the updated contact. If the contact was modified after the specified timestamp, then the update must fail.","required":true},{"in":"formData","name":"json","type":"string","description":"Represents the normal request body as JSON string containing the contact data as described in [ContactData](#/definitions/ContactData) model. Only modified fields must be specified but at least \"{}\".","required":true,"default":"{}"},{"in":"formData","name":"file","type":"file","description":"The image file.","required":true}],"responses":{"200":{"description":"A HTML page as described in [File uploads](#file-uploads) containing the object ID of the contact or errors if some occurred.\n","schema":{"type":"string"}}}}},"/contacts?action=new":{"put":{"operationId":"createContact","tags":["Contacts"],"summary":"Creates a contact.","description":"Creates a new contact. This request cannot add contact images. Therefor it\nis necessary to use the `POST` method.\n","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"body","name":"body","description":"A JSON object containing the contact's data. The field id is not included.","required":true,"schema":{"$ref":"#/definitions/ContactData"}}],"responses":{"200":{"description":"A JSON object containing the ID of the newly created contact. In case of errors the responsible fields in the response are\nfilled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/ContactUpdateResponse"}}}},"post":{"operationId":"createContactAdvanced","tags":["Contacts"],"summary":"Creates a contact.","description":"Creates a new contact with contact images. The normal request body must be placed as form-data using the\ncontent-type `multipart/form-data`. The form field `json` contains the contact's data while the image file\nmust be placed in a file field named `file` (see also [File uploads](#file-uploads)).\n","consumes":["multipart/form-data"],"produces":["text/html"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"formData","name":"json","type":"string","description":"Represents the normal request body as JSON string containing the contact data as described in the ContactData (see [createContact](#/Contacts/createContact) model.","required":true},{"in":"formData","name":"file","type":"file","description":"The image file.","required":true}],"responses":{"200":{"description":"A HTML page as described in [File uploads](#file-uploads) containing the object ID of the contact or errors if some occurred.\n","schema":{"type":"string"}}}}},"/contacts?action=delete":{"put":{"operationId":"deleteContacts","tags":["Contacts"],"summary":"Deletes contacts.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"in":"query","name":"timestamp","type":"integer","format":"int64","description":"Timestamp of the last update of the deleted contacts.","required":true},{"in":"body","name":"body","description":"A JSON array of JSON objects with the id and folder of the contacts.","required":true,"schema":{"type":"array","items":{"$ref":"#/definitions/ContactListElement"}}}],"responses":{"200":{"description":"A JSON array with object IDs of contacts which were modified after the specified timestamp and were therefore not deleted.\nIn case of errors the responsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/ContactDeletionsResponse"}}}}},"/contacts?action=search":{"put":{"operationId":"searchContacts","tags":["Contacts"],"summary":"Search for contacts.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/gblQueryParamContactColumns"},{"in":"query","name":"sort","type":"string","description":"The identifier of a column which determines the sort order of the response. If this parameter is specified , then the parameter order must be also specified.","required":false},{"in":"query","name":"order","type":"string","description":"\"asc\" if the response entires should be sorted in the ascending order, \"desc\" if the response entries should be sorted in the descending order. If this parameter is specified, then the parameter sort must be also specified.","required":false},{"in":"query","name":"collation","type":"string","description":"Allows you to specify a collation to sort the contacts by. Only supports \"gbk\" and \"gb2312\", not needed for other languages. Parameter sort should be set for this to work.","required":false,"enum":["gbk","gb2312"]},{"in":"body","name":"body","description":"A JSON object containing search parameters.","required":true,"schema":{"$ref":"#/definitions/ContactSearchBody"}}],"responses":{"200":{"description":"A JSON object containing an array with matching contacts. Contacts are represented by arrays. The elements of each array contain the\ninformation specified by the corresponding identifiers in the `columns` parameter. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/ContactsResponse"}}}}},"/contacts?action=advancedSearch":{"put":{"operationId":"searchContactsAdvanced","tags":["Contacts"],"summary":"Search for contacts by filter.","consumes":["application/json"],"parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/gblQueryParamContactColumns"},{"in":"query","name":"sort","type":"string","description":"The identifier of a column which determines the sort order of the response. If this parameter is specified , then the parameter order must be also specified.","required":false},{"in":"query","name":"order","type":"string","description":"\"asc\" if the response entires should be sorted in the ascending order, \"desc\" if the response entries should be sorted in the descending order. If this parameter is specified, then the parameter sort must be also specified.","required":false},{"in":"query","name":"collation","type":"string","description":"Allows you to specify a collation to sort the contacts by. Only supports \"gbk\" and \"gb2312\", not needed for other languages. Parameter sort should be set for this to work.","required":false,"enum":["gbk","gb2312"]},{"in":"query","name":"admin","type":"boolean","description":"Specifies whether to include the contact representing the admin in the result or not. Defaults to `true`.","required":false},{"in":"body","name":"body","description":"A JSON object describing the search term as introducted in [Advanced search](https://documentation.open-xchange.com/latest/middleware/http_api/5_advanced_search.html). Example:\n`{\"filter\":[\"and\",[\"=\", {\"field\":\"last_name\"},\"Mustermann\"],[\"=\",{\"field\":\"first_name\"},\"Max\"]]}`\nwhich represents 'last_name = \"Mustermann\" AND first_name = \"Max\"'. Valid fields are the ones specified in [Contact data](#/definitions/ContactData) model.\n","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"A JSON object containing an array with matching contacts. Contacts are represented by arrays. The elements of each array contain the\ninformation specified by the corresponding identifiers in the `columns` parameter. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/ContactsResponse"}}}}},"/contacts?action=anniversaries":{"get":{"operationId":"searchContactsByAnniversary","tags":["Contacts"],"summary":"Search for contacts by anniversary.","description":"Finds contacts whose anniversary falls into a specified time range.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/gblQueryParamContactColumns"},{"in":"query","name":"start","type":"integer","format":"int64","description":"The lower (inclusive) limit of the requested time range.","required":true},{"in":"query","name":"end","type":"integer","format":"int64","description":"The upper (exclusive) limit of the requested time range.","required":true},{"in":"query","name":"folder","type":"string","description":"Object ID of the parent folder that is searched. If not set, all visible folders are used.","required":false},{"in":"query","name":"sort","type":"string","description":"The identifier of a column which determines the sort order of the response. If this parameter is specified , then the parameter order must be also specified.","required":false},{"in":"query","name":"order","type":"string","description":"\"asc\" if the response entires should be sorted in the ascending order, \"desc\" if the response entries should be sorted in the descending order. If this parameter is specified, then the parameter sort must be also specified.","required":false},{"in":"query","name":"collation","type":"string","description":"Allows you to specify a collation to sort the contacts by. Only supports \"gbk\" and \"gb2312\", not needed for other languages. Parameter sort should be set for this to work.","required":false,"enum":["gbk","gb2312"]}],"responses":{"200":{"description":"A JSON object containing an array with matching contacts. Contacts are represented by arrays. The elements of each array contain the\ninformation specified by the corresponding identifiers in the `columns` parameter. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/ContactsResponse"}}}}},"/contacts?action=birthdays":{"get":{"operationId":"searchContactsByBirthday","tags":["Contacts"],"summary":"Search for contacts by birthday.","description":"Finds contacts whose birthday falls into a specified time range.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/gblQueryParamContactColumns"},{"in":"query","name":"start","type":"integer","format":"int64","description":"The lower (inclusive) limit of the requested time range.","required":true},{"in":"query","name":"end","type":"integer","format":"int64","description":"The upper (exclusive) limit of the requested time range.","required":true},{"in":"query","name":"folder","type":"string","description":"Object ID of the parent folder that is searched. If not set, all visible folders are used.","required":false},{"in":"query","name":"sort","type":"string","description":"The identifier of a column which determines the sort order of the response. If this parameter is specified , then the parameter order must be also specified.","required":false},{"in":"query","name":"order","type":"string","description":"\"asc\" if the response entires should be sorted in the ascending order, \"desc\" if the response entries should be sorted in the descending order. If this parameter is specified, then the parameter sort must be also specified.","required":false},{"in":"query","name":"collation","type":"string","description":"Allows you to specify a collation to sort the contacts by. Only supports \"gbk\" and \"gb2312\", not needed for other languages. Parameter sort should be set for this to work.","required":false,"enum":["gbk","gb2312"]}],"responses":{"200":{"description":"A JSON object containing an array with matching contacts. Contacts are represented by arrays. The elements of each array contain the\ninformation specified by the corresponding identifiers in the `columns` parameter. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/ContactsResponse"}}}}},"/contacts?action=autocomplete":{"get":{"operationId":"doAutoCompleteContacts","tags":["Contacts"],"summary":"Auto-complete contacts.","description":"Finds contacts based on a prefix, usually used to auto-complete e-mail recipients while the user is typing.","parameters":[{"$ref":"#/parameters/gblQueryParamSession"},{"$ref":"#/parameters/gblQueryParamContactColumns"},{"in":"query","name":"query","type":"string","description":"The query to search for.","required":true},{"in":"query","name":"email","type":"boolean","description":"Whether to only include contacts with at least one e-mail address. Defaults to `true`.","required":false,"default":true},{"in":"query","name":"folder","type":"string","description":"Object ID of the parent folder that is searched. If not set, all visible folders are used.","required":false},{"in":"query","name":"sort","type":"string","description":"The identifier of a column which determines the sort order of the response. If this parameter is specified, then the parameter order must be also specified. If this parameter is missing, response is sorted by a user-specific use count of contacts, ID of contacts' parent folder and display name.","required":false},{"in":"query","name":"order","type":"string","description":"\"asc\" if the response entires should be sorted in the ascending order, \"desc\" if the response entries should be sorted in the descending order. If this parameter is specified, then the parameter sort must be also specified.","required":false},{"in":"query","name":"collation","type":"string","description":"Allows you to specify a collation to sort the contacts by. Only supports \"gbk\" and \"gb2312\", not needed for other languages. Parameter sort should be set for this to work.","required":false,"enum":["gbk","gb2312"]},{"in":"query","name":"left_hand_limit","type":"integer","description":"A positive integer number to specify the \"left-hand\" limit of the range to return.","required":false},{"in":"query","name":"right_hand_limit","type":"integer","description":"A positive integer number to specify the \"right-hand\" limit of the range to return.","required":false}],"responses":{"200":{"description":"A JSON object containing the contact data. Contacts are represented by arrays. The elements of each array contain the\ninformation specified by the corresponding identifiers in the `columns` parameter. In case of errors the\nresponsible fields in the response are filled (see [Error handling](#error-handling)).\n","schema":{"$ref":"#/definitions/ContactsResponse"}}}}},"/conversion?action=convert":{"put":{"operationId":"convertData","tags":["Conversion"],"summary":"Converts data from source using a specific data handler.","description":"#### Saving an iCal email attachment\nIf an iCal file is attached to an email, its content can be saved as appointments and tasks into given\ncalendar and task folder. If the fields \"com.openexchange.groupware.calendar.confirmstatus\" and\n\"com.openexchange.groupware.calendar.confirmmessage\" are set, the data handler inserts the appointment with\nthe given status for the user, if the appointment does not exist. If it is already existing, the handler\njust updates the participant status.\n```json\n{\n \"datasource\": {\n \"identifier\":\"com.openexchange.mail.ical\",\n \"args\":\n [\n {\"com.openexchange.mail.conversion.fullname\":\"new_path
- The new path of the folder in case of a trash operation.path
- The old path.hasFailed
- A boolean flag indicating that the delete operation has failed.isTrashed
- A boolean flag indicating that the folder has been trashed.isSuppoprted
- A boolean flag indicating that the folder storage supports trashing.