openapi: 3.2.0 info: title: wazo-confd Schedules API description: "Confd exposes an API for managing core resources on a Wazo server such as users, extensions, devices, voicemails, queues, etc. Resources can be associated together to provide additional functionality. For example: By associating a voicemail with a user, calls will automatically fallback on to the voicemail when the user cannot answer.\n\nImplementation notes\n====================\n\nErrors\n------\n\nResponses containing errors will have a status code in the 400 or 500 class. A list of error messages will be returned in the body of the response as a JSON-encoded array:\n\n~~~\n[\n \"Input error - User not found\",\n \"Resource error - User not associated to a line\"\n]\n~~~\n\n\nUpdating resources via PUT\n--------------------------\n\nWhen updating a resource, all fields become optional. In other words, only values that have been changed need to be sent to the server. Please note that this behavior may change in future versions of the API." version: '1.1' license: name: GPL v3 url: http://www.gnu.org/licenses/gpl.txt contact: name: Wazo Dev Team url: https://wazo-platform.org/ email: dev@wazo.community x-logo: url: https://wazo-platform.org/images/logo-black.svg backgroundColor: '#FAFAFA' altText: Wazo Logo servers: - url: /1.1 security: - wazo_auth_token: [] tags: - name: schedules paths: /groups/{group_uuid}/schedules/{schedule_id}: put: operationId: associate_group_schedule summary: Associate group and schedule description: '**Required ACL:** `confd.groups.{group_uuid}.schedules.{schedule_id}.update`' tags: - schedules parameters: - $ref: '#/components/parameters/tenantuuid' - $ref: '#/components/parameters/groupuuid' - $ref: '#/components/parameters/scheduleid' responses: '204': description: Group and Schedule associated '400': $ref: '#/components/responses/GenericError' '404': $ref: '#/components/responses/NotFoundError' delete: operationId: dissociate_group_schedule summary: Dissociate group and schedule description: '**Required ACL:** `confd.groups.{group_uuid}.schedules.{schedule_id}.delete`' tags: - schedules parameters: - $ref: '#/components/parameters/tenantuuid' - $ref: '#/components/parameters/groupuuid' - $ref: '#/components/parameters/scheduleid' responses: '204': description: Group and Schedule dissociated '400': $ref: '#/components/responses/GenericError' '404': $ref: '#/components/responses/NotFoundError' /incalls/{incall_id}/schedules/{schedule_id}: put: operationId: associate_incall_schedule summary: Associate incall and schedule description: '**Required ACL:** `confd.incalls.{incall_id}.schedules.{schedule_id}.update`' tags: - schedules parameters: - $ref: '#/components/parameters/tenantuuid' - $ref: '#/components/parameters/incallid' - $ref: '#/components/parameters/scheduleid' responses: '204': description: Incall and Schedule associated '400': $ref: '#/components/responses/GenericError' '404': $ref: '#/components/responses/NotFoundError' delete: operationId: dissociate_incall_schedule summary: Dissociate incall and schedule description: '**Required ACL:** `confd.incalls.{incall_id}.schedules.{schedule_id}.delete`' tags: - schedules parameters: - $ref: '#/components/parameters/tenantuuid' - $ref: '#/components/parameters/incallid' - $ref: '#/components/parameters/scheduleid' responses: '204': description: Incall and Schedule dissociated '400': $ref: '#/components/responses/GenericError' '404': $ref: '#/components/responses/NotFoundError' /outcalls/{outcall_id}/schedules/{schedule_id}: put: operationId: associate_outcall_schedule summary: Associate outcall and schedule description: '**Required ACL:** `confd.outcalls.{outcall_id}.schedules.{schedule_id}.update`' tags: - schedules parameters: - $ref: '#/components/parameters/tenantuuid' - $ref: '#/components/parameters/outcallid' - $ref: '#/components/parameters/scheduleid' responses: '204': description: Outcall and Schedule associated '400': $ref: '#/components/responses/GenericError' '404': $ref: '#/components/responses/NotFoundError' delete: operationId: dissociate_outcall_schedule summary: Dissociate outcall and schedule description: '**Required ACL:** `confd.outcalls.{outcall_id}.schedules.{schedule_id}.delete`' tags: - schedules parameters: - $ref: '#/components/parameters/tenantuuid' - $ref: '#/components/parameters/outcallid' - $ref: '#/components/parameters/scheduleid' responses: '204': description: Outcall and Schedule dissociated '400': $ref: '#/components/responses/GenericError' '404': $ref: '#/components/responses/NotFoundError' /queues/{queue_id}/schedules/{schedule_id}: put: operationId: associate_queue_schedule summary: Associate queue and schedule description: '**Required ACL:** `confd.queues.{queue_id}.schedules.{schedule_id}.update`' tags: - schedules parameters: - $ref: '#/components/parameters/tenantuuid' - $ref: '#/components/parameters/queueid' - $ref: '#/components/parameters/scheduleid' responses: '204': description: Queue and Schedule associated '400': $ref: '#/components/responses/GenericError' '404': $ref: '#/components/responses/NotFoundError' delete: operationId: dissociate_queue_schedule summary: Dissociate queue and schedule description: '**Required ACL:** `confd.queues.{queue_id}.schedules.{schedule_id}.delete`' tags: - schedules parameters: - $ref: '#/components/parameters/tenantuuid' - $ref: '#/components/parameters/queueid' - $ref: '#/components/parameters/scheduleid' responses: '204': description: Queue and Schedule dissociated '400': $ref: '#/components/responses/GenericError' '404': $ref: '#/components/responses/NotFoundError' /schedules: get: operationId: list_schedules summary: List schedule description: '**Required ACL:** `confd.schedules.read`' tags: - schedules parameters: - $ref: '#/components/parameters/tenantuuid' - $ref: '#/components/parameters/recurse' - $ref: '#/components/parameters/order' - $ref: '#/components/parameters/direction' - $ref: '#/components/parameters/limit' - $ref: '#/components/parameters/offset' - $ref: '#/components/parameters/search' responses: '200': description: Schedules list content: application/json: schema: $ref: '#/components/schemas/ScheduleItems' post: operationId: create_schedule summary: Create schedule description: '**Required ACL:** `confd.schedules.create`' tags: - schedules parameters: - $ref: '#/components/parameters/tenantuuid' responses: '201': description: Schedule created content: application/json: schema: $ref: '#/components/schemas/Schedule' '400': $ref: '#/components/responses/CreateError' requestBody: content: application/json: schema: $ref: '#/components/schemas/Schedule' description: Schedule to create required: true /schedules/{schedule_id}: get: operationId: get_schedule summary: Get schedule description: '**Required ACL:** `confd.schedules.{schedule_id}.read`' tags: - schedules parameters: - $ref: '#/components/parameters/tenantuuid' - $ref: '#/components/parameters/scheduleid' responses: '200': description: Schedule content: application/json: schema: $ref: '#/components/schemas/Schedule' '404': $ref: '#/components/responses/NotFoundError' put: operationId: update_schedule summary: Update schedule description: '**Required ACL:** `confd.schedules.{schedule_id}.update`' tags: - schedules parameters: - $ref: '#/components/parameters/tenantuuid' - $ref: '#/components/parameters/scheduleid' responses: '204': $ref: '#/components/responses/ResourceUpdated' '400': $ref: '#/components/responses/UpdateError' '404': $ref: '#/components/responses/NotFoundError' requestBody: content: application/json: schema: $ref: '#/components/schemas/Schedule' required: true delete: operationId: delete_schedule summary: Delete schedule description: '**Required ACL:** `confd.schedules.{schedule_id}.delete`' tags: - schedules parameters: - $ref: '#/components/parameters/tenantuuid' - $ref: '#/components/parameters/scheduleid' responses: '204': $ref: '#/components/responses/ResourceDeleted' '400': $ref: '#/components/responses/DeleteError' '404': $ref: '#/components/responses/NotFoundError' /users/{user_id}/schedules/{schedule_id}: put: operationId: associate_user_schedule summary: Associate user and schedule description: '**Required ACL:** `confd.users.{user_id}.schedules.{schedule_id}.update`' tags: - schedules parameters: - $ref: '#/components/parameters/tenantuuid' - $ref: '#/components/parameters/useriduuid' - $ref: '#/components/parameters/scheduleid' responses: '204': description: User and Schedule associated '400': $ref: '#/components/responses/GenericError' '404': $ref: '#/components/responses/NotFoundError' delete: operationId: dissociate_user_schedule summary: Dissociate user and schedule description: '**Required ACL:** `confd.users.{user_id}.schedules.{schedule_id}.delete`' tags: - schedules parameters: - $ref: '#/components/parameters/tenantuuid' - $ref: '#/components/parameters/useriduuid' - $ref: '#/components/parameters/scheduleid' responses: '204': description: User and Schedule dissociated '400': $ref: '#/components/responses/GenericError' '404': $ref: '#/components/responses/NotFoundError' components: schemas: ScheduleRelationIncalls: properties: incalls: type: array readOnly: true items: $ref: '#/components/schemas/IncallRelationBase' DestinationApplicationDISA: title: DestinationApplicationDISA allOf: - $ref: '#/components/schemas/DestinationApplication' - properties: application: type: string description: MUST be 'disa' context: type: integer description: The context of the application pin: type: string description: the pin of the application required: - application - context DestinationApplicationDirectory: title: DestinationApplicationDirectory allOf: - $ref: '#/components/schemas/DestinationApplication' - properties: application: type: string description: MUST be 'directory' context: type: integer description: The context of the application required: - application - context ScheduleExceptionalPeriod: allOf: - $ref: '#/components/schemas/ScheduleOpenPeriod' - properties: destination: description: The destination to redirect the caller to when the given period is satisfied $ref: '#/components/schemas/DestinationType' ScheduleOpenPeriod: properties: hours_start: type: string description: The start hour of the period. Format hours_end: type: string description: The end hour of the period. Format week_days: description: The week days of the period. Week day start with Monday(1) and end with Sunday(7) type: array items: type: integer month_days: description: The month days of the period. type: array items: type: integer months: description: The months of the period. Month start with January(1) and end with December(12) type: array items: type: integer DestinationUser: title: DestinationUser properties: type: type: string description: MUST be 'user' user_id: type: integer description: The id of the user ring_time: type: number format: float moh_uuid: type: string description: The UUID of the music on hold to use instead of a ringback tone. required: - type - user_id DestinationOutcall: title: DestinationOutcall properties: type: type: string description: MUST be 'outcall' exten: type: string outcall_id: type: integer description: The id of the outcall required: - type - exten - outcall_id ScheduleRelationOutcalls: properties: incalls: type: array readOnly: true items: $ref: '#/components/schemas/OutcallRelationBase' Schedule: title: Schedule allOf: - $ref: '#/components/schemas/ScheduleRelationBase' - properties: timezone: type: string description: The number of the schedule closed_destination: description: The destination to redirect the caller to when the schedule is not opened $ref: '#/components/schemas/DestinationType' open_periods: type: array items: $ref: '#/components/schemas/ScheduleOpenPeriod' exceptional_periods: type: array items: $ref: '#/components/schemas/ScheduleExceptionalPeriod' enabled: type: boolean default: true required: - closed_destination - $ref: '#/components/schemas/ScheduleRelationIncalls' - $ref: '#/components/schemas/ScheduleRelationGroups' - $ref: '#/components/schemas/ScheduleRelationQueues' - $ref: '#/components/schemas/ScheduleRelationUsers' - $ref: '#/components/schemas/ScheduleRelationOutcalls' DestinationHangup: title: DestinationHangup properties: type: type: string description: MUST be 'hangup' required: - type DestinationQueue: title: DestinationQueue properties: type: type: string description: MUST be 'queue' queue_id: type: integer description: The id of the queue ring_time: type: number format: float skill_rule_id: type: integer description: The id of the skill rule skill_rule_variables: type: object description: key-value where key represents the variable of the skill rule and value represents a value required: - type - queue_id DestinationConference: title: DestinationConference properties: type: type: string description: MUST be 'conference' conference_id: type: integer description: The id of the conference required: - type - conference_id DestinationGroup: title: DestinationGroup properties: type: type: string description: MUST be 'group' group_id: type: integer description: The id of the group ring_time: type: number format: float required: - type - group_id DestinationHangupNormal: title: DestinationHangupNormal allOf: - $ref: '#/components/schemas/DestinationHangup' - properties: cause: type: string description: MUST be 'normal' required: - cause DestinationApplicationVoicemail: title: DestinationApplicationVoicemail allOf: - $ref: '#/components/schemas/DestinationApplication' - properties: application: type: string description: MUST be 'voicemail' context: type: integer description: The context of the application required: - application - context DestinationHangupBusy: title: DestinationHangupBusy allOf: - $ref: '#/components/schemas/DestinationHangup' - properties: cause: type: string description: MUST be 'busy' timeout: type: integer description: The timeout of the hangup required: - cause DestinationHangupCause: title: DestinationHangupCause properties: busy: $ref: '#/components/schemas/DestinationHangupBusy' congestion: $ref: '#/components/schemas/DestinationHangupCongestion' normal: $ref: '#/components/schemas/DestinationHangupNormal' DestinationApplication: title: DestinationApplication properties: type: type: string description: MUST be 'application' required: - type DestinationType: title: DestinationType properties: application: $ref: '#/components/schemas/DestinationApplicationApplication' conference: $ref: '#/components/schemas/DestinationConference' custom: $ref: '#/components/schemas/DestinationCustom' extension: $ref: '#/components/schemas/DestinationExtension' group: $ref: '#/components/schemas/DestinationGroup' hangup: $ref: '#/components/schemas/DestinationHangupCause' ivr: $ref: '#/components/schemas/DestinationIVR' none: $ref: '#/components/schemas/DestinationNone' outcall: $ref: '#/components/schemas/DestinationOutcall' queue: $ref: '#/components/schemas/DestinationQueue' sound: $ref: '#/components/schemas/DestinationSound' switchboard: $ref: '#/components/schemas/DestinationSwitchboard' user: $ref: '#/components/schemas/DestinationUser' voicemail: $ref: '#/components/schemas/DestinationVoicemail' ScheduleRelationQueues: properties: incalls: type: array readOnly: true items: $ref: '#/components/schemas/QueueRelationBase' DestinationCustom: title: DestinationCustom properties: type: type: string description: MUST be 'custom' command: type: string description: The command to execute required: - type - command OutcallRelationBase: properties: id: type: integer readOnly: true description: The id of the outgoing call name: type: string description: The name of the outcall QueueRelationBase: properties: id: type: integer readOnly: true description: The id of the queue name: type: string description: The name of the queue. Cannot be modified label: type: string description: The label of the queue DestinationIVR: title: DestinationIVR properties: type: type: string description: MUST be 'ivr' ivr_id: type: integer description: The id of the IVR required: - type - ivr_id DestinationSound: title: DestinationSound properties: type: type: string description: MUST be 'sound' filename: type: string description: The filename of the sound. The file MUST be imported by to webi in the playback directory. The extension of file SHOULD be not present. skip: type: boolean description: Do not play this sound if the call is not answered no_answer: type: boolean description: Play this sound without answering the call required: - type - filename DestinationHangupCongestion: title: DestinationHangupCongestion allOf: - $ref: '#/components/schemas/DestinationHangup' - properties: cause: type: string description: MUST be 'congestion' timeout: type: integer description: The timeout of the hangup required: - cause DestinationApplicationCustom: title: DestinationApplicationCustom allOf: - $ref: '#/components/schemas/DestinationApplication' - properties: application: type: string description: MUST be 'custom' application_uuid: type: string description: The UUID of the application. required: - application - application_uuid ScheduleRelationGroups: properties: incalls: type: array readOnly: true items: $ref: '#/components/schemas/GroupRelationBase' DestinationVoicemail: title: DestinationVoicemail properties: type: type: string description: MUST be 'voicemail' voicemail_id: type: integer description: The id of the voicemail skip_instructions: type: boolean description: Skip the playback of instructions for leaving a message greeting: type: string enum: - busy - unavailable description: Play the specified greeting required: - type - voicemail_id DestinationApplicationApplication: title: DestinationApplicationApplication properties: callback_disa: $ref: '#/components/schemas/DestinationApplicationCallbackDISA' custom: $ref: '#/components/schemas/DestinationApplicationCustom' directory: $ref: '#/components/schemas/DestinationApplicationDirectory' disa: $ref: '#/components/schemas/DestinationApplicationDISA' fax_to_mail: $ref: '#/components/schemas/DestinationApplicationFaxToMail' voicemail: $ref: '#/components/schemas/DestinationApplicationVoicemail' DestinationSwitchboard: title: DestinationSwitchboard properties: type: type: string description: MUST be 'switchboard' switchboard_uuid: type: string description: The UUID of the switchboard. required: - type - switchboard_uuid ScheduleRelationBase: properties: id: type: integer readOnly: true tenant_uuid: type: string description: The UUID of the tenant readOnly: true name: type: string description: The name to identify the schedule DestinationApplicationCallbackDISA: title: DestinationApplicationCallbackDISA allOf: - $ref: '#/components/schemas/DestinationApplication' - properties: application: type: string description: MUST be 'callback_disa' context: type: integer description: The context of the application pin: type: string description: the pin of the application required: - application - context GroupRelationBase: properties: name: type: string description: The name of the group readOnly: true id: type: integer readOnly: true description: The id of the group uuid: type: string description: Group UUID. This ID is globally unique across multiple Wazo instances readOnly: true DestinationApplicationFaxToMail: title: DestinationApplicationFaxToMail allOf: - $ref: '#/components/schemas/DestinationApplication' - properties: application: type: string description: MUST be 'fax_to_mail' email: type: string description: The email of the application required: - application - email ScheduleRelationUsers: properties: incalls: type: array readOnly: true items: $ref: '#/components/schemas/UserRelationBase' IncallRelationBase: title: IncallRelation properties: id: type: integer readOnly: true description: The id of the incoming call DestinationNone: title: DestinationNone properties: type: type: string description: MUST be 'none' required: - type UserRelationBase: properties: uuid: type: string description: User UUID. This ID is globally unique across multiple Wazo instances readOnly: true firstname: type: string description: User firstname lastname: type: string description: User lastname Error: type: array items: type: string DestinationExtension: title: DestinationExtension properties: type: type: string description: MUST be 'extension' exten: type: string context: type: string description: Context of the extension required: - type - exten - context ScheduleItems: title: ScheduleItems properties: items: type: array items: $ref: '#/components/schemas/Schedule' total: type: integer required: - total responses: NotFoundError: description: The resource requested was not found on the server content: application/json: schema: $ref: '#/components/schemas/Error' ResourceDeleted: description: Resource was deleted successfully CreateError: description: An error occurred when creating the resource content: application/json: schema: $ref: '#/components/schemas/Error' GenericError: description: An error occurred during the operation content: application/json: schema: $ref: '#/components/schemas/Error' ResourceUpdated: description: Resource was updated successfully UpdateError: description: An error occurred when updating the resource content: application/json: schema: $ref: '#/components/schemas/Error' DeleteError: description: An error occurred when deleting the resource content: application/json: schema: $ref: '#/components/schemas/Error' parameters: queueid: required: true name: queue_id in: path description: Queue’s ID schema: type: integer outcallid: required: true name: outcall_id in: path description: Outgoing call's ID schema: type: integer tenantuuid: name: Wazo-Tenant in: header description: The tenant's UUID, defining the ownership of a given resource. required: false schema: type: string groupuuid: required: true name: group_uuid in: path description: the group's UUID schema: type: string useriduuid: required: true name: user_id in: path description: the user's ID or UUID schema: type: string offset: required: false name: offset in: query description: Number of items to skip over in the list. Useful for pagination. schema: type: integer incallid: required: true name: incall_id in: path description: Incoming call's ID schema: type: integer order: required: false name: order in: query description: Name of the field to use for sorting the list of items returned. schema: type: string scheduleid: required: true name: schedule_id in: path description: Schedule's ID schema: type: integer direction: required: false name: direction in: query description: Sort list of items in 'asc' (ascending) or 'desc' (descending) order schema: type: string enum: - asc - desc recurse: name: recurse in: query description: Should the query include sub-tenants required: false schema: type: boolean default: false search: required: false name: search in: query description: Search term for filtering a list of items. Only items with a field containing the search term will be returned. schema: type: string limit: required: false name: limit in: query description: Maximum number of items to return in the list schema: type: integer securitySchemes: wazo_auth_token: type: apiKey name: X-Auth-Token in: header x-xivo-port: 9486 x-xivo-name: confd x-apievangelist-source: harvested_from: https://github.com/wazo-platform/wazo-confd assembly: base plugin api.yml deep-merged with all plugin api.yml fragments, reproducing what the running service serves at /api/confd/1.1/api/api.yml (see wazo_confd/plugins/api/http.py — xivo.chain_map.ChainMap) spec_version: Swagger 2.0 (as published by Wazo) harvested: '2026-08-17'