Docker Plugin API

The Plugin API from Docker — 11 operation(s) for plugin.

Operations 11

GET /plugins List plugins #
GET /plugins/privileges Get plugin privileges #
POST /plugins/pull Install a plugin #
GET /plugins/{name}/json Inspect a plugin #
DELETE /plugins/{name} Remove a plugin #
POST /plugins/{name}/enable Enable a plugin #
POST /plugins/{name}/disable Disable a plugin #
POST /plugins/{name}/upgrade Upgrade a plugin #
POST /plugins/create Create a plugin #
POST /plugins/{name}/push Push a plugin #
POST /plugins/{name}/set Configure a plugin #

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/docker-plugin-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

docker-plugin-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: Docker Engine Plugin API
  version: '1.54'
  x-logo:
    url: https://docs.docker.com/assets/images/logo-docker-main.png
  description: The Engine API is an HTTP API served by Docker Engine.
servers:
- url: /v1.54
tags:
- name: Plugin
  x-displayName: Plugins
paths:
  /plugins:
    get:
      summary: List plugins
      operationId: PluginList
      description: Returns information about installed plugins.
      responses:
        200:
          description: No error
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/Plugin'
        500:
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      parameters:
      - name: filters
        in: query
        description: 'A JSON encoded value of the filters (a `map[string][]string`) to

          process on the plugin list.


          Available filters:


          - `capability=<capability name>`

          - `enable=<true>|<false>`

          '
        schema:
          type: string
      tags:
      - Plugin
  /plugins/privileges:
    get:
      summary: Get plugin privileges
      operationId: GetPluginPrivileges
      responses:
        200:
          description: no error
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PluginPrivilege'
                example:
                - Name: network
                  Description: ''
                  Value:
                  - host
                - Name: mount
                  Description: ''
                  Value:
                  - /data
                - Name: device
                  Description: ''
                  Value:
                  - /dev/cpu_dma_latency
            text/plain:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PluginPrivilege'
                example:
                - Name: network
                  Description: ''
                  Value:
                  - host
                - Name: mount
                  Description: ''
                  Value:
                  - /data
                - Name: device
                  Description: ''
                  Value:
                  - /dev/cpu_dma_latency
        500:
          description: server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
            text/plain:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      parameters:
      - name: remote
        in: query
        description: 'The name of the plugin. The `:latest` tag is optional, and is the

          default if omitted.

          '
        required: true
        schema:
          type: string
      tags:
      - Plugin
  /plugins/pull:
    post:
      summary: Install a plugin
      operationId: PluginPull
      description: 'Pulls and installs a plugin. After the plugin is installed, it can be

        enabled using the `POST /plugins/{name}/enable` endpoint.'
      responses:
        204:
          description: no error
        500:
          description: server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      parameters:
      - name: remote
        in: query
        description: 'Remote reference for plugin to install.


          The `:latest` tag is optional, and is used as the default if omitted.

          '
        required: true
        schema:
          type: string
      - name: name
        in: query
        description: 'Local name for the pulled plugin.


          The `:latest` tag is optional, and is used as the default if omitted.

          '
        required: false
        schema:
          type: string
      - name: X-Registry-Auth
        in: header
        description: 'A base64url-encoded auth configuration to use when pulling a plugin

          from a registry.


          Refer to the [authentication section](#section/Authentication) for

          details.

          '
        schema:
          type: string
      tags:
      - Plugin
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/PluginPrivilege'
              example:
              - Name: network
                Description: ''
                Value:
                - host
              - Name: mount
                Description: ''
                Value:
                - /data
              - Name: device
                Description: ''
                Value:
                - /dev/cpu_dma_latency
          text/plain:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/PluginPrivilege'
              example:
              - Name: network
                Description: ''
                Value:
                - host
              - Name: mount
                Description: ''
                Value:
                - /data
              - Name: device
                Description: ''
                Value:
                - /dev/cpu_dma_latency
  /plugins/{name}/json:
    get:
      summary: Inspect a plugin
      operationId: PluginInspect
      responses:
        200:
          description: no error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Plugin'
            text/plain:
              schema:
                $ref: '#/components/schemas/Plugin'
        404:
          description: plugin is not installed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
            text/plain:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        500:
          description: server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
            text/plain:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      parameters:
      - name: name
        in: path
        description: 'The name of the plugin. The `:latest` tag is optional, and is the

          default if omitted.

          '
        required: true
        schema:
          type: string
      tags:
      - Plugin
  /plugins/{name}:
    delete:
      summary: Remove a plugin
      operationId: PluginDelete
      responses:
        200:
          description: no error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Plugin'
            text/plain:
              schema:
                $ref: '#/components/schemas/Plugin'
        404:
          description: plugin is not installed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
            text/plain:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        500:
          description: server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
            text/plain:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      parameters:
      - name: name
        in: path
        description: 'The name of the plugin. The `:latest` tag is optional, and is the

          default if omitted.

          '
        required: true
        schema:
          type: string
      - name: force
        in: query
        description: 'Disable the plugin before removing. This may result in issues if the

          plugin is in use by a container.

          '
        schema:
          type: boolean
          default: false
      tags:
      - Plugin
  /plugins/{name}/enable:
    post:
      summary: Enable a plugin
      operationId: PluginEnable
      responses:
        200:
          description: no error
        404:
          description: plugin is not installed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
            text/plain:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        500:
          description: server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
            text/plain:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      parameters:
      - name: name
        in: path
        description: 'The name of the plugin. The `:latest` tag is optional, and is the

          default if omitted.

          '
        required: true
        schema:
          type: string
      - name: timeout
        in: query
        description: Set the HTTP client timeout (in seconds)
        schema:
          type: integer
          default: 0
      tags:
      - Plugin
  /plugins/{name}/disable:
    post:
      summary: Disable a plugin
      operationId: PluginDisable
      responses:
        200:
          description: no error
        404:
          description: plugin is not installed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
            text/plain:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        500:
          description: server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
            text/plain:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      parameters:
      - name: name
        in: path
        description: 'The name of the plugin. The `:latest` tag is optional, and is the

          default if omitted.

          '
        required: true
        schema:
          type: string
      - name: force
        in: query
        description: 'Force disable a plugin even if still in use.

          '
        required: false
        schema:
          type: boolean
      tags:
      - Plugin
  /plugins/{name}/upgrade:
    post:
      summary: Upgrade a plugin
      operationId: PluginUpgrade
      responses:
        204:
          description: no error
        404:
          description: plugin not installed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
            text/plain:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        500:
          description: server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
            text/plain:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      parameters:
      - name: name
        in: path
        description: 'The name of the plugin. The `:latest` tag is optional, and is the

          default if omitted.

          '
        required: true
        schema:
          type: string
      - name: remote
        in: query
        description: 'Remote reference to upgrade to.


          The `:latest` tag is optional, and is used as the default if omitted.

          '
        required: true
        schema:
          type: string
      - name: X-Registry-Auth
        in: header
        description: 'A base64url-encoded auth configuration to use when pulling a plugin

          from a registry.


          Refer to the [authentication section](#section/Authentication) for

          details.

          '
        schema:
          type: string
      tags:
      - Plugin
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/PluginPrivilege'
              example:
              - Name: network
                Description: ''
                Value:
                - host
              - Name: mount
                Description: ''
                Value:
                - /data
              - Name: device
                Description: ''
                Value:
                - /dev/cpu_dma_latency
          text/plain:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/PluginPrivilege'
              example:
              - Name: network
                Description: ''
                Value:
                - host
              - Name: mount
                Description: ''
                Value:
                - /data
              - Name: device
                Description: ''
                Value:
                - /dev/cpu_dma_latency
  /plugins/create:
    post:
      summary: Create a plugin
      operationId: PluginCreate
      responses:
        204:
          description: no error
        500:
          description: server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
            text/plain:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      parameters:
      - name: name
        in: query
        description: 'The name of the plugin. The `:latest` tag is optional, and is the

          default if omitted.

          '
        required: true
        schema:
          type: string
      tags:
      - Plugin
      requestBody:
        content:
          application/x-tar:
            schema:
              type: string
              format: binary
        description: Path to tar containing plugin rootfs and manifest
  /plugins/{name}/push:
    post:
      summary: Push a plugin
      operationId: PluginPush
      description: Push a plugin to the registry.
      parameters:
      - name: name
        in: path
        description: 'The name of the plugin. The `:latest` tag is optional, and is the

          default if omitted.

          '
        required: true
        schema:
          type: string
      responses:
        200:
          description: no error
        404:
          description: plugin not installed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
            text/plain:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        500:
          description: server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
            text/plain:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      tags:
      - Plugin
  /plugins/{name}/set:
    post:
      summary: Configure a plugin
      operationId: PluginSet
      parameters:
      - name: name
        in: path
        description: 'The name of the plugin. The `:latest` tag is optional, and is the

          default if omitted.

          '
        required: true
        schema:
          type: string
      responses:
        204:
          description: No error
        404:
          description: Plugin not installed
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
            text/plain:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        500:
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
            text/plain:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      tags:
      - Plugin
      requestBody:
        content:
          application/json:
            schema:
              type: array
              items:
                type: string
              example:
              - DEBUG=1
components:
  schemas:
    ErrorResponse:
      description: Represents an error.
      type: object
      required:
      - message
      properties:
        message:
          description: The error message.
          type: string
      example:
        message: Something went wrong.
    PluginDevice:
      type: object
      x-go-name: Device
      required:
      - Name
      - Description
      - Settable
      - Path
      properties:
        Name:
          type: string
        Description:
          type: string
        Settable:
          type: array
          items:
            type: string
        Path:
          type: string
          example: /dev/fuse
    PluginMount:
      type: object
      x-go-name: Mount
      required:
      - Name
      - Description
      - Settable
      - Source
      - Destination
      - Type
      - Options
      properties:
        Name:
          type: string
          example: some-mount
        Description:
          type: string
          example: This is a mount that's used by the plugin.
        Settable:
          type: array
          items:
            type: string
        Source:
          type: string
          example: /var/lib/docker/plugins/
        Destination:
          type: string
          example: /mnt/state
        Type:
          type: string
          example: bind
        Options:
          type: array
          items:
            type: string
          example:
          - rbind
          - rw
    PluginPrivilege:
      description: 'Describes a permission the user has to accept upon installing

        the plugin.

        '
      type: object
      x-go-name: Privilege
      properties:
        Name:
          type: string
          example: network
        Description:
          type: string
        Value:
          type: array
          items:
            type: string
          example:
          - host
    Plugin:
      description: A plugin for the Engine API
      type: object
      x-go-name: Plugin
      required:
      - Settings
      - Enabled
      - Config
      - Name
      properties:
        Id:
          type: string
          example: 5724e2c8652da337ab2eedd19fc6fc0ec908e4bd907c7421bf6a8dfc70c4c078
        Name:
          type: string
          example: tiborvass/sample-volume-plugin
        Enabled:
          description: True if the plugin is running. False if the plugin is not running, only installed.
          type: boolean
          example: true
        Settings:
          description: user-configurable settings for the plugin.
          type: object
          x-go-name: Settings
          required:
          - Args
          - Devices
          - Env
          - Mounts
          properties:
            Mounts:
              type: array
              items:
                $ref: '#/components/schemas/PluginMount'
            Env:
              type: array
              items:
                type: string
              example:
              - DEBUG=0
            Args:
              type: array
              items:
                type: string
            Devices:
              type: array
              items:
                $ref: '#/components/schemas/PluginDevice'
        PluginReference:
          description: plugin remote reference used to push/pull the plugin
          type: string
          x-go-name: PluginReference
          example: localhost:5000/tiborvass/sample-volume-plugin:latest
        Config:
          description: The config of a plugin.
          type: object
          x-go-name: Config
          required:
          - Description
          - Documentation
          - Interface
          - Entrypoint
          - WorkDir
          - Network
          - Linux
          - PidHost
          - PropagatedMount
          - IpcHost
          - Mounts
          - Env
          - Args
          properties:
            Description:
              type: string
              example: A sample volume plugin for Docker
            Documentation:
              type: string
              example: https://docs.docker.com/engine/extend/plugins/
            Interface:
              description: The interface between Docker and the plugin
              type: object
              x-go-name: Interface
              required:
              - Types
              - Socket
              properties:
                Types:
                  type: array
                  items:
                    type: string
                    x-go-type:
                      type: CapabilityID
                  example:
                  - docker.volumedriver/1.0
                Socket:
                  type: string
                  example: plugins.sock
                ProtocolScheme:
                  type: string
                  example: some.protocol/v1.0
                  description: Protocol to use for clients connecting to the plugin.
                  enum:
                  - ''
                  - moby.plugins.http/v1
            Entrypoint:
              type: array
              items:
                type: string
              example:
              - /usr/bin/sample-volume-plugin
              - /data
            WorkDir:
              type: string
              example: /bin/
            User:
              type: object
              x-go-name: User
              properties:
                UID:
                  type: integer
                  format: uint32
                  example: 1000
                GID:
                  type: integer
                  format: uint32
                  example: 1000
            Network:
              type: object
              x-go-name: NetworkConfig
              required:
              - Type
              properties:
                Type:
                  type: string
                  example: host
            Linux:
              type: object
              x-go-name: LinuxConfig
              required:
              - Capabilities
              - AllowAllDevices
              - Devices
              properties:
                Capabilities:
                  type: array
                  items:
                    type: string
                  example:
                  - CAP_SYS_ADMIN
                  - CAP_SYSLOG
                AllowAllDevices:
                  type: boolean
                  example: false
                Devices:
                  type: array
                  items:
                    $ref: '#/components/schemas/PluginDevice'
            PropagatedMount:
              type: string
              example: /mnt/volumes
            IpcHost:
              type: boolean
              example: false
            PidHost:
              type: boolean
              example: false
            Mounts:
              type: array
              items:
                $ref: '#/components/schemas/PluginMount'
            Env:
              type: array
              items:
                $ref: '#/components/schemas/PluginEnv'
              example:
              - Name: DEBUG
                Description: If set, prints debug messages
                Settable: null
                Value: '0'
            Args:
              type: object
              x-go-name: Args
              required:
              - Name
              - Description
              - Settable
              - Value
              properties:
                Name:
                  type: string
                  example: args
                Description:
                  type: string
                  example: command line arguments
                Settable:
                  type: array
                  items:
                    type: string
                Value:
                  type: array
                  items:
                    type: string
            rootfs:
              type: object
              x-go-name: RootFS
              properties:
                type:
                  type: string
                  example: layers
                diff_ids:
                  type: array
                  items:
                    type: string
                  example:
                  - sha256:675532206fbf3030b8458f88d6e26d4eb1577688a25efec97154c94e8b6b4887
                  - sha256:e216a057b1cb1efc11f8a268f37ef62083e70b1b38323ba252e25ac88904a7e8
    PluginEnv:
      type: object
      x-go-name: Env
      required:
      - Name
      - Description
      - Settable
      - Value
      properties:
        Name:
          type: string
        Description:
          type: string
        Settable:
          type: array
          items:
            type: string
        Value:
          type: string