Wazo Plugin Management API (wazo-plugind)

Plugin management microservice. Installs, upgrades and uninstalls Wazo plugins from a git or market source, exposes the plugin market and the list of installed plugins, and reports asynchronous install progress.

OpenAPI Specification

wazo-plugind-api-openapi.yml Raw ↑
swagger: '2.0'
info:
  version: '0.2'
  title: wazo-plugind
  description: Wazo's plugin management service
  contact:
    name: Wazo Dev Team
    url: https://wazo-platform.org/
    email: dev@wazo.community
  license:
    name: GPLv3
    url: http://www.gnu.org/licenses/gpl-3.0.html
  x-logo:
    url: https://wazo-platform.org/images/logo-black.svg
    backgroundColor: '#FAFAFA'
    altText: Wazo Logo
x-xivo-port: 9503
x-xivo-name: plugind
basePath: /0.2
schemes:
- https
consumes:
- application/json
produces:
- application/json
securityDefinitions:
  wazo_auth_token:
    type: apiKey
    name: X-Auth-Token
    in: header
security:
- wazo_auth_token: []
paths:
  /config:
    get:
      produces:
      - application/json
      summary: Show the current configuration
      description: '**Required ACL:** `plugind.config.read`'
      operationId: getConfig
      tags:
      - config
      responses:
        '200':
          description: The configuration of the service
  /status:
    get:
      produces:
      - application/json
      summary: Returns the current status of wazo-plugind
      description: '**Required ACL:** `plugind.status.read`'
      operationId: getStatus
      tags:
      - status
      responses:
        '200':
          description: the current status of wazo-plugind
          schema:
            $ref: '#/definitions/StatusSummary'
  /market:
    get:
      tags:
      - plugin
      - market
      summary: List plugins available on the configured market
      description: '**Required ACL:** `plugind.market.read`


        Allow the administrator to get a list of available plugins

        '
      parameters:
      - $ref: '#/parameters/limit'
      - $ref: '#/parameters/offset'
      - $ref: '#/parameters/order'
      - $ref: '#/parameters/direction'
      - $ref: '#/parameters/search'
      - $ref: '#/parameters/namespace_filter'
      - $ref: '#/parameters/name_filter'
      - $ref: '#/parameters/installed_filter'
      responses:
        '200':
          description: The plugin list
          schema:
            $ref: '#/definitions/GetMarketResult'
  /market/{namespace}/{name}:
    get:
      tags:
      - plugin
      - market
      summary: Fetch the information about a plugin from the market
      description: '**Required ACL:** `plugind.market.read`


        Allow the administrator to view a plugins information from the market.

        ---

        '
      parameters:
      - $ref: '#/parameters/namespace'
      - $ref: '#/parameters/name'
      responses:
        '200':
          description: The plugin's information
          schema:
            $ref: '#/definitions/MarketPluginList'
        '400':
          $ref: '#/responses/InvalidRequest'
        '404':
          $ref: '#/responses/NotFoundError'
  /plugins:
    get:
      tags:
      - plugin
      summary: List installed plugins
      description: '**Required ACL:** `plugind.plugins.read`


        Allow the administrator to get a list of all installed plugins

        '
      responses:
        '200':
          description: The plugin list
          schema:
            $ref: '#/definitions/GetPluginsResult'
    post:
      tags:
      - plugin
      summary: Install a plugin
      description: '**Required ACL:** `plugind.plugins.create`


        Allow the administrator to install a plugin on the server.

        '
      parameters:
      - name: reinstall
        required: false
        in: query
        type: boolean
        description: With this option the plugin will be reinstalled if it is already installed
      - name: body
        required: true
        in: body
        description: The plugins' installation parameters
        schema:
          $ref: '#/definitions/PluginInstallParameters'
      responses:
        '200':
          description: Installation started
          schema:
            $ref: '#/definitions/InstallResponse'
        '400':
          $ref: '#/responses/InvalidRequest'
  /plugins/{namespace}/{name}:
    get:
      tags:
      - plugin
      summary: Fetch the information about a plugin that has been installed
      description: '**Required ACL:** `plugind.plugins.{namespace}.{name}.read`


        Allow the administrator to view a plugins metadata file.

        ---

        '
      parameters:
      - $ref: '#/parameters/namespace'
      - $ref: '#/parameters/name'
      responses:
        '200':
          description: The plugin's metadata
          schema:
            $ref: '#/definitions/PluginMetadata'
        '400':
          $ref: '#/responses/InvalidRequest'
        '404':
          $ref: '#/responses/NotFoundError'
    delete:
      tags:
      - plugin
      summary: Uninstall a plugin
      description: '**Required ACL:** `plugind.plugins.{namespace}.{name}.delete`


        Allow the administrator to uninstall a plugin.

        ---

        '
      parameters:
      - $ref: '#/parameters/namespace'
      - $ref: '#/parameters/name'
      responses:
        '204':
          description: Uninstallation started
        '400':
          $ref: '#/responses/InvalidRequest'
        '404':
          $ref: '#/responses/NotFoundError'
