Wazo Voicemails API

The voicemails API from Wazo — 20 operation(s) for voicemails.

Operations 40

GET /voicemails/messages List all voicemail messages in a tenant
GET /voicemails/{voicemail_id} Get details of a voicemail
PUT /voicemails/{voicemail_id} Update voicemail #
DELETE /voicemails/{voicemail_id} Delete voicemail #
GET /voicemails/{voicemail_id}/folders/{folder_id} Get details of a folder
GET /voicemails/{voicemail_id}/messages/{message_id} Get a message
PUT /voicemails/{voicemail_id}/messages/{message_id} Update a message
DELETE /voicemails/{voicemail_id}/messages/{message_id} Delete a mesage
GET /voicemails/{voicemail_id}/messages/{message_id}/recording Get a message's recording
POST /voicemails/{voicemail_id}/greetings/{greeting} Create a custom greeting
HEAD /voicemails/{voicemail_id}/greetings/{greeting} Check if greeting exists
GET /voicemails/{voicemail_id}/greetings/{greeting} Get a custom greeting
PUT /voicemails/{voicemail_id}/greetings/{greeting} Update a custom greeting
DELETE /voicemails/{voicemail_id}/greetings/{greeting} Delete a custom greeting
POST /voicemails/{voicemail_id}/greetings/{greeting}/copy Copy a custom greeting
GET /users/me/voicemails Get details of the voicemail of the authenticated user
GET /users/me/voicemails/folders/{folder_id} Get details of a folder
GET /users/me/voicemails/messages Get all user's messages
GET /users/me/voicemails/messages/{message_id} Get a message
PUT /users/me/voicemails/messages/{message_id} Update a message
DELETE /users/me/voicemails/messages/{message_id} Delete a mesage
GET /users/me/voicemails/messages/{message_id}/recording Get a message's recording
POST /users/me/voicemails/greetings/{greeting} Create a custom greeting
HEAD /users/me/voicemails/greetings/{greeting} Check if greeting exists
GET /users/me/voicemails/greetings/{greeting} Get a custom greeting
PUT /users/me/voicemails/greetings/{greeting} Update a custom greeting
DELETE /users/me/voicemails/greetings/{greeting} Delete a custom greeting
POST /users/me/voicemails/greetings/{greeting}/copy Copy a custom greeting
POST /users/{user_id}/voicemails Create user voicemail #
GET /users/{user_id}/voicemails Get user voicemails #
DELETE /users/{user_id}/voicemails Dissociate user and voicemail #
PUT /users/{user_id}/voicemails/{voicemail_id} Associate user and voicemail #
GET /voicemails List voicemails #
POST /voicemails Create voicemail #
GET /asterisk/voicemail/general List Voicemail general options #
PUT /asterisk/voicemail/general Update Voicemail general option #
GET /voicemails/transcription Retrieve the voicemail transcription configuration for the tenant #
PUT /voicemails/transcription Update the voicemail transcription configuration for the tenant. #
GET /asterisk/voicemail/zonemessages List Voicemail zonemessages options #
PUT /asterisk/voicemail/zonemessages Update Voicemail zonemessages option #

Documentation

Specifications

Other Resources

