Wazo Agents API

The agents API from Wazo — 29 operation(s) for agents.

Operations 35

GET /agents/by-id/{agent_id} Get agent status. #
GET /agents/by-number/{agent_number} Get agent status. #
POST /agents/by-id/{agent_id}/login Log an agent. #
POST /agents/by-number/{agent_number}/login Log an agent. #
GET /users/me/agents Get agent status of the user holding the authentication token. #
POST /users/me/agents/login Log the agent of the user holding the authentication token #
POST /agents/by-id/{agent_id}/logoff Logoff an agent. #
POST /agents/by-number/{agent_number}/logoff Logoff an agent. #
POST /users/me/agents/logoff Logoff the agent of the user holding the authentication token #
POST /agents/by-number/{agent_number}/pause Pause an agent. #
POST /users/me/agents/pause Pause the agent of the user holding the authentication token #
POST /agents/by-number/{agent_number}/unpause Unpause an agent. #
POST /users/me/agents/unpause Unpause the agent of the user holding the authentication token #
POST /agents/by-id/{agent_id}/add Add agent to a queue. #
POST /agents/by-id/{agent_id}/remove Remove agent from a queue. #
PUT /agents/{agent_id}/queues/{queue_id}/login Login agent to queue #
PUT /users/me/agents/queues/{queue_id}/login Login user agent to queue #
PUT /agents/{agent_id}/queues/{queue_id}/logoff Logoff agent from queue #
PUT /users/me/agents/queues/{queue_id}/logoff Logoff user agent from queue #
GET /agents Get the status of all agents. #
POST /agents Create agent #
POST /agents/logoff Logoff all agents. #
POST /agents/relog Relog all agents. #
GET /agents/{agent_id} Get agent #
PUT /agents/{agent_id} Update agent #
DELETE /agents/{agent_id} Delete agent #
PUT /agents/{agent_id}/skills/{skill_id} Associate agent and skill #
DELETE /agents/{agent_id}/skills/{skill_id} Dissociate agent and skill #
PUT /queues/{queue_id}/members/agents/{agent_id} Update Agent-Queue association #
DELETE /queues/{queue_id}/members/agents/{agent_id} Dissociate agent and queue #
GET /agents/skills List skill #
POST /agents/skills Create skill #
GET /agents/skills/{skill_id} Get skill #
DELETE /users/{user_id}/agents Dissociate user and agent #
PUT /users/{user_id}/agents/{agent_id} Associate user and agent #

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-agents-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 form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

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

OpenAPI Specification

wazo-agents-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Wazo Agents API
  contact:
    name: Wazo Dev Team
    url: https://wazo-platform.org/
    email: dev@wazo.community
  license:
    name: GPL v3
    url: http://www.gnu.org/licenses/gpl.txt
  x-logo:
    url: https://wazo-platform.org/images/logo-black.svg
    backgroundColor: '#FAFAFA'
    altText: Wazo Logo
  version: '1.0'
  description: 'Operations tagged agents across 2 of this provider''s published API definitions: wazo-agentd-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: agents
