Docker Plugin API
The Plugin API from Docker — 11 operation(s) for plugin.
The Plugin API from Docker — 11 operation(s) for plugin.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
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.curl "https://apis.io/api/v1/apis/docker-plugin-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
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: 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