🔗
Console
https://api.wazo.io/documentation/console/authentication/
🔗
SourceCode
https://github.com/wazo-platform/wazo-auth
🔗
ChangeLog
https://github.com/wazo-platform/wazo-auth/blob/master/CHANGELOG.md
🔗
Conventions
https://raw.githubusercontent.com/api-evangelist/wazo/refs/heads/main/conventions/wazo-conventions.yml
🔗
ErrorCatalog
https://raw.githubusercontent.com/api-evangelist/wazo/refs/heads/main/errors/wazo-problem-types.yml
🔗
Console
https://api.wazo.io/documentation/console/configuration/
🔗
SourceCode
https://github.com/wazo-platform/wazo-confd
🔗
ChangeLog
https://github.com/wazo-platform/wazo-confd/blob/master/CHANGELOG.md
🔗
Console
https://api.wazo.io/documentation/console/application/
🔗
SourceCode
https://github.com/wazo-platform/wazo-calld
🔗
ChangeLog
https://github.com/wazo-platform/wazo-calld/blob/master/CHANGELOG.md
🔗
Console
https://api.wazo.io/documentation/console/cdr/
🔗
SourceCode
https://github.com/wazo-platform/wazo-call-logd
🔗
ChangeLog
https://github.com/wazo-platform/wazo-call-logd/blob/master/CHANGELOG.md
🔗
Console
https://api.wazo.io/documentation/console/contact/
🔗
SourceCode
https://github.com/wazo-platform/wazo-dird
🔗
ChangeLog
https://github.com/wazo-platform/wazo-dird/blob/master/CHANGELOG.md
🔗
Console
https://api.wazo.io/documentation/console/webhook/
🔗
SourceCode
https://github.com/wazo-platform/wazo-webhookd
🔗
ChangeLog
https://github.com/wazo-platform/wazo-webhookd/blob/master/CHANGELOG.md
🔗
Webhooks
https://raw.githubusercontent.com/api-evangelist/wazo/refs/heads/main/asyncapi/wazo-events-webhooks.yml
🔗
Console
https://api.wazo.io/documentation/console/plugins/
🔗
SourceCode
https://github.com/wazo-platform/wazo-plugind
🔗
ChangeLog
https://github.com/wazo-platform/wazo-plugind/blob/master/CHANGELOG.md
🔗
Console
https://api.wazo.io/documentation/console/agent/
🔗
SourceCode
https://github.com/wazo-platform/wazo-agentd
🔗
ChangeLog
https://github.com/wazo-platform/wazo-agentd/blob/master/CHANGELOG.md
🔗
Console
https://api.wazo.io/documentation/console/chat/
🔗
SourceCode
https://github.com/wazo-platform/wazo-chatd
🔗
ChangeLog
https://github.com/wazo-platform/wazo-chatd/blob/master/CHANGELOG.md
🔗
SourceCode
https://github.com/wazo-platform/wazo-phoned
🔗
ChangeLog
https://github.com/wazo-platform/wazo-phoned/blob/master/CHANGELOG.md
🔗
Console
https://api.wazo.io/documentation/console/setup/
🔗
SourceCode
https://github.com/wazo-platform/wazo-setupd
🔗
ChangeLog
https://github.com/wazo-platform/wazo-setupd/blob/master/CHANGELOG.md
🔗
Console
https://api.wazo.io/documentation/console/amid/
🔗
SourceCode
https://github.com/wazo-platform/wazo-amid
🔗
ChangeLog
https://github.com/wazo-platform/wazo-amid/blob/master/CHANGELOG.md

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/wazo-voicemails-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no email required.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

wazo-voicemails-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Wazo Voicemails API
  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
  version: '1.0'
  description: 'Operations tagged voicemails across 2 of this provider''s published API definitions: wazo-calld-api-openapi.yml, wazo-confd-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: /1.0