paths:
  /agents/by-id/{agent_id}:
    get:
      summary: Get agent status.
      description: '**Required ACL:** `agentd.agents.by-id.{agent_id}.read`'
      operationId: get_agent_by_id
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/AgentID'
      responses:
        '200':
          description: The agent status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentStatus'
        '404':
          description: Agent does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: /1.0
  /agents/by-number/{agent_number}:
    get:
      summary: Get agent status.
      description: '**Required ACL:** `agentd.agents.by-number.{agent_number}.read`'
      operationId: get_agent_by_number
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/AgentNumber'
      responses:
        '200':
          description: The agent status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentStatus'
        '404':
          description: Agent does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: /1.0
  /agents/by-id/{agent_id}/login:
    post:
      summary: Log an agent.
      description: '**Required ACL:** `agentd.agents.by-id.{agent_id}.login.create`'
      operationId: login_agent_by_id
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/AgentID'
      responses:
        '204':
          description: The operation was performed successfully
        '400':
          description: The context and extension are not in the same tenant as the agent
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Agent, extension, context or endpoint does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Agent is already logged or another agent is already logged on this extension and context
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginInfo'
        description: The extension and context on which to log the agent
        required: true
    servers:
    - url: /1.0
  /agents/by-number/{agent_number}/login:
    post:
      summary: Log an agent.
      description: '**Required ACL:** `agentd.agents.by-number.{agent_number}.login.create`'
      operationId: login_agent_by_number
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/AgentNumber'
      responses:
        '204':
          description: The operation was performed successfully
        '400':
          description: The context and extension are not in the same tenant as the agent
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Agent, extension, context or endpoint does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Agent is already logged or another agent is already logged on this extension and context
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/LoginInfo'
        description: The extension and context on which to log the agent
        required: true
    servers:
    - url: /1.0
  /users/me/agents:
    get:
      summary: Get agent status of the user holding the authentication token.
      description: '**Required ACL:** `agentd.users.me.agents.read`'
      operationId: get_user_agent
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      responses:
        '200':
          description: The agent status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentStatus'
        '404':
          description: Agent does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: /1.0
  /users/me/agents/login:
    post:
      summary: Log the agent of the user holding the authentication token
      description: '**Required ACL:** `agentd.users.me.agents.login.create`'
      operationId: login_user_agent
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      responses:
        '204':
          description: The operation was performed successfully
        '400':
          description: The user does not own the line; or the token has no user; or wrong tenant; or the user has no agent
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Agent is already logged or another agent is already logged on this line
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UserAgentLoginInfo'
        description: The line on which to log the agent
        required: true
    servers:
    - url: /1.0
  /agents/by-id/{agent_id}/logoff:
    post:
      summary: Logoff an agent.
      description: '**Required ACL:** `agentd.agents.by-id.{agent_id}.logoff.create`'
      operationId: logoff_agent_by_id
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/AgentID'
      responses:
        '204':
          description: The operation was performed successfully
        '409':
          description: Agent does not exist or is not logged
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: /1.0
  /agents/by-number/{agent_number}/logoff:
    post:
      summary: Logoff an agent.
      description: '**Required ACL:** `agentd.agents.by-number.{agent_number}.logoff.create`'
      operationId: logoff_agent_by_number
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/AgentNumber'
      responses:
        '204':
          description: The operation was performed successfully
        '409':
          description: Agent does not exist or is not logged
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: /1.0
  /users/me/agents/logoff:
    post:
      summary: Logoff the agent of the user holding the authentication token
      description: '**Required ACL:** `agentd.users.me.agents.logoff.create`'
      operationId: logoff_user_agent
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      responses:
        '204':
          description: The operation was performed successfully
        '400':
          description: The token has no user; or wrong tenant; or the user has no agent
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Agent is already logged or another agent is already logged on this line
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: /1.0
  /agents/by-number/{agent_number}/pause:
    post:
      summary: Pause an agent.
      description: '**Required ACL:** `agentd.agents.by-number.{agent_number}.pause.create`'
      operationId: pause_agent_by_number
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/AgentNumber'
      responses:
        '204':
          description: The operation was performed successfully
        '404':
          description: Agent does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Agent is not logged
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentPauseReason'
        description: The reason for pausing the agent
    servers:
    - url: /1.0
  /users/me/agents/pause:
    post:
      summary: Pause the agent of the user holding the authentication token
      description: '**Required ACL:** `agentd.users.me.agents.pause.create`'
      operationId: pause_user_agent
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      responses:
        '204':
          description: The operation was performed successfully
        '400':
          description: The token has no user; or wrong tenant; or the user has no agent
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Agent is already logged or another agent is already logged on this line
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentPauseReason'
        description: The reason for pausing the agent
    servers:
    - url: /1.0
  /agents/by-number/{agent_number}/unpause:
    post:
      summary: Unpause an agent.
      description: '**Required ACL:** `agentd.agents.by-number.{agent_number}.unpause.create`'
      operationId: unpause_agent_by_number
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/AgentNumber'
      responses:
        '204':
          description: The operation was performed successfully
        '404':
          description: Agent does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Agent is not logged
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: /1.0
  /users/me/agents/unpause:
    post:
      summary: Unpause the agent of the user holding the authentication token
      description: '**Required ACL:** `agentd.users.me.agents.unpause.create`'
      operationId: unpause_user_agent
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      responses:
        '204':
          description: The operation was performed successfully
        '400':
          description: The token has no user; or wrong tenant; or the user has no agent
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Agent is already logged or another agent is already logged on this line
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: /1.0
  /agents/by-id/{agent_id}/add:
    post:
      summary: Add agent to a queue.
      description: '**Required ACL:** `agentd.agents.by-id.{agent_id}.add.create`'
      operationId: add_agent_by_id
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/AgentID'
      responses:
        '204':
          description: The operation was performed successfully
        '400':
          description: The agent and the queue are not in the same tenant
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Agent or queue does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Agent is already a member of the queue
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Queue'
        description: The queue to add the agent to
        required: true
    servers:
    - url: /1.0
  /agents/by-id/{agent_id}/remove:
    post:
      summary: Remove agent from a queue.
      description: '**Required ACL:** `agentd.agents.by-id.{agent_id}.remove.create`'
      operationId: remove_agent_by_id
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/AgentID'
      responses:
        '204':
          description: The operation was performed successfully
        '404':
          description: Agent or queue does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Agent is not a member of the queue
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Queue'
        description: The queue to remove the agent from
        required: true
    servers:
    - url: /1.0
  /agents/{agent_id}/queues/{queue_id}/login:
    put:
      summary: Login agent to queue
      description: '**Required ACL:** `agentd.agents.{agent_id}.queues.{queue_id}.login.update`'
      operationId: login_agent_to_queue
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/AgentID'
      - $ref: '#/components/parameters/QueueID'
      responses:
        '204':
          description: The operation was performed successfully
        '400':
          description: The agent and the queue are not in the same tenant
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Agent or queue does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Agent is not logged
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: /1.0
  /users/me/agents/queues/{queue_id}/login:
    put:
      summary: Login user agent to queue
      description: '**Required ACL:** `agentd.users.me.agents.queues.{queue_id}.login.update`'
      operationId: user_agent_login_to_queue
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/QueueID'
      responses:
        '204':
          description: The operation was performed successfully
        '400':
          description: The token has no user; or wrong tenant; or the user has no agent
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Agent or queue does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Agent is not logged
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: /1.0
  /agents/{agent_id}/queues/{queue_id}/logoff:
    put:
      summary: Logoff agent from queue
      description: '**Required ACL:** `agentd.agents.{agent_id}.queues.{queue_id}.logoff.update`'
      operationId: logoff_agent_from_queue
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/AgentID'
      - $ref: '#/components/parameters/QueueID'
      responses:
        '204':
          description: The operation was performed successfully
        '400':
          description: The agent and the queue are not in the same tenant
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Agent or queue does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Agent is not logged
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: /1.0
  /users/me/agents/queues/{queue_id}/logoff:
    put:
      summary: Logoff user agent from queue
      description: '**Required ACL:** `agentd.users.me.agents.queues.{queue_id}.logoff.update`'
      operationId: user_agent_logoff_from_queue
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/QueueID'
      responses:
        '204':
          description: The operation was performed successfully
        '400':
          description: The token has no user; or wrong tenant; or the user has no agent
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          description: Agent or queue does not exist
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '409':
          description: Agent is not logged
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
    servers:
    - url: /1.0
  /agents:
    get:
      summary: Get the status of all agents.
      description: '**Required ACL:** `agentd.agents.read`'
      operationId: get_agents
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/recurse'
      responses:
        '200':
          description: A list of agent status
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AgentStatus'
    post:
      operationId: create_agent
      summary: Create agent
      description: '**Required ACL:** `confd.agents.create`'
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      responses:
        '201':
          description: Agent created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent'
        '400':
          $ref: '#/components/responses/CreateError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Agent'
        description: Agent to create
        required: true
    servers:
    - url: /1.0
  /agents/logoff:
    post:
      summary: Logoff all agents.
      description: '**Required ACL:** `agentd.agents.logoff.create`'
      operationId: logoff_agents
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      responses:
        '204':
          description: The operation was performed succesfully
    servers:
    - url: /1.0
  /agents/relog:
    post:
      summary: Relog all agents.
      description: '**Required ACL:** `agentd.agents.relog.create`


        Relog all agents which are currently logged.'
      operationId: relog_agents
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - name: all_queues
        in: query
        description: If true, relog each agent into all of its assigned queues, restoring membership for queues from which the agent was previously logged off individually.
        required: false
        schema:
          type: boolean
          default: false
      responses:
        '204':
          description: The operation was performed succesfully
    servers:
    - url: /1.0
  /agents/{agent_id}:
    get:
      operationId: get_agent
      summary: Get agent
      description: '**Required ACL:** `confd.agents.{agent_id}.read`'
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/agentid'
      responses:
        '200':
          description: Agent
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Agent'
        '404':
          $ref: '#/components/responses/NotFoundError'
    put:
      operationId: update_agent
      summary: Update agent
      description: '**Required ACL:** `confd.agents.{agent_id}.update`'
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/agentid'
      responses:
        '204':
          $ref: '#/components/responses/ResourceUpdated'
        '400':
          $ref: '#/components/responses/UpdateError'
        '404':
          $ref: '#/components/responses/NotFoundError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Agent'
        required: true
    delete:
      operationId: delete_agent
      summary: Delete agent
      description: '**Required ACL:** `confd.agents.{agent_id}.delete`'
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/agentid'
      responses:
        '204':
          $ref: '#/components/responses/ResourceDeleted'
        '400':
          $ref: '#/components/responses/DeleteError'
        '404':
          $ref: '#/components/responses/NotFoundError'
    servers:
    - url: /1.1
  /agents/{agent_id}/skills/{skill_id}:
    put:
      operationId: associate_agent_skill
      summary: Associate agent and skill
      description: '**Required ACL:** `confd.agents.{agent_id}.skills.{skill_id}.update`'
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/agentid'
      - $ref: '#/components/parameters/skillid'
      responses:
        '204':
          description: Association updated
        '400':
          $ref: '#/components/responses/UpdateError'
        '404':
          $ref: '#/components/responses/NotFoundError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentSkill'
    delete:
      operationId: dissociate_agent_skill
      summary: Dissociate agent and skill
      description: '**Required ACL:** `confd.agents.{agent_id}.skills.{skill_id}.delete`'
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/agentid'
      - $ref: '#/components/parameters/skillid'
      responses:
        '204':
          description: Skill and Agent dissociated
        '400':
          $ref: '#/components/responses/GenericError'
        '404':
          $ref: '#/components/responses/NotFoundError'
    servers:
    - url: /1.1
  /queues/{queue_id}/members/agents/{agent_id}:
    put:
      operationId: update_agent_queue_association
      summary: Update Agent-Queue association
      description: '**Required ACL:** `confd.queues.{queue_id}.members.agents.{agent_id}.update`'
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/queueid'
      - $ref: '#/components/parameters/agentid'
      responses:
        '204':
          description: Association updated
        '400':
          $ref: '#/components/responses/UpdateError'
        '404':
          $ref: '#/components/responses/NotFoundError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QueueMemberAgent'
    delete:
      operationId: dissociate_agent_queue
      summary: Dissociate agent and queue
      description: '**Required ACL:** `confd.queues.{queue_id}.members.agents.{agent_id}.delete`'
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/queueid'
      - $ref: '#/components/parameters/agentid'
      responses:
        '204':
          description: Agent and Queue dissociated
        '400':
          $ref: '#/components/responses/GenericError'
        '404':
          $ref: '#/components/responses/NotFoundError'
    servers:
    - url: /1.1
  /agents/skills:
    get:
      operationId: list_skills
      summary: List skill
      description: '**Required ACL:** `confd.agents.skills.read`'
      tags:
      - agents
      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: Skills list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SkillItems'
    post:
      operationId: create_skill
      summary: Create skill
      description: '**Required ACL:** `confd.agents.skills.create`'
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      responses:
        '201':
          description: Skill created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Skill'
        '400':
          $ref: '#/components/responses/CreateError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Skill'
        description: Skill to create
        required: true
    servers:
    - url: /1.1
  /agents/skills/{skill_id}:
    get:
      operationId: get_skill
      summary: Get skill
      description: '**Required ACL:** `confd.agents.skills.{skill_id}.read`'
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/skillid'
      responses:
        '200':
          description: Skill
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Skill'
        '404':
          $ref: '#/components/responses/NotFoundError'
    servers:
    - url: /1.1
  /users/{user_id}/agents:
    delete:
      operationId: dissociate_user_agent
      summary: Dissociate user and agent
      description: '**Required ACL:** `confd.users.{user_id}.agents.delete`'
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/useriduuid'
      responses:
        '204':
          description: The user and agent have been dissociated.
        '400':
          $ref: '#/components/responses/GenericError'
        '404':
          $ref: '#/components/responses/NotFoundError'
    servers:
    - url: /1.1
  /users/{user_id}/agents/{agent_id}:
    put:
      operationId: associate_user_agent
      summary: Associate user and agent
      description: '**Required ACL:** `confd.users.{user_id}.agents.{agent_id}.update`'
      tags:
      - agents
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/useriduuid'
      - $ref: '#/components/parameters/agentid'
      responses:
        '204':
          description: The user and agent have been associated.
        '400':
          $ref: '#/components/responses/GenericError'
        '404':
          $ref: '#/components/responses/NotFoundError'
    servers:
    - url: /1.1
