swagger: '2.0' info: title: wazo-provd description: Provisioning application REST API version: '0.2' 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 schemes: - https basePath: /api/provd/0.2 consumes: - application/vnd.proformatique.provd+json produces: - application/vnd.proformatique.provd+json x-xivo-name: provd x-xivo-port: 8666 securityDefinitions: wazo_auth_token: type: apiKey name: X-Auth-Token in: header security: - wazo_auth_token: [] paths: /: get: summary: Get the Provd Manager resource description: '**Required ACL:** `provd.read` The provd manager resource represents the main entry point to the wazo-provd REST API ' tags: - provd responses: '200': description: OK schema: $ref: '#/definitions/LinksObject' /configure: get: summary: Get the general provd configuration description: '**Required ACL:** `provd.configure.read`' tags: - provd responses: '200': description: OK schema: $ref: '#/definitions/GeneralConfigsObject' /configure/{param_id}: get: summary: Get the configuration parameter value description: '''**Required ACL:** `provd.configure.{param_id}.read`'' Wazo-Tenant header is only valid for `provisioning_key` ' tags: - provd parameters: - $ref: '#/parameters/ParamId' - $ref: '#/parameters/TenantUUID' responses: '200': description: OK schema: $ref: '#/definitions/Param' '404': $ref: '#/responses/NoSuchResourceError' put: summary: Set the value of a parameter description: '**Required ACL:** `provd.configure.{param_id}.update`' tags: - provd parameters: - $ref: '#/parameters/ParamId' - $ref: '#/parameters/ParamBody' responses: '204': $ref: '#/responses/NoContentResponse' '404': $ref: '#/responses/NoSuchResourceError' '415': $ref: '#/responses/UnsupportedMediaError' /configure/plugin_server: put: summary: Update the configuration's plugin_server description: '**Required ACL:** `provd.configure.plugin_server.update`' tags: - provd parameters: - name: body in: body description: Configuration parameter body definition schema: $ref: '#/definitions/PluginServer' responses: '204': $ref: '#/responses/NoContentResponse' '404': $ref: '#/responses/NoSuchResourceError' '415': $ref: '#/responses/UnsupportedMediaError' /configure/http_proxy: put: summary: Update the configuration's http_proxy description: '**Required ACL:** `provd.configure.http_proxy.update`' tags: - provd parameters: - name: body in: body description: Configuration parameter body definition schema: $ref: '#/definitions/HttpProxy' responses: '204': $ref: '#/responses/NoContentResponse' '404': $ref: '#/responses/NoSuchResourceError' '415': $ref: '#/responses/UnsupportedMediaError' /configure/https_proxy: put: summary: Update the configuration's https_proxy description: '**Required ACL:** `provd.configure.https_proxy.update`' tags: - provd parameters: - name: body in: body description: Configuration parameter body definition schema: $ref: '#/definitions/HttpsProxy' responses: '204': $ref: '#/responses/NoContentResponse' '404': $ref: '#/responses/NoSuchResourceError' '415': $ref: '#/responses/UnsupportedMediaError' /configure/ftp_proxy: put: summary: Update the configuration's ftp_proxy description: '**Required ACL:** `provd.configure.ftp_proxy.update`' tags: - provd parameters: - name: body in: body description: Configuration parameter body definition schema: $ref: '#/definitions/FtpProxy' responses: '204': $ref: '#/responses/NoContentResponse' '404': $ref: '#/responses/NoSuchResourceError' '415': $ref: '#/responses/UnsupportedMediaError' /configure/locale: put: summary: Update the configuration's locale description: '**Required ACL:** `provd.configure.locale.update`' tags: - provd parameters: - name: body in: body description: Configuration parameter body definition schema: $ref: '#/definitions/Locale' responses: '204': $ref: '#/responses/NoContentResponse' '404': $ref: '#/responses/NoSuchResourceError' '415': $ref: '#/responses/UnsupportedMediaError' /configure/NAT: put: summary: Update the configuration's NAT description: '**Required ACL:** `provd.configure.nat.update`' tags: - provd parameters: - name: body in: body description: Configuration parameter body definition schema: $ref: '#/definitions/Nat' responses: '204': $ref: '#/responses/NoContentResponse' '404': $ref: '#/responses/NoSuchResourceError' '415': $ref: '#/responses/UnsupportedMediaError' /configure/provisioning_key: put: summary: Update the tenant provisioning key description: '**Required ACL:** `provd.configure.{tenant_uuid}.provisioning_key.update`' tags: - provd parameters: - name: body in: body description: Configuration parameter body definition schema: $ref: '#/definitions/ProvisioningKey' - $ref: '#/parameters/TenantUUID' responses: '204': $ref: '#/responses/NoContentResponse' '400': $ref: '#/responses/BadRequestError' '404': $ref: '#/responses/NoSuchResourceError' '415': $ref: '#/responses/UnsupportedMediaError' /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 schema: $ref: '#/definitions/LinksObject' examples: links: - href: /dev_mgr/synchronize rel: dev.synchronize - href: /dev_mgr/reconfigure rel: dev.reconfigure - href: /dev_mgr/dhcpinfo rel: dev.dhcpinfo - href: /dev_mgr/devices rel: dev.devices /dev_mgr/devices: get: summary: List and find devices description: '**Required ACL:** `provd.dev_mgr.devices.read`' tags: - devices parameters: - $ref: '#/parameters/SearchQuery' - $ref: '#/parameters/SearchFields' - $ref: '#/parameters/Skip' - $ref: '#/parameters/SortEntries' - $ref: '#/parameters/SortOrder' - $ref: '#/parameters/TenantUUID' - $ref: '#/parameters/Recurse' responses: '200': $ref: '#/responses/DevicesResponse' post: summary: Create a device description: '**Required ACL:** `provd.dev_mgr.devices.create`' tags: - devices parameters: - name: device in: body description: Device to create schema: $ref: '#/definitions/DeviceObject' - $ref: '#/parameters/TenantUUID' responses: '201': $ref: '#/responses/DeviceCreationResponse' '400': $ref: '#/responses/BadRequestError' '415': $ref: '#/responses/UnsupportedMediaError' /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: '#/parameters/DeviceId' - $ref: '#/parameters/TenantUUID' responses: '200': $ref: '#/responses/DeviceUniqueResponse' '404': $ref: '#/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: '#/parameters/DeviceId' - name: device in: body description: Device information to update schema: $ref: '#/definitions/DeviceObject' - $ref: '#/parameters/TenantUUID' responses: '204': $ref: '#/responses/NoContentResponse' '404': $ref: '#/responses/NoSuchResourceError' '415': $ref: '#/responses/UnsupportedMediaError' '500': $ref: '#/responses/InternalServerError' delete: summary: Delete a device description: '**Required ACL:** `provd.dev_mgr.devices.{device_id}.delete`' tags: - devices parameters: - $ref: '#/parameters/DeviceId' - $ref: '#/parameters/TenantUUID' responses: '204': $ref: '#/responses/NoContentResponse' '404': $ref: '#/responses/NoSuchResourceError' /dev_mgr/synchronize: post: summary: Synchronize a device description: '**Required ACL:** `provd.dev_mgr.synchronize.create`' tags: - devices parameters: - $ref: '#/parameters/DeviceIdBody' - $ref: '#/parameters/TenantUUID' responses: '201': description: Device synchronized headers: Location: description: Location of the OperationInProgress resource type: string '415': $ref: '#/responses/UnsupportedMediaError' /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: '#/parameters/OperationId' responses: '200': description: OK schema: $ref: '#/definitions/OperationInProgressObject' '404': $ref: '#/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: '#/parameters/OperationId' responses: '204': $ref: '#/responses/NoContentResponse' '404': $ref: '#/responses/NoSuchResourceError' /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: '#/parameters/DeviceIdBody' - $ref: '#/parameters/TenantUUID' responses: '204': $ref: '#/responses/NoContentResponse' '400': $ref: '#/responses/BadRequestError' /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: '#/parameters/DeviceDHCPInfo' - $ref: '#/parameters/TenantUUID' responses: '204': $ref: '#/responses/NoContentResponse' /cfg_mgr: get: summary: Get the Config Manager resource description: '**Required ACL:** `provd.cfg_mgr.read` The configuration manager resource represents the entry point to the wazo-provd configuration REST API ' tags: - configs responses: '200': description: Links to the different configuration resources schema: $ref: '#/definitions/LinksObject' examples: links: - href: /cfg_mgr/configs rel: cfg.configs - href: /cfg_mgr/autocreate rel: cfg.autocreate /cfg_mgr/configs: get: summary: List and find configurations description: '**Required ACL:** `provd.cfg_mgr.configs.read`' tags: - configs parameters: - $ref: '#/parameters/SearchQuery' - $ref: '#/parameters/SearchFields' - $ref: '#/parameters/Skip' - $ref: '#/parameters/SortEntries' - $ref: '#/parameters/SortOrder' responses: '200': $ref: '#/responses/ConfigsResponse' post: summary: Create a configuration description: '**Required ACL:** `provd.cfg_mgr.configs.create`' tags: - configs parameters: - $ref: '#/parameters/ConfigParam' responses: '201': $ref: '#/responses/ConfigCreationResponse' /cfg_mgr/configs/{config_id}: get: summary: Get a configuration description: '**Required ACL:** `provd.cfg_mgr.configs.{config_id}.read`' tags: - configs parameters: - $ref: '#/parameters/ConfigId' responses: '200': $ref: '#/responses/ConfigUniqueResponse' '404': $ref: '#/responses/NoSuchResourceError' put: summary: Update a configuration description: '**Required ACL:** `provd.cfg_mgr.configs.{config_id}.update`' tags: - configs parameters: - $ref: '#/parameters/ConfigId' - $ref: '#/parameters/ConfigParam' responses: '204': $ref: '#/responses/NoContentResponse' '404': $ref: '#/responses/NoSuchResourceError' '500': $ref: '#/responses/InternalServerError' delete: summary: Delete a configuration description: '**Required ACL:** `provd.cfg_mgr.configs.{config_id}.delete`' tags: - configs parameters: - $ref: '#/parameters/ConfigId' responses: '204': $ref: '#/responses/NoContentResponse' '403': $ref: '#/responses/ForbiddenResponse' '404': $ref: '#/responses/NoSuchResourceError' /cfg_mgr/configs/{config_id}/raw: get: summary: Get a raw configuration description: '**Required ACL:** `provd.cfg_mgr.configs.{config_id}.raw.read`' tags: - configs parameters: - $ref: '#/parameters/ConfigId' responses: '200': description: A raw configuration response schema: $ref: '#/definitions/RawConfigurationObject' '404': $ref: '#/responses/NoSuchResourceError' /cfg_mgr/autocreate: post: summary: Create an autocreate configuration description: '**Required ACL:** `provd.cfg_mgr.autocreate.create` Create a new config based on the config that has the autocreate role ' tags: - configs parameters: - $ref: '#/parameters/EmptyBody' responses: '201': $ref: '#/responses/ConfigCreationResponse' /pg_mgr: get: summary: Get the Plugin Manager resource description: '**Required ACL:** `provd.pg_mgr.read` The plugin manager resource represents the entry point to the wazo-provd plugin REST API ' tags: - plugins responses: '200': description: Links to the different plugin resources schema: $ref: '#/definitions/LinksObject' examples: links: - href: /pg_mgr/install rel: srv.install - href: /pg_mgr/plugins rel: pg.plugins - href: /pg_mgr/reload rel: pg.reload /pg_mgr/plugins: get: summary: List the installed plugins description: '**Required ACL:** `provd.pg_mgr.plugins.read`' tags: - plugins responses: '200': description: List of all the installed plugins and their resources schema: $ref: '#/definitions/PluginsObject' examples: plugins: xivo-aastra-3.3.1-SP4: links: - href: /pg_mgr/plugins/xivo-aastra-3.3.1-SP4 rel: pg.plugin xivo-cisco-sccp-9.0.3: links: - href: /pg_mgr/plugins/xivo-cisco-sccp-9.0.3 rel: pg.plugin /pg_mgr/plugins/{plugin_id}: get: summary: Get the resources of a specific plugin description: '**Required ACL:** `provd.pg_mgr.plugins.{plugin_id}.read`' tags: - plugins parameters: - $ref: '#/parameters/PluginId' responses: '200': description: OK schema: $ref: '#/definitions/LinksObject' examples: links: - href: /pg_mgr/plugins/xivo-aastra-3.3.1-SP4 rel: pg.plugin '404': $ref: '#/responses/NoSuchResourceError' /pg_mgr/plugins/{plugin_id}/info: get: summary: Get the information of a plugin description: '**Required ACL:** `provd.pg_mgr.plugins.{plugin_id}.info.read`' tags: - plugins parameters: - $ref: '#/parameters/PluginId' responses: '200': description: OK schema: $ref: '#/definitions/PluginInfo' examples: plugin_info: capabilities: Aastra, 6730i, 3.3.1.5089: sip.lines: 6 Aastra, 6731i, 3.3.1.2235: sip.lines: 6 switchboard: true description: Plugin for Aastra 6730i, 6731i, ... version: '1.1' '404': $ref: '#/responses/NoSuchResourceError' /pg_mgr/plugins/{plugin_id}/install: get: summary: Get the package installation service resources description: '**Required ACL:** `provd.pg_mgr.plugins.{plugin_id}.install.read`' tags: - plugins parameters: - $ref: '#/parameters/PluginId' responses: '200': description: OK schema: $ref: '#/definitions/LinksObject' examples: links: - href: /pg_mgr/plugins/test-plugin/install/install rel: srv.install.install - href: /pg_mgr/plugins/test-plugin/install/uninstall rel: srv.install.uninstall - href: /pg_mgr/plugins/test-plugin/install/installed rel: srv.install.installed - href: /pg_mgr/plugins/test-plugin/install/installable rel: srv.install.installable '404': $ref: '#/responses/NoSuchResourceError' /pg_mgr/plugins/{plugin_id}/install/install: post: summary: Install a package description: '**Required ACL:** `provd.pg_mgr.plugins.{plugin_id}.install.install.create`' tags: - plugins parameters: - $ref: '#/parameters/PluginId' - $ref: '#/parameters/PackageIdBody' responses: '201': $ref: '#/responses/OperationInProgressResponse' '400': $ref: '#/responses/InvalidJSONError' '404': $ref: '#/responses/NoSuchResourceError' '415': $ref: '#/responses/UnsupportedMediaError' /pg_mgr/plugins/{plugin_id}/install/install/{operation_id}: get: summary: Get the status of a package installation Operation In Progress description: '**Required ACL:** `provd.operation.read`' tags: - plugins parameters: - $ref: '#/parameters/PluginId' - $ref: '#/parameters/OperationId' responses: '200': description: OK schema: $ref: '#/definitions/OperationInProgressObject' '404': $ref: '#/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: - plugins parameters: - $ref: '#/parameters/PluginId' - $ref: '#/parameters/OperationId' responses: '204': $ref: '#/responses/NoContentResponse' '404': $ref: '#/responses/NoSuchResourceError' /pg_mgr/plugins/{plugin_id}/install/uninstall: post: summary: Uninstall a package description: '**Required ACL:** `provd.pg_mgr.plugins.{plugin_id}.install.uninstall.create`' tags: - plugins parameters: - $ref: '#/parameters/PluginId' - $ref: '#/parameters/PackageIdBody' responses: '204': $ref: '#/responses/NoContentResponse' '400': $ref: '#/responses/InvalidJSONError' '404': $ref: '#/responses/NoSuchResourceError' '415': $ref: '#/responses/UnsupportedMediaError' /pg_mgr/plugins/{plugin_id}/install/upgrade/{operation_id}: get: summary: Get the status of a package upgrade Operation In Progress description: '**Required ACL:** `provd.operation.read`' tags: - plugins parameters: - $ref: '#/parameters/PluginId' - $ref: '#/parameters/OperationId' responses: '200': description: OK schema: $ref: '#/definitions/OperationInProgressObject' '404': $ref: '#/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: - plugins parameters: - $ref: '#/parameters/PluginId' - $ref: '#/parameters/OperationId' responses: '204': $ref: '#/responses/NoContentResponse' '404': $ref: '#/responses/NoSuchResourceError' /pg_mgr/plugins/{plugin_id}/install/installable: get: summary: Get the installable packages list description: '**Required ACL:** `provd.pg_mgr.plugins.{plugin_id}.install.installable.read`' tags: - plugins parameters: - $ref: '#/parameters/PluginId' responses: '200': description: OK schema: $ref: '#/definitions/PackageList' '404': $ref: '#/responses/NoSuchResourceError' /pg_mgr/plugins/{plugin_id}/install/installed: get: summary: Get the installed packages list description: '**Required ACL:** `provd.pg_mgr.plugins.{plugin_id}.install.installed.read`' tags: - plugins parameters: - $ref: '#/parameters/PluginId' responses: '200': description: OK schema: $ref: '#/definitions/PackageList' '404': $ref: '#/responses/NoSuchResourceError' /pg_mgr/install: get: summary: Get the installation service resources description: '**Required ACL:** `provd.pg_mgr.install.read`' tags: - plugins responses: '200': description: OK schema: $ref: '#/definitions/LinksObject' examples: links: - href: /pg_mgr/install/install rel: srv.install.install - href: /pg_mgr/install/uninstall rel: srv.install.uninstall - href: /pg_mgr/install/installed rel: srv.install.installed - href: /pg_mgr/install/installable rel: srv.install.installable - href: /pg_mgr/install/upgrade rel: srv.install.upgrade - href: /pg_mgr/install/update rel: srv.install.update /pg_mgr/install/install: post: summary: Install a plugin description: '**Required ACL:** `provd.pg_mgr.install.install.create`' tags: - plugins parameters: - $ref: '#/parameters/PackageIdBody' responses: '201': $ref: '#/responses/OperationInProgressResponse' '400': $ref: '#/responses/InvalidJSONError' '415': $ref: '#/responses/UnsupportedMediaError' /pg_mgr/install/install/{operation_id}: get: summary: Get the status of a plugin installation Operation In Progress description: '**Required ACL:** `provd.operation.read`' tags: - plugins parameters: - $ref: '#/parameters/OperationId' responses: '200': description: OK schema: $ref: '#/definitions/OperationInProgressObject' '404': $ref: '#/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: - plugins parameters: - $ref: '#/parameters/OperationId' responses: '204': $ref: '#/responses/NoContentResponse' '404': $ref: '#/responses/NoSuchResourceError' /pg_mgr/install/uninstall: post: summary: Uninstall a plugin description: '**Required ACL:** `provd.pg_mgr.install.uninstall.create`' tags: - plugins parameters: - $ref: '#/parameters/PackageIdBody' responses: '204': $ref: '#/responses/NoContentResponse' '400': $ref: '#/responses/InvalidJSONError' '415': $ref: '#/responses/UnsupportedMediaError' /pg_mgr/install/upgrade: post: summary: Upgrade a plugin description: '**Required ACL:** `provd.pg_mgr.install.upgrade.create`' tags: - plugins parameters: - $ref: '#/parameters/PackageIdBody' responses: '201': $ref: '#/responses/OperationInProgressResponse' '400': $ref: '#/responses/InvalidJSONError' '415': $ref: '#/responses/UnsupportedMediaError' /pg_mgr/install/upgrade/{operation_id}: get: summary: Get the status of a plugin upgrade Operation In Progress description: '**Required ACL:** `provd.operation.read`' tags: - plugins parameters: - $ref: '#/parameters/OperationId' responses: '200': description: OK schema: $ref: '#/definitions/OperationInProgressObject' '404': $ref: '#/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: - plugins parameters: - $ref: '#/parameters/OperationId' responses: '204': $ref: '#/responses/NoContentResponse' '404': $ref: '#/responses/NoSuchResourceError' /pg_mgr/install/update: post: summary: Update the List of installable plugins description: '**Required ACL:** `provd.pg_mgr.install.update.create`' tags: - plugins parameters: - $ref: '#/parameters/EmptyBody' responses: '201': $ref: '#/responses/OperationInProgressResponse' '400': $ref: '#/responses/InvalidJSONError' /pg_mgr/install/update/{operation_id}: get: summary: Get the status of a plugin database update Operation In Progress description: '**Required ACL:** `provd.operation.read`' tags: - plugins parameters: - $ref: '#/parameters/OperationId' responses: '200': description: OK schema: $ref: '#/definitions/OperationInProgressObject' '404': $ref: '#/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: - plugins parameters: - $ref: '#/parameters/OperationId' responses: '204': $ref: '#/responses/NoContentResponse' '404': $ref: '#/responses/NoSuchResourceError' /pg_mgr/install/installable: get: summary: Get the installable plugins list description: '**Required ACL:** `provd.pg_mgr.install.installable.read`' tags: - plugins responses: '200': description: OK schema: $ref: '#/definitions/PackageList' /pg_mgr/install/installed: get: summary: Get the installed plugins list description: '**Required ACL:** `provd.pg_mgr.install.installed.read`' tags: - plugins responses: '200': description: OK schema: $ref: '#/definitions/PackageList' /pg_mgr/reload: post: summary: Reload a plugin description: '**Required ACL:** `provd.pg_mgr.reload.create` This is mostly useful during plugin development, after changing the code of the plugin, instead of restarting the wazo-provd application ' tags: - plugins parameters: - $ref: '#/parameters/PluginIdBody' responses: '204': $ref: '#/responses/NoContentResponse' /status: get: summary: Print infos about internal status of wazo-provd description: '**Required ACL:** `provd.status.read`' tags: - status responses: '200': description: The internal infos of wazo-provd schema: $ref: '#/definitions/StatusSummary' parameters: 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 type: string SearchFields: name: fields in: query description: 'A list of fields, separated by comma. Example: `mac,ip` ' required: false type: string Skip: name: skip in: query description: 'An integer specifing the number of entries to skip. Example: 10 ' required: false type: integer SortEntries: name: sort in: query description: 'The key on which to sort the results. Example: `id` ' required: false type: string SortOrder: name: sort_ord in: query description: The order of sort enum: - ASC - DESC required: false type: string ParamId: required: true type: string name: param_id in: path description: Configuration parameter ID ParamBody: description: Configuration parameter body definition name: body in: body schema: $ref: '#/definitions/Param' DeviceId: required: true type: string name: device_id in: path description: Device ID OperationId: required: true type: string name: operation_id in: path description: Operation In Progress ID ConfigId: required: true type: string name: config_id in: path description: Configuration ID PluginId: required: true type: string name: plugin_id in: path description: Plugin ID PluginIdBody: description: Plugin ID body definition name: body in: body schema: $ref: '#/definitions/IdObject' PackageIdBody: description: Package ID body definition name: body in: body schema: $ref: '#/definitions/IdObject' EmptyBody: description: Empty object body name: body in: body schema: $ref: '#/definitions/EmptyObject' DeviceIdBody: description: Device ID body definition name: body in: body schema: $ref: '#/definitions/IdObject' DeviceDHCPInfo: description: DHCP request information name: body in: body schema: $ref: '#/definitions/DHCPInfoObject' ConfigParam: description: Body of a configuration parameter name: body in: body schema: $ref: '#/definitions/ConfigObject' TenantUUID: name: Wazo-Tenant type: string in: header description: The tenant's UUID, defining the ownership of a given resource Recurse: name: recurse in: query type: boolean description: Should the query include sub-tenants default: false responses: DevicesResponse: description: A list of devices schema: $ref: '#/definitions/DevicesList' DeviceUniqueResponse: description: A complete device response schema: $ref: '#/definitions/DeviceObject' ConfigsResponse: description: List of configurations schema: $ref: '#/definitions/ConfigsObject' ConfigUniqueResponse: description: A complete configuration response schema: $ref: '#/definitions/ConfigObject' ConfigCreationResponse: description: Configuration created. If the ``id`` field was not given, then the ID was automatically generated by the server. schema: $ref: '#/definitions/IdObject' headers: Location: description: Location of the newly created configuration. type: string DeviceCreationResponse: description: Device creation response schema: $ref: '#/definitions/IdObject' headers: Location: description: Location of the newly created device type: string OperationInProgressResponse: description: Operation in progress headers: Location: description: Location of the OperationInProgress resource type: string NoContentResponse: description: No content UnsupportedMediaError: description: Unsupported media type. This error occurs if you forgot to include the Content-Type header schema: $ref: '#/definitions/ErrorMessage' ForbiddenResponse: description: The operation is not permitted for this resource. schema: $ref: '#/definitions/ErrorMessage' NoSuchResourceError: description: No such resource. The provided id does not exist schema: $ref: '#/definitions/ErrorMessage' InternalServerError: description: Internal Server Error. The IP or MAC address may be malformed schema: $ref: '#/definitions/ErrorMessage' InvalidJSONError: description: Invalid JSON document schema: $ref: '#/definitions/ErrorMessage' BadRequestError: description: Bad request. The device ID, IP or MAC may be invalid schema: $ref: '#/definitions/ErrorMessage' definitions: PluginServer: title: Plugin server configuration properties: param: type: string description: The plugins repository URL example: param: value: http://provd.wazo.community/plugins/2/stable/ HttpProxy: title: HTTP proxy configuration properties: param: type: string description: The proxy for HTTP requests. Format is `http://[user:password@]host:port` example: param: value: http://root:secret@example.com:8080 HttpsProxy: title: HTTPS proxy configuration properties: param: type: string description: The proxy for HTTPS requests. Format is `host:port` example: param: value: example.com:8081 FtpProxy: title: FTP proxy configuration properties: param: type: string description: The proxy for FTP requests. Format is `http://[user:password@]host:port` example: param: value: http://root:secret@example.com:8082 Locale: title: Locale configuration properties: param: type: string description: 'The current locale. For example: `en_US`' example: param: value: en_US Nat: title: NAT configuration properties: param: type: string description: Set to `1` if all the devices are behind a NAT example: param: value: '1' ProvisioningKey: description: Provisioning Key configuration properties: param: type: string description: Provisioning key used to authenticate request to fetch provisioning configuration file example: param: value: a1b2c3d4e5f6g7h8 ComponentWithStatus: type: object properties: status: $ref: '#/definitions/StatusValue' ErrorMessage: description: Error message response type: string LinksObject: description: Links object type: object properties: links: type: array description: Links to different resources items: $ref: '#/definitions/LinkObject' LinkObject: description: Link Object type: object properties: href: type: string description: Location of the resource rel: type: string description: Relation to the resource ConfigObject: description: A configuration object properties: config: $ref: '#/definitions/Config' Config: description: A complete configuration properties: id: type: string description: The unique configuration id deletable: type: boolean parent_ids: type: array items: type: string description: ID of a parent of the configuration raw_config: $ref: '#/definitions/RawConfigurationObject' example: id: abcdef123456890 deletable: true parent_ids: - base raw_config: sip_lines: 1: auth_username: '100' display_name: Foo password: '100' username: '100' DevicesList: description: A list of devices properties: devices: type: array items: $ref: '#/definitions/Device' DeviceObject: description: A device object properties: device: $ref: '#/definitions/Device' Device: 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 Package: type: object properties: capabilities: $ref: '#/definitions/CapabilitiesObject' description: type: string dsize: type: integer sha1sum: type: string version: type: string PackageObject: type: object additionalProperties: $ref: '#/definitions/Package' PackageList: type: object properties: pkgs: $ref: '#/definitions/PackageObject' Param: description: A configuration parameter properties: param: $ref: '#/definitions/ParamObject' example: param: value: http://provd.wazo.community/plugins/2/stable ParamObject: properties: value: type: string IdObject: properties: id: type: string example: id: abcdef1234567890 EmptyObject: description: Empty body properties: {} DHCPInfoObject: properties: dhcp_info: $ref: '#/definitions/DHCPInfo' 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. ' ConfigsObject: properties: configs: type: array items: $ref: '#/definitions/Config' RawConfigurationObject: properties: raw_config: type: object example: raw_config: sip_lines: 1: auth_username: '100' display_name: Foo password: '100' username: '100' GeneralConfigsObject: properties: params: type: array items: $ref: '#/definitions/GeneralConfigObject' GeneralConfigObject: properties: description: type: string id: type: string links: $ref: '#/definitions/LinksObject' value: type: string 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``. ' PluginInfo: properties: plugin_info: $ref: '#/definitions/PluginInfoObject' PluginInfoObject: properties: capabilities: $ref: '#/definitions/CapabilitiesObject' description: type: string version: type: string CapabilitiesObject: type: object additionalProperties: type: object additionalProperties: type: string Plugins: type: object additionalProperties: $ref: '#/definitions/LinksObject' PluginsObject: type: object properties: plugins: $ref: '#/definitions/Plugins' StatusSummary: type: object properties: rest_api: $ref: '#/definitions/ComponentWithStatus' StatusValue: type: string enum: - fail - ok x-apievangelist-source: harvested_from: https://github.com/wazo-platform/wazo-provd assembly: base plugin api.yml deep-merged with all plugin api.yml fragments, reproducing what the running service serves at /api/provd/0.2/api/api.yml (see wazo_provd/plugins/api/http.py — xivo.chain_map.ChainMap) spec_version: Swagger 2.0 (as published by Wazo) harvested: '2026-08-17'