- url: /1.1
security:
- wazo_auth_token: []
tags:
- name: voicemails
paths:
  /voicemails/messages:
    get:
      summary: List all voicemail messages in a tenant
      description: '**Required ACL:** `calld.voicemails.messages.read`'
      parameters:
      - $ref: '#/components/parameters/TenantUUID'
      - $ref: '#/components/parameters/direction'
      - $ref: '#/components/parameters/order'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/offset'
      - name: voicemail_type
        in: query
        description: Filter messages by voicemail accesstype
        required: false
        schema:
          type: string
          enum:
          - all
          - personal
          - global
          default: all
      - name: user_uuid
        in: query
        description: Filter messages by user UUID (returns user's personal + global voicemails)
        required: false
        schema:
          type: string
      - name: voicemail_id
        in: query
        description: Filter messages by voicemail ID
        required: false
        schema:
          type: integer
      - name: from
        in: query
        description: Filter messages with timestamp >= this value (ISO 8601 datetime)
        required: false
        schema:
          type: string
          format: date-time
      - name: until
        in: query
        description: Filter messages with timestamp < this value (ISO 8601 datetime)
        required: false
        schema:
          type: string
          format: date-time
      - name: recurse
        in: query
        description: Include sub-tenants
        required: false
        schema:
          type: boolean
          default: false
      - name: transcribed
        in: query
        description: Filter messages by transcription availability
        required: false
        schema:
          type: boolean
      tags:
      - voicemails
      responses:
        '200':
          description: The voicemail messages in the tenant
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AdminVoicemailMessages'
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
    servers:
    - url: /1.0
  /voicemails/{voicemail_id}:
    get:
      summary: Get details of a voicemail
      description: '**Required ACL:** `calld.voicemails.{voicemail_id}.read`'
      parameters:
      - $ref: '#/components/parameters/TenantUUID'
      - $ref: '#/components/parameters/VoicemailID'
      tags:
      - voicemails
      responses:
        '200':
          description: The details of the voicemail
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Voicemail'
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
    put:
      operationId: update_voicemail
      summary: Update voicemail
      description: '**Required ACL:** `confd.voicemails.{voicemail_id}.update`'
      tags:
      - voicemails
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/voicemailid'
      responses:
        '204':
          $ref: '#/components/responses/ResourceUpdated'
        '400':
          $ref: '#/components/responses/UpdateError'
        '404':
          $ref: '#/components/responses/NotFoundError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Voicemail_2'
        required: true
    delete:
      operationId: delete_voicemail
      summary: Delete voicemail
      description: '**Required ACL:** `confd.voicemails.{voicemail_id}.delete`


        A voicemail can not be deleted if it is still attached to a user. The user must be dissociated first. Any extension that redirects to the voicemail (e.g. an Incoming call) will be disabled after deletion.'
      tags:
      - voicemails
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/voicemailid'
      responses:
        '204':
          $ref: '#/components/responses/ResourceDeleted'
        '400':
          $ref: '#/components/responses/DeleteError'
        '404':
          $ref: '#/components/responses/NotFoundError'
    servers:
    - url: /1.0
  /voicemails/{voicemail_id}/folders/{folder_id}:
    get:
      summary: Get details of a folder
      description: '**Required ACL:** `calld.voicemails.{voicemail_id}.folders.{folder_id}.read`'
      parameters:
      - $ref: '#/components/parameters/VoicemailID'
      - $ref: '#/components/parameters/VoicemailFolderID'
      tags:
      - voicemails
      responses:
        '200':
          description: The details of the folder
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VoicemailFolder'
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
    servers:
    - url: /1.0
  /voicemails/{voicemail_id}/messages/{message_id}:
    get:
      summary: Get a message
      description: '**Required ACL:** `calld.voicemails.{voicemail_id}.messages.{message_id}.read`'
      parameters:
      - $ref: '#/components/parameters/VoicemailID'
      - $ref: '#/components/parameters/VoicemailMessageID'
      tags:
      - voicemails
      responses:
        '200':
          description: The message
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VoicemailMessage'
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
    put:
      summary: Update a message
      description: '**Required ACL:** `calld.voicemails.{voicemail_id}.messages.{message_id}.update`'
      parameters:
      - $ref: '#/components/parameters/VoicemailID'
      - $ref: '#/components/parameters/VoicemailMessageID'
      tags:
      - voicemails
      responses:
        '204':
          description: Message was updated successfully
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VoicemailMessageUpdate'
        description: Message
        required: true
    delete:
      summary: Delete a mesage
      description: '**Required ACL:** `calld.voicemails.{voicemail_id}.messages.{message_id}.delete`'
      parameters:
      - $ref: '#/components/parameters/VoicemailID'
      - $ref: '#/components/parameters/VoicemailMessageID'
      tags:
      - voicemails
      responses:
        '204':
          description: Message was deleted successfully
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
    servers:
    - url: /1.0
  /voicemails/{voicemail_id}/messages/{message_id}/recording:
    get:
      summary: Get a message's recording
      description: '**Required ACL:** `calld.voicemails.{voicemail_id}.messages.{message_id}.recording.read`'
      parameters:
      - $ref: '#/components/parameters/VoicemailID'
      - $ref: '#/components/parameters/VoicemailMessageID'
      - $ref: '#/components/parameters/TokenID'
      - $ref: '#/components/parameters/ForceDownload'
      tags:
      - voicemails
      responses:
        '200':
          description: The recording
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
    servers:
    - url: /1.0
  /voicemails/{voicemail_id}/greetings/{greeting}:
    post:
      summary: Create a custom greeting
      description: '**Required ACL:** `calld.voicemails.{voicemail_id}.greetings.{greeting}.create`'
      parameters:
      - $ref: '#/components/parameters/VoicemailID'
      - $ref: '#/components/parameters/VoicemailGreeting'
      tags:
      - voicemails
      responses:
        '204':
          description: The greeting was created successfully
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
      requestBody:
        content:
          audio/wav:
            schema:
              format: binary
        required: true
    head:
      summary: Check if greeting exists
      description: '**Required ACL:** `calld.voicemails.{voicemail_id}.greetings.{greeting}.read`'
      parameters:
      - $ref: '#/components/parameters/VoicemailID'
      - $ref: '#/components/parameters/VoicemailGreeting'
      tags:
      - voicemails
      responses:
        '200':
          description: Greeting exists
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
    get:
      summary: Get a custom greeting
      description: '**Required ACL:** `calld.voicemails.{voicemail_id}.greetings.{greeting}.read`'
      parameters:
      - $ref: '#/components/parameters/VoicemailID'
      - $ref: '#/components/parameters/VoicemailGreeting'
      tags:
      - voicemails
      responses:
        '200':
          description: The greeting's recording
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
    put:
      summary: Update a custom greeting
      description: '**Required ACL:** `calld.voicemails.{voicemail_id}.greetings.{greeting}.update`'
      parameters:
      - $ref: '#/components/parameters/VoicemailID'
      - $ref: '#/components/parameters/VoicemailGreeting'
      tags:
      - voicemails
      responses:
        '204':
          description: The greeting was updated successfully
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
      requestBody:
        content:
          audio/wav:
            schema:
              format: binary
        required: true
    delete:
      summary: Delete a custom greeting
      description: '**Required ACL:** `calld.voicemails.{voicemail_id}.greetings.{greeting}.delete`'
      parameters:
      - $ref: '#/components/parameters/VoicemailID'
      - $ref: '#/components/parameters/VoicemailGreeting'
      tags:
      - voicemails
      responses:
        '204':
          description: The greeting was deleted successfully
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
    servers:
    - url: /1.0
  /voicemails/{voicemail_id}/greetings/{greeting}/copy:
    post:
      summary: Copy a custom greeting
      description: '**Required ACL:** `calld.voicemails.{voicemail_id}.greetings.{greeting}.copy.create`'
      parameters:
      - $ref: '#/components/parameters/VoicemailID'
      - $ref: '#/components/parameters/VoicemailGreeting'
      tags:
      - voicemails
      responses:
        '204':
          description: The greeting was copied successfully
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GreetingCopy'
        required: true
    servers:
    - url: /1.0
  /users/me/voicemails:
    get:
      summary: Get details of the voicemail of the authenticated user
      description: '**Required ACL:** `calld.users.me.voicemails.read`'
      tags:
      - voicemails
      responses:
        '200':
          description: The details of the voicemail
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Voicemail'
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
    servers:
    - url: /1.0
  /users/me/voicemails/folders/{folder_id}:
    get:
      summary: Get details of a folder
      description: '**Required ACL:** `calld.users.me.voicemails.folders.{folder_id}.read`'
      parameters:
      - $ref: '#/components/parameters/VoicemailFolderID'
      tags:
      - voicemails
      responses:
        '200':
          description: The details of the folder
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VoicemailFolder'
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
    servers:
    - url: /1.0
  /users/me/voicemails/messages:
    get:
      summary: Get all user's messages
      description: '**Required ACL:** `calld.users.me.voicemails.messages.read`'
      tags:
      - voicemails
      parameters:
      - $ref: '#/components/parameters/direction'
      - $ref: '#/components/parameters/order'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/offset'
      - name: voicemail_type
        in: query
        description: include or exclude messages from global mailboxes
        required: false
        schema:
          type: string
          enum:
          - all
          - personal
          - global
          default: all
      responses:
        '200':
          description: The voicemail messages available to the user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VoicemailMessages'
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
    servers:
    - url: /1.0
  /users/me/voicemails/messages/{message_id}:
    get:
      summary: Get a message
      description: '**Required ACL:** `calld.users.me.voicemails.messages.{message_id}.read`'
      parameters:
      - $ref: '#/components/parameters/VoicemailMessageID'
      tags:
      - voicemails
      responses:
        '200':
          description: The message
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VoicemailMessage'
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
    put:
      summary: Update a message
      description: '**Required ACL:** `calld.users.me.voicemails.messages.{message_id}.update`'
      parameters:
      - $ref: '#/components/parameters/VoicemailMessageID'
      tags:
      - voicemails
      responses:
        '204':
          description: Message was updated successfully
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VoicemailMessageUpdate'
        description: Message
        required: true
    delete:
      summary: Delete a mesage
      description: '**Required ACL:** `calld.users.me.voicemails.messages.{message_id}.delete`'
      parameters:
      - $ref: '#/components/parameters/VoicemailMessageID'
      tags:
      - voicemails
      responses:
        '204':
          description: Message was deleted successfully
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
    servers:
    - url: /1.0
  /users/me/voicemails/messages/{message_id}/recording:
    get:
      summary: Get a message's recording
      description: '**Required ACL:** `calld.users.me.voicemails.messages.{message_id}.recording.read`'
      parameters:
      - $ref: '#/components/parameters/VoicemailMessageID'
      - $ref: '#/components/parameters/TokenID'
      - $ref: '#/components/parameters/ForceDownload'
      tags:
      - voicemails
      responses:
        '200':
          description: The recording
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
    servers:
    - url: /1.0
  /users/me/voicemails/greetings/{greeting}:
    post:
      summary: Create a custom greeting
      description: '**Required ACL:** `calld.users.me.voicemails.greetings.{greeting}.create`'
      parameters:
      - $ref: '#/components/parameters/VoicemailGreeting'
      tags:
      - voicemails
      responses:
        '204':
          description: The greeting was created successfully
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
      requestBody:
        content:
          audio/wav:
            schema:
              format: binary
        required: true
    head:
      summary: Check if greeting exists
      description: '**Required ACL:** `calld.users.me.voicemails.greetings.{greeting}.read`'
      parameters:
      - $ref: '#/components/parameters/VoicemailGreeting'
      tags:
      - voicemails
      responses:
        '200':
          description: Greeting exists
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
    get:
      summary: Get a custom greeting
      description: '**Required ACL:** `calld.users.me.voicemails.greetings.{greeting}.read`'
      parameters:
      - $ref: '#/components/parameters/VoicemailGreeting'
      tags:
      - voicemails
      responses:
        '200':
          description: The greeting's recording
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
    put:
      summary: Update a custom greeting
      description: '**Required ACL:** `calld.users.me.voicemails.greetings.{greeting}.update`'
      parameters:
      - $ref: '#/components/parameters/VoicemailGreeting'
      tags:
      - voicemails
      responses:
        '204':
          description: The greeting was updated successfully
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
      requestBody:
        content:
          audio/wav:
            schema:
              format: binary
        required: true
    delete:
      summary: Delete a custom greeting
      description: '**Required ACL:** `calld.users.me.voicemails.greetings.{greeting}.delete`'
      parameters:
      - $ref: '#/components/parameters/VoicemailGreeting'
      tags:
      - voicemails
      responses:
        '204':
          description: The greeting was deleted successfully
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
    servers:
    - url: /1.0
  /users/me/voicemails/greetings/{greeting}/copy:
    post:
      summary: Copy a custom greeting
      description: '**Required ACL:** `calld.users.me.voicemails.greetings.{greeting}.copy.create`'
      parameters:
      - $ref: '#/components/parameters/VoicemailGreeting'
      tags:
      - voicemails
      responses:
        '204':
          description: The greeting was copied successfully
        '400':
          $ref: '#/components/responses/InvalidRequest'
        '404':
          $ref: '#/components/responses/NotFoundError'
        '503':
          $ref: '#/components/responses/AnotherServiceUnavailable'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GreetingCopy'
        required: true
    servers:
    - url: /1.0
  /users/{user_id}/voicemails:
    post:
      operationId: create_user_voicemail
      summary: Create user voicemail
      description: '**Required ACL:** `confd.users.{user_id}.voicemails.create`'
      tags:
      - voicemails
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/useriduuid'
      responses:
        '201':
          description: Voicemail created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Voicemail_2'
        '400':
          $ref: '#/components/responses/CreateError'
        '404':
          description: User not found
          content:
            application/json:
              schema:
                $ref: '#/components/responses/NotFoundError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Voicemail_2'
        description: Voicemail to create
        required: true
    get:
      operationId: get_user_voicemail
      summary: Get user voicemails
      description: '**Required ACL:** `confd.users.{user_id}.voicemails.read`'
      tags:
      - voicemails
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/useriduuid'
      responses:
        '200':
          description: User's voicemail list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VoicemailItems'
        '404':
          $ref: '#/components/responses/NotFoundError'
    delete:
      operationId: dissociate_user_voicemail
      summary: Dissociate user and voicemail
      description: '**Required ACL:** `confd.users.{user_id}.voicemails.delete`'
      tags:
      - voicemails
      parameters:
      - $ref: '#/components/parameters/useriduuid'
      responses:
        '204':
          description: User and Voicemail dissociated
        '400':
          $ref: '#/components/responses/GenericError'
        '404':
          $ref: '#/components/responses/NotFoundError'
    servers:
    - url: /1.1
  /users/{user_id}/voicemails/{voicemail_id}:
    put:
      operationId: associate_user_voicemail
      summary: Associate user and voicemail
      description: '**Required ACL:** `confd.users.{user_id}.voicemails.{voicemail_id}.update`'
      tags:
      - voicemails
      parameters:
      - $ref: '#/components/parameters/useriduuid'
      - $ref: '#/components/parameters/voicemailid'
      responses:
        '204':
          description: User and voicemail associated
        '400':
          $ref: '#/components/responses/GenericError'
        '404':
          $ref: '#/components/responses/NotFoundError'
    servers:
    - url: /1.1
  /voicemails:
    get:
      operationId: list_voicemails
      summary: List voicemails
      description: '**Required ACL:** `confd.voicemails.read`'
      tags:
      - voicemails
      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: Voicemail list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VoicemailItems'
    post:
      operationId: create_voicemail
      summary: Create voicemail
      description: '**Required ACL:** `confd.voicemails.create`'
      tags:
      - voicemails
      responses:
        '201':
          description: Voicemail created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Voicemail_2'
        '400':
          $ref: '#/components/responses/CreateError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Voicemail_2'
        description: Voicemail to create
        required: true
    servers:
    - url: /1.1
  /asterisk/voicemail/general:
    get:
      operationId: list_asterisk_voicemail_general
      summary: List Voicemail general options
      description: '**Required ACL:** `confd.asterisk.voicemail.general.read`'
      tags:
      - voicemails
      responses:
        '200':
          description: Voicemail general
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VoicemailGeneral'
    put:
      operationId: update_asterisk_voicemail_general
      summary: Update Voicemail general option
      description: '**Required ACL:** `confd.asterisk.voicemail.general.update`


        **WARNING** This endpoint restore to default value or delete all fields that are not defined.'
      tags:
      - voicemails
      responses:
        '204':
          $ref: '#/components/responses/ResourceUpdated'
        '400':
          $ref: '#/components/responses/UpdateError'
        '404':
          $ref: '#/components/responses/NotFoundError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VoicemailGeneral'
        required: true
    servers:
    - url: /1.1
  /voicemails/transcription:
    get:
      summary: Retrieve the voicemail transcription configuration for the tenant
      description: '

        Returns the current transcription settings, including whether automatic

        transcription is enabled for the tenant''s voicemails.

        **required_acl**: `confd.voicemails.transcription.read`

        '
      operationId: get_voicemail_transcription_config
      tags:
      - voicemails
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      responses:
        '200':
          description: Voicemail transcription configuration
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VoicemailTranscriptionConfig'
        '404':
          $ref: '#/components/responses/NotFoundError'
    put:
      summary: Update the voicemail transcription configuration for the tenant.
      description: '**required_acl**: `confd.voicemails.transcription.update`'
      operationId: update_voicemail_transcription_config
      tags:
      - voicemails
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      responses:
        '204':
          description: Configuration updated successfully
        '400':
          $ref: '#/components/responses/UpdateError'
        '404':
          $ref: '#/components/responses/NotFoundError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VoicemailTranscriptionConfig'
        description: Voicemail transcription configuration
        required: true
    servers:
    - url: /1.1
  /asterisk/voicemail/zonemessages:
    get:
      operationId: list_asterisk_voicemail_zonemessages
      summary: List Voicemail zonemessages options
      description: '**Required ACL:** `confd.asterisk.voicemail.zonemessages.read`'
      tags:
      - voicemails
      responses:
        '200':
          description: Voicemail zonemessages
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VoicemailZoneMessages'
    put:
      operationId: update_asterisk_voicemail_zonemessages
      summary: Update Voicemail zonemessages option
      description: '**Required ACL:** `confd.asterisk.voicemail.zonemessages.update`


        **WARNING** This endpoint restore to default value or delete all fields that are not defined.'
      tags:
      - voicemails
      responses:
        '204':
          $ref: '#/components/responses/ResourceUpdated'
        '400':
          $ref: '#/components/responses/UpdateError'
        '404':
          $ref: '#/components/responses/NotFoundError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VoicemailZoneMessages'
        required: true
    servers:
    - url: /1.1
components:
  parameters:
    TenantUUID:
      name: Wazo-Tenant
      in: header
      description: The tenant's UUID, defining the ownership of a given resource.
      required: false
      schema:
        type: string
    VoicemailMessageID:
      name: message_id
      in: path
      description: The message's ID
      required: true
      schema:
        type: string
    ForceDownload:
      name: download
      in: query
      description: Set to 1 to force download by browser
      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
    order:
      required: false
      name: order
      in: query
      description: Name of the field to use for sorting the list of items returned.
      schema:
        type: string
    TokenID:
      name: token
      in: query
      description: The token's ID
      schema:
        type: string
    VoicemailGreeting:
      name: greeting
      in: path
      description: The greeting
      required: true
      schema:
        type: string
        enum:
        - unavailable
        - busy
        - name
    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
    VoicemailID:
      name: voicemail_id
      in: path
      description: The voicemail's ID
      required: true
      schema:
        type: integer
    VoicemailFolderID:
      name: folder_id
      in: path
      description: The folder's ID
      required: true
      schema:
        type: integer
    limit:
      required: false
      name: limit
      in: query
      description: Maximum number of items to return in

# --- truncated at 32 KB (46 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/wazo/refs/heads/main/openapi/wazo-voicemails-api-openapi.yml