components:
  schemas:
    AgentPauseReason:
      title: Pause reason information
      properties:
        reason:
          type: string
          description: Pause Reason
    LoginInfo:
      title: Login information
      properties:
        extension:
          type: string
          description: Extension
        context:
          type: string
          description: Context
        endpoint:
          type: string
          description: Name of the endpoint, in the format `interface/name` e.g `PJSIP/alice`. Must be a valid endpoint for the extension and context.
    AgentStatus:
      title: Agent status
      properties:
        id:
          type: integer
          format: int32
          description: Agent's ID
        tenant_uuid:
          type: string
          format: uuid
          description: Tenant's UUID
        origin_uuid:
          type: string
          format: uuid
          description: Wazo's UUID
        number:
          type: string
          description: Agent's number
        logged:
          type: boolean
          description: True if the agent is logged, else false
        paused:
          type: boolean
          description: True if the agent is paused, else false
        paused_reason:
          type: string
          description: The reason of the agent pause
        extension:
          type: string
          description: The extension on which the agent is logged, or null if the agent is not logged
        context:
          type: string
          description: The context on which the agent is logged, or null if the agent is not logged
        state_interface:
          type: string
          description: The interface (e.g. SIP/alice) to determine if the agent is in use or not
        queues:
          type: array
          description: The agent status for each queue
          items:
            $ref: '#/components/schemas/AgentQueueStatus'
    UserAgentLoginInfo:
      title: Login information
      properties:
        line_id:
          type: integer
          description: ID of the line where the agent should be logged
    AgentQueueStatus:
      properties:
        id:
          type: integer
          description: Queue's ID
        name:
          type: string
          description: Queue's name
        display_name:
          type: string
          description: Queue's display name
        logged:
          type: boolean
          description: True if the agent is logged on this queue, else false
        paused:
          type: boolean
          description: True if the agent is paused on this queue, else false
        paused_reason:
          type: string
          description

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