parameters:
  direction:
    required: false
    name: direction
    in: query
    type: string
    enum:
    - asc
    - desc
    description: Sort list of items in 'asc' (ascending) or 'desc' (descending) order
  limit:
    required: false
    name: limit
    in: query
    type: integer
    description: Maximum number of items to return in the list
  name:
    required: true
    type: string
    name: name
    in: path
    description: The plugin's name
  namespace:
    required: true
    type: string
    name: namespace
    in: path
    description: The plugin's namespace
  offset:
    required: false
    name: offset
    in: query
    type: integer
    description: Number of items to skip over in the list. Useful for pagination.
  order:
    required: false
    name: order
    in: query
    type: string
    description: Name of the field to use for sorting the list of items returned.
  search:
    required: false
    name: search
    in: query
    type: string
    description: Filter list of items, this search is applied to all fields and is not strict (eba matches Sébastien)
  namespace_filter:
    required: false
    name: namespace
    in: query
    type: string
    description: Search by namespace
  name_filter:
    required: false
    name: name
    in: query
    type: string
    description: Search by name
  installed_filter:
    required: false
    name: installed
    in: query
    type: boolean
    description: Filter installed plugins
definitions:
  Error:
    title: Error
    description: Error message for the client
    properties:
      message:
        description: Human readable explanation of the error
        type: string
      resource:
        description: Name of the resource
        type: string
      error_id:
        description: Identifier of the type of error. It is more precise than the HTTP status code.
        type: string
      details:
        description: Additional information about the error. The keys are specific to each error.
        type: object
      timestamp:
        description: Time when the error occured
        type: number
        format: timestamp
  GetMarketResult:
    type: object
    properties:
      total:
        type: integer
        description: The number of plugins available on the market
      filtered:
        type: integer
        description: The number of plugins matching the given search
      items:
        type: array
        items:
          $ref: '#/definitions/MarketPluginList'
        description: A list of plugins
  GetPluginsResult:
    type: object
    properties:
      total:
        type: integer
        description: The number of plugins installed on the system
      items:
        type: array
        items:
          $ref: '#/definitions/PluginMetadata'
        description: A list of plugins
  InstallResponse:
    type: object
    properties:
      uuid:
        type: string
        description: A UUID associated to this plugin installation
  MarketPluginList:
    type: object
    properties:
      namespace:
        type: string
        description: The namespace of the plugin
      name:
        type: string
        description: The name of the plugin
      versions:
        type: array
        items:
          $ref: '#/definitions/VersionInfo'
        description: Version specific information
  PluginInstallParameters:
    type: object
    properties:
      method:
        type: string
        description: The method used to fetch this plugin
        enum:
        - git
      options:
        type: object
        description: Method dependant installation options
    required:
    - method
  PluginMetadata:
    type: object
    properties:
      namespace:
        type: string
        description: The namespace of the plugin
      name:
        type: string
        description: The name of the plugin
      version:
        type: string
        description: The version of the installed version
  VersionInfo:
    type: object
    properties:
      version:
        type: string
        description: The plugin version
      max_wazo_version:
        type: string
        description: The maximum Wazo version with which this plugin works
      min_wazo_version:
        type: string
        description: The minimum Wazo version with which this plugin works
      upgradable:
        type: boolean
        description: An indication wether installing this version would be an upgrade on not. Unstalled plugins are marked
          as upgradable.
  StatusSummary:
    type: object
    properties:
      master_tenant:
        $ref: '#/definitions/ComponentWithStatus'
      rest_api:
        $ref: '#/definitions/ComponentWithStatus'
  ComponentWithStatus:
    type: object
    properties:
      status:
        $ref: '#/definitions/StatusValue'
  StatusValue:
    type: string
    enum:
    - fail
    - ok
responses:
  InvalidRequest:
    description: Invalid request
    schema:
      $ref: '#/definitions/Error'
  NotFoundError:
    description: Plugin not found
    schema:
      $ref: '#/definitions/Error'
x-apievangelist-source:
  harvested_from: https://github.com/wazo-platform/wazo-plugind
  assembly: base plugin api.yml deep-merged with all plugin api.yml fragments, reproducing what the running service serves
    at /api/plugind/0.2/api/api.yml (see wazo_plugind/plugins/api/http.py — xivo.chain_map.ChainMap)
  spec_version: Swagger 2.0 (as published by Wazo)
  harvested: '2026-08-17'