Wazo Devices API

The devices API from Wazo — 16 operation(s) for devices.

Operations 24

GET /devices List devices #
POST /devices Create device #
GET /devices/{device_id} Get device #
PUT /devices/{device_id} Update device #
DELETE /devices/{device_id} Delete device #
GET /devices/{device_id}/autoprov Reset device to autoprov #
GET /devices/{device_id}/synchronize Synchronize device #
GET /devices/unallocated List unallocated devices #
PUT /devices/unallocated/{device_id} Assign unallocated device tenant #
GET /devices/{device_id}/lines List lines associated to device #
GET /lines/{line_id}/devices Get Device associated to Line #
PUT /lines/{line_id}/devices/{device_id} Associate line and device #
DELETE /lines/{line_id}/devices/{device_id} Dissociate line and device #
GET /dev_mgr Get the Device Manager resource
GET /dev_mgr/devices List and find devices
POST /dev_mgr/devices Create a device
GET /dev_mgr/devices/{device_id} Get a device by ID
PUT /dev_mgr/devices/{device_id} Update a device
DELETE /dev_mgr/devices/{device_id} Delete a device
POST /dev_mgr/synchronize Synchronize a device
GET /dev_mgr/synchronize/{operation_id} Get the status of a synchronize Operation In Progress
DELETE /dev_mgr/synchronize/{operation_id} Delete the Operation In Progress
POST /dev_mgr/reconfigure Reconfigure a device
POST /dev_mgr/dhcpinfo Push DHCP request information

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-devices-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-devices-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Wazo Devices 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 devices across 2 of this provider''s published API definitions: wazo-confd-api-openapi.yml, wazo-provd-api-openapi.yml. Each path carries the servers of the definition it was published in.'
servers:
- url: /1.1
- url: /api/provd/0.2
security:
- wazo_auth_token: []
tags:
- name: devices
paths:
  /devices:
    get:
      operationId: list_devices
      summary: List devices
      description: '**Required ACL:** `confd.devices.read`'
      tags:
      - devices
      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: Device list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceItems'
        '400':
          $ref: '#/components/responses/GenericError'
    post:
      operationId: create_device
      summary: Create device
      description: '**Required ACL:** `confd.devices.create`'
      tags:
      - devices
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      responses:
        '201':
          description: Device created
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Device'
        '400':
          $ref: '#/components/responses/CreateError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Device'
        description: Device to create
    servers:
    - url: /1.1
  /devices/{device_id}:
    get:
      operationId: get_device
      summary: Get device
      description: '**Required ACL:** `confd.devices.{device_id}.read`'
      tags:
      - devices
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/deviceid'
      responses:
        '200':
          description: Device
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Device'
        '404':
          $ref: '#/components/responses/NotFoundError'
    put:
      operationId: update_device
      summary: Update device
      description: '**Required ACL:** `confd.devices.{device_id}.update`'
      tags:
      - devices
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/deviceid'
      responses:
        '204':
          $ref: '#/components/responses/ResourceUpdated'
        '400':
          $ref: '#/components/responses/UpdateError'
        '404':
          $ref: '#/components/responses/NotFoundError'
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Device'
        required: true
    delete:
      operationId: delete_device
      summary: Delete device
      description: '**Required ACL:** `confd.devices.{device_id}.delete`


        A device can not be deleted if it is linked to a line. You must dissociate the line and the device first.'
      tags:
      - devices
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/deviceid'
      responses:
        '204':
          $ref: '#/components/responses/ResourceDeleted'
        '400':
          $ref: '#/components/responses/DeleteError'
        '404':
          $ref: '#/components/responses/NotFoundError'
    servers:
    - url: /1.1
  /devices/{device_id}/autoprov:
    get:
      operationId: reset_device_autoprov
      summary: Reset device to autoprov
      description: '**Required ACL:** `confd.devices.{device_id}.autoprov.read`


        Resets a device into ‘autoprov’ mode. Once in autoprov, a device can be reprovisionned using another provisioning code. The device’s configuration will be lost when reset to autoprov mode.'
      tags:
      - devices
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/deviceid'
      responses:
        '204':
          description: Device synchronized
        '400':
          $ref: '#/components/responses/GenericError'
        '404':
          $ref: '#/components/responses/NotFoundError'
    servers:
    - url: /1.1
  /devices/{device_id}/synchronize:
    get:
      operationId: synchronize_device
      summary: Synchronize device
      description: '**Required ACL:** `confd.devices.{device_id}.synchronize.read`


        Synchronize a device’s configuration. Used when a configuration has been modified and the changes need to be sent to the device.'
      tags:
      - devices
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/deviceid'
      responses:
        '204':
          description: Device synchronized
        '400':
          $ref: '#/components/responses/GenericError'
        '404':
          $ref: '#/components/responses/NotFoundError'
    servers:
    - url: /1.1
  /devices/unallocated:
    get:
      operationId: list_unallocated_devices
      summary: List unallocated devices
      description: '**Required ACL:** `confd.devices.unallocated.read`'
      tags:
      - devices
      parameters:
      - $ref: '#/components/parameters/order'
      - $ref: '#/components/parameters/direction'
      - $ref: '#/components/parameters/limit'
      - $ref: '#/components/parameters/offset'
      - $ref: '#/components/parameters/search'
      responses:
        '200':
          description: Device list
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DeviceItems'
        '400':
          $ref: '#/components/responses/GenericError'
    servers:
    - url: /1.1
  /devices/unallocated/{device_id}:
    put:
      operationId: assign_unallocated_device_tenant
      summary: Assign unallocated device tenant
      description: '**Required ACL:** `confd.devices.unallocated.{device_id}.update`'
      tags:
      - devices
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/deviceid'
      responses:
        '204':
          $ref: '#/components/responses/ResourceUpdated'
        '400':
          $ref: '#/components/responses/UpdateError'
        '404':
          $ref: '#/components/responses/NotFoundError'
    servers:
    - url: /1.1
  /devices/{device_id}/lines:
    get:
      operationId: get_device_line_association
      summary: List lines associated to device
      description: '**Required ACL:** `confd.devices.{device_id}.lines.read`'
      tags:
      - devices
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/deviceid'
      responses:
        '200':
          description: Line-Device association
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LineDeviceItems'
        '404':
          $ref: '#/components/responses/NotFoundError'
    servers:
    - url: /1.1
  /lines/{line_id}/devices:
    get:
      operationId: get_line_device
      summary: Get Device associated to Line
      description: '**Required ACL:** `confd.lines.{line_id}.devices.read`'
      tags:
      - devices
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/lineid'
      responses:
        '200':
          description: Association between Line and Device
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LineDevice'
        '400':
          description: No device associated to line
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '404':
          $ref: '#/components/responses/NotFoundError'
    servers:
    - url: /1.1
  /lines/{line_id}/devices/{device_id}:
    put:
      operationId: associate_line_device
      summary: Associate line and device
      description: '**Required ACL:** `confd.lines.{line_id}.devices.{device_id}.update`'
      tags:
      - devices
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/lineid'
      - $ref: '#/components/parameters/deviceid'
      responses:
        '204':
          description: Line and device associated
        '400':
          $ref: '#/components/responses/GenericError'
        '404':
          $ref: '#/components/responses/NotFoundError'
    delete:
      operationId: dissociate_line_device
      summary: Dissociate line and device
      description: '**Required ACL:** `confd.lines.{line_id}.devices.{device_id}.delete`'
      tags:
      - devices
      parameters:
      - $ref: '#/components/parameters/tenantuuid'
      - $ref: '#/components/parameters/lineid'
      - $ref: '#/components/parameters/deviceid'
      responses:
        '204':
          description: Line and device dissociated
        '400':
          $ref: '#/components/responses/GenericError'
        '404':
          $ref: '#/components/responses/NotFoundError'
    servers:
    - url: /1.1
  /dev_mgr:
    get:
      summary: Get the Device Manager resource
      description: '**Required ACL:** `provd.dev_mgr.read`


        The device manager resource represents the entry point to the wazo-provd device REST API

        '
      tags:
      - devices
      responses:
        '200':
          description: Links to the different devices resources
          content:
            application/vnd.proformatique.provd+json:
              schema:
                $ref: '#/components/schemas/LinksObject'
    servers:
    - url: /api/provd/0.2
  /dev_mgr/devices:
    get:
      summary: List and find devices
      description: '**Required ACL:** `provd.dev_mgr.devices.read`'
      tags:
      - devices
      parameters:
      - $ref: '#/components/parameters/SearchQuery'
      - $ref: '#/components/parameters/SearchFields'
      - $ref: '#/components/parameters/Skip'
      - $ref: '#/components/parameters/SortEntries'
      - $ref: '#/components/parameters/SortOrder'
      - $ref: '#/components/parameters/TenantUUID'
      - $ref: '#/components/parameters/Recurse'
      responses:
        '200':
          $ref: '#/components/responses/DevicesResponse'
    post:
      summary: Create a device
      description: '**Required ACL:** `provd.dev_mgr.devices.create`'
      tags:
      - devices
      parameters:
      - $ref: '#/components/parameters/TenantUUID'
      responses:
        '201':
          $ref: '#/components/responses/DeviceCreationResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
        '415':
          $ref: '#/components/responses/UnsupportedMediaError'
      requestBody:
        content:
          application/vnd.proformatique.provd+json:
            schema:
              $ref: '#/components/schemas/DeviceObject'
        description: Device to create
    servers:
    - url: /api/provd/0.2
  /dev_mgr/devices/{device_id}:
    get:
      summary: Get a device by ID
      description: '**Required ACL:** `provd.dev_mgr.devices.{device_id}.read`


        Get a device using its ID

        '
      tags:
      - devices
      parameters:
      - $ref: '#/components/parameters/DeviceId'
      - $ref: '#/components/parameters/TenantUUID'
      responses:
        '200':
          $ref: '#/components/responses/DeviceUniqueResponse'
        '404':
          $ref: '#/components/responses/NoSuchResourceError'
    put:
      summary: Update a device
      description: '**Required ACL:** `provd.dev_mgr.devices.{device_id}.update`


        Every field must be specified, otherwise they will be omitted

        '
      tags:
      - devices
      parameters:
      - $ref: '#/components/parameters/DeviceId'
      - $ref: '#/components/parameters/TenantUUID'
      responses:
        '204':
          $ref: '#/components/responses/NoContentResponse'
        '404':
          $ref: '#/components/responses/NoSuchResourceError'
        '415':
          $ref: '#/components/responses/UnsupportedMediaError'
        '500':
          $ref: '#/components/responses/InternalServerError'
      requestBody:
        content:
          application/vnd.proformatique.provd+json:
            schema:
              $ref: '#/components/schemas/DeviceObject'
        description: Device information to update
    delete:
      summary: Delete a device
      description: '**Required ACL:** `provd.dev_mgr.devices.{device_id}.delete`'
      tags:
      - devices
      parameters:
      - $ref: '#/components/parameters/DeviceId'
      - $ref: '#/components/parameters/TenantUUID'
      responses:
        '204':
          $ref: '#/components/responses/NoContentResponse'
        '404':
          $ref: '#/components/responses/NoSuchResourceError'
    servers:
    - url: /api/provd/0.2
  /dev_mgr/synchronize:
    post:
      summary: Synchronize a device
      description: '**Required ACL:** `provd.dev_mgr.synchronize.create`'
      tags:
      - devices
      parameters:
      - $ref: '#/components/parameters/DeviceIdBody'
      - $ref: '#/components/parameters/TenantUUID'
      responses:
        '201':
          description: Device synchronized
          headers:
            Location:
              description: Location of the OperationInProgress resource
              schema:
                type: string
        '415':
          $ref: '#/components/responses/UnsupportedMediaError'
    servers:
    - url: /api/provd/0.2
  /dev_mgr/synchronize/{operation_id}:
    get:
      summary: Get the status of a synchronize Operation In Progress
      description: '**Required ACL:** `provd.operation.read`'
      tags:
      - devices
      parameters:
      - $ref: '#/components/parameters/OperationId'
      responses:
        '200':
          description: OK
          content:
            application/vnd.proformatique.provd+json:
              schema:
                $ref: '#/components/schemas/OperationInProgressObject'
        '404':
          $ref: '#/components/responses/NoSuchResourceError'
    delete:
      summary: Delete the Operation In Progress
      description: '**Required ACL:** `provd.operation.delete`


        This does not cancel the underlying operation; it only deletes the monitor


        Every monitor that is created should be deleted, else they won''t be freed by the process and they will accumulate, taking memory

        '
      tags:
      - devices
      parameters:
      - $ref: '#/components/parameters/OperationId'
      responses:
        '204':
          $ref: '#/components/responses/NoContentResponse'
        '404':
          $ref: '#/components/responses/NoSuchResourceError'
    servers:
    - url: /api/provd/0.2
  /dev_mgr/reconfigure:
    post:
      summary: Reconfigure a device
      description: '**Required ACL:** `provd.dev_mgr.reconfigure.create`


        Regenerate the configuration file for the specified device

        '
      tags:
      - devices
      parameters:
      - $ref: '#/components/parameters/DeviceIdBody'
      - $ref: '#/components/parameters/TenantUUID'
      responses:
        '204':
          $ref: '#/components/responses/NoContentResponse'
        '400':
          $ref: '#/components/responses/BadRequestError'
    servers:
    - url: /api/provd/0.2
  /dev_mgr/dhcpinfo:
    post:
      summary: Push DHCP request information
      description: '**Required ACL:** `provd.dev_mgr.dhcpinfo.create`


        The provisioning server either creates a new device or changes the information of the device with the same MAC address

        '
      tags:
      - devices
      parameters:
      - $ref: '#/components/parameters/DeviceDHCPInfo'
      - $ref: '#/components/parameters/TenantUUID'
      responses:
        '204':
          $ref: '#/components/responses/NoContentResponse'
    servers:
    - url: /api/provd/0.2
components:
  schemas:
    DeviceItems:
      title: DeviceItems
      properties:
        items:
          items:
            $ref: '#/components/schemas/Device'
          type: array
        total:
          type: integer
      required:
      - total
    DeviceOptions:
      title: DeviceOptions
      description: List of standard keys
      properties:
        switchboard:
          type: boolean
          description: Indicate if this device is a switchboard
    LineDeviceItems:
      title: LineDeviceItems
      properties:
        items:
          items:
            $ref: '#/components/schemas/LineDevice'
          type: array
        total:
          type: integer
      required:
      - total
    LineDevice:
      title: LineDevice
      properties:
        line_id:
          type: integer
          description: Line's ID
          readOnly: true
        device_id:
          type: string
          description: Device's ID
          readOnly: true
    Error:
      type: array
      items:
        type: string
    Device:
      title: Device
      properties:
        id:
          type: string
          description: Device ID
          readOnly: true
        description:
          type: string
        ip:
          type: string
          description: IP address (10.0.0.0)
        mac:
          type: string
          description: MAC address (aa:bb:cc:dd:ee:ff)
        model:
          type: string
          description: Device model
        plugin:
          type: string
          description: Provisioning plugin to be used by device
        options:
          $ref: '#/components/schemas/DeviceOptions'
        sn:
          type: string
          description: Serial number
        status:
          type: string
          default: not_configured
          enum:
          - autoprov
          - configured
          - not_configured
          - corrupted
          description: 'Device status.

            - autoprov: Device can be provisionned using a provisioning code

            - configured: Device is configured and ready to be used

            - not_configured: Device has not been completely configured

            - corrupted: Device configuration is corrupted and need repair

            '
          readOnly: true
        template_id:
          type: string
          description: ID of the device template. All device using a device template will have a certain number of common parameters preconfigured for the device
        vendor:
          type: string
          description: Vendor name
        version:
          type: string
          description: Firmware version
        tenant_uuid:
          type: string
          description: The UUID of the tenant
          readOnly: true
        is_new:
          type: boolean
          description: Indicates if the device is a new device, ie in the master tenant
          readOnly: true
    DevicesList:
      description: A list of devices
      properties:
        devices:
          type: array
          items:
            $ref: '#/components/schemas/Device_2'
    IdObject:
      properties:
        id:
          type: string
      example:
        id: abcdef1234567890
    DeviceObject:
      description: A device object
      properties:
        device:
          $ref: '#/components/schemas/Device_2'
    DHCPInfo:
      type: object
      properties:
        ip:
          type: string
          description: The IP address of the device
        mac:
          type: string
          description: The MAC address of the device
        op:
          type: string
          enum:
          - commit
          description: The operation to perform
        options:
          type: array
          items:
            type: string
            description: 'The option string. The first 3 characters are the option number, the following pairs of dot-separated hexadecimal numbers are the option value characters.

              '
    ErrorMessage:
      description: Error message response
      type: string
    LinksObject:
      description: Links object
      type: object
      properties:
        links:
          type: array
          description: Links to different resources
          items:
            $ref: '#/components/schemas/LinkObject'
    OperationInProgressObject:
      properties:
        status:
          type: string
          description: 'The ``status`` field describes the current status of the operation. The format is

            ``[label|]state[;current[/end]](\(sub_oips\))*``. Here are some examples:


            * progress

            * download|progress

            * download|progress;10

            * download|progress;10/100

            * download|progress(file_1|progress;20/100)(file_2|waiting;0/50)

            * download|progress;20/150(file_1|progress)(file_2|waiting)

            * op|progress(op1|progress(op11|progress)(op12|waiting))(op2|progress)


            The state of an operation is either ``waiting``, ``progress``, ``success`` or ``fail``.

            '
    DHCPInfoObject:
      properties:
        dhcp_info:
          $ref: '#/components/schemas/DHCPInfo'
    LinkObject:
      description: Link Object
      type: object
      properties:
        href:
          type: string
          description: Location of the resource
        rel:
          type: string
          description: Relation to the resource
    Device_2:
      description: A device schema
      properties:
        added:
          type: string
          description: Indicated how the device was added
        config:
          type: string
          description: ID of the device configuration. Generally the same as the device ID, except when in autoprov
        configured:
          type: boolean
          readOnly: true
        description:
          type: string
        id:
          type: string
          description: Device ID
        ip:
          type: string
          description: IP address (10.0.0.0)
        mac:
          type: string
          description: MAC address (aa:bb:cc:dd:ee:ff)
        model:
          type: string
          description: Device model
        plugin:
          type: string
          description: Provisioning plugin used by the device
        remote_state_sip_username:
          type: string
        vendor:
          type: string
          description: Vendor name
        version:
          type: string
          description: Firmware version
        tenant_uuid:
          type: string
          description: The tenant UUID, defining the ownership of this device
          readOnly: true
        is_new:
          type: boolean
          description: Indicates if the device is a new device, ie in the master tenant
          readOnly: true
  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'
    UnsupportedMediaError:
      description: Unsupported media type. This error occurs if you forgot to include the Content-Type header
      content:
        application/vnd.proformatique.provd+json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    DeviceCreationResponse:
      description: Device creation response
      headers:
        Location:
          description: Location of the newly created device
          schema:
            type: string
      content:
        application/vnd.proformatique.provd+json:
          schema:
            $ref: '#/components/schemas/IdObject'
    DevicesResponse:
      description: A list of devices
      content:
        application/vnd.proformatique.provd+json:
          schema:
            $ref: '#/components/schemas/DevicesList'
    InternalServerError:
      description: Internal Server Error. The IP or MAC address may be malformed
      content:
        application/vnd.proformatique.provd+json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    NoSuchResourceError:
      description: No such resource. The provided id does not exist
      content:
        application/vnd.proformatique.provd+json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    DeviceUniqueResponse:
      description: A complete device response
      content:
        application/vnd.proformatique.provd+json:
          schema:
            $ref: '#/components/schemas/DeviceObject'
    BadRequestError:
      description: Bad request. The device ID, IP or MAC may be invalid
      content:
        application/vnd.proformatique.provd+json:
          schema:
            $ref: '#/components/schemas/ErrorMessage'
    NoContentResponse:
      description: No content
  parameters:
    lineid:
      required: true
      name: line_id
      in: path
      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
    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
    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
    deviceid:
      required: true
      name: device_id
      in: path
      description: Device's ID
      schema:
        type: string
    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
    TenantUUID:
      name: Wazo-Tenant
      in: header
      description: The tenant's UUID, defining the ownership of a given resource
      schema:
        type: string
    SortEntries:
      name: sort
      in: query
      description: 'The key on which to sort the results.


        Example: `id`

        '
      required: false
      schema:
        type: string
    SortOrder:
      name: sort_ord
      in: query
      description: The order of sort
      required: false
      schema:
        type: string
        enum:
        - ASC
        - DESC
    OperationId:
      required: true
      name: operation_id
      in: path
      description: Operation In Progress ID
      schema:
        type: string
    SearchQuery:
      name: q
      in: query
      description: 'A selector, encoded in JSON, describing which entries should be returned. All entries are returned if not specified.


        Example: `{"ip":"10.34.1.110"}`

        '
      required: false
      schema:
        type: string
    DeviceIdBody:
      description: Device ID body definition
      name: body
      in: body
      schema:
        $ref: '#/components/schemas/IdObject'
    DeviceId:
      required: true
      name: device_id
      in: path
      description: Device ID
      schema:
        type: string
    SearchFields:
      name: fields
      in: query
      description: 'A list of fields, separated by comma.


        Example: `mac,ip`

        '
      required: false
      schema:
        type: string
    DeviceDHCPInfo:
      description: DHCP request information
      name: body
      in: body
      schema:
        $ref: '#/components/schemas/DHCPInfoObject'
    Skip:
      name: skip
      in: query
      description: 'An integer specifing the number of entries to skip.


        Example: 10

        '
      required: false
      schema:
        type: integer
    Recurse:
      name: recurse
      in: query
      description: Should the query include sub-tenants
      schema:
        type: boolean
        default: false
  securitySchemes:
    wazo_auth_token:
      type: apiKey
      name: X-Auth-Token
      in: header
x-refined-from:
- wazo-confd-api-openapi.yml
- wazo-provd-api-openapi.yml
x-xivo-name: agentd
x-xivo-port: 9493
x-apievangelist-source:
  harvested_from: https://github.com/wazo-platform/wazo-agentd
  assembly: base plugin api.yml deep-merged with all plugin api.yml fragments, reproducing what the running service serves at /api/agentd/1.0/api/api.yml (see wazo_agentd/plugins/api/http.py — xivo.chain_map.ChainMap)
  spec_version: Swagger 2.0 (as published by Wazo)
  harvested: '2026-08-17'