openapi-directory
Version:
Building & bundling https://github.com/APIs-guru/openapi-directory for easy use from JS
1 lines • 287 kB
JSON
{"openapi":"3.0.0","servers":[{"url":"/v1.33"},{"url":"https://docker.com/{version}","variables":{"version":{"default":"1.33"}}}],"info":{"description":"The Engine API is an HTTP API served by Docker Engine. It is the API the Docker client uses to communicate with the Engine, so everything the Docker client can do can be done with the API.\n\nMost of the client's commands map directly to API endpoints (e.g. `docker ps` is `GET /containers/json`). The notable exception is running containers, which consists of several API calls.\n\n# Errors\n\nThe API uses standard HTTP status codes to indicate the success or failure of the API call. The body of the response will be JSON in the following format:\n\n```\n{\n \"message\": \"page not found\"\n}\n```\n\n# Versioning\n\nThe API is usually changed in each release of Docker, so API calls are versioned to ensure that clients don't break.\n\nFor Docker Engine 17.09, the API version is 1.32. To lock to this version, you prefix the URL with `/v1.32`. For example, calling `/info` is the same as calling `/v1.32/info`.\n\nEngine releases in the near future should support this version of the API, so your client will continue to work even if it is talking to a newer Engine.\n\nIn previous versions of Docker, it was possible to access the API without providing a version. This behaviour is now deprecated will be removed in a future version of Docker.\n\nThe API uses an open schema model, which means server may add extra properties to responses. Likewise, the server will ignore any extra query parameters and request body properties. When you write clients, you need to ignore additional properties in responses to ensure they do not break when talking to newer Docker daemons.\n\nThis documentation is for version 1.33 of the API. Use this table to find documentation for previous versions of the API:\n\nDocker version | API version | Changes\n----------------|-------------|---------\n17.09.x | [1.31](https://docs.docker.com/engine/api/v1.32/) | [API changes](https://docs.docker.com/engine/api/version-history/#v1-32-api-changes)\n17.07.x | [1.31](https://docs.docker.com/engine/api/v1.31/) | [API changes](https://docs.docker.com/engine/api/version-history/#v1-31-api-changes)\n17.06.x | [1.30](https://docs.docker.com/engine/api/v1.30/) | [API changes](https://docs.docker.com/engine/api/version-history/#v1-30-api-changes)\n17.05.x | [1.29](https://docs.docker.com/engine/api/v1.29/) | [API changes](https://docs.docker.com/engine/api/version-history/#v1-29-api-changes)\n17.04.x | [1.28](https://docs.docker.com/engine/api/v1.28/) | [API changes](https://docs.docker.com/engine/api/version-history/#v1-28-api-changes)\n17.03.1 | [1.27](https://docs.docker.com/engine/api/v1.27/) | [API changes](https://docs.docker.com/engine/api/version-history/#v1-27-api-changes)\n1.13.1 & 17.03.0 | [1.26](https://docs.docker.com/engine/api/v1.26/) | [API changes](https://docs.docker.com/engine/api/version-history/#v1-26-api-changes)\n1.13.0 | [1.25](https://docs.docker.com/engine/api/v1.25/) | [API changes](https://docs.docker.com/engine/api/version-history/#v1-25-api-changes)\n1.12.x | [1.24](https://docs.docker.com/engine/api/v1.24/) | [API changes](https://docs.docker.com/engine/api/version-history/#v1-24-api-changes)\n1.11.x | [1.23](https://docs.docker.com/engine/api/v1.23/) | [API changes](https://docs.docker.com/engine/api/version-history/#v1-23-api-changes)\n1.10.x | [1.22](https://docs.docker.com/engine/api/v1.22/) | [API changes](https://docs.docker.com/engine/api/version-history/#v1-22-api-changes)\n1.9.x | [1.21](https://docs.docker.com/engine/api/v1.21/) | [API changes](https://docs.docker.com/engine/api/version-history/#v1-21-api-changes)\n1.8.x | [1.20](https://docs.docker.com/engine/api/v1.20/) | [API changes](https://docs.docker.com/engine/api/version-history/#v1-20-api-changes)\n1.7.x | [1.19](https://docs.docker.com/engine/api/v1.19/) | [API changes](https://docs.docker.com/engine/api/version-history/#v1-19-api-changes)\n1.6.x | [1.18](https://docs.docker.com/engine/api/v1.18/) | [API changes](https://docs.docker.com/engine/api/version-history/#v1-18-api-changes)\n\n# Authentication\n\nAuthentication for registries is handled client side. The client has to send authentication details to various endpoints that need to communicate with registries, such as `POST /images/(name)/push`. These are sent as `X-Registry-Auth` header as a Base64 encoded (JSON) string with the following structure:\n\n```\n{\n \"username\": \"string\",\n \"password\": \"string\",\n \"email\": \"string\",\n \"serveraddress\": \"string\"\n}\n```\n\nThe `serveraddress` is a domain/IP without a protocol. Throughout this structure, double quotes are required.\n\nIf you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), you can just pass this instead of credentials:\n\n```\n{\n \"identitytoken\": \"9cbaf023786cd7...\"\n}\n```\n","title":"Docker Engine API","version":"1.33","x-apisguru-categories":["developer_tools"],"x-logo":{"url":"https://docs.docker.com/images/logo-docker-main.png"},"x-origin":[{"format":"openapi","url":"https://raw.githubusercontent.com/docker/go-docker/master/api/swagger.yaml","version":"3.0"}],"x-providerName":"docker.com","x-serviceName":"engine"},"tags":[{"description":"Create and manage containers.\n","name":"Container","x-displayName":"Containers"},{"name":"Image","x-displayName":"Images"},{"description":"Networks are user-defined networks that containers can be attached to. See the [networking documentation](https://docs.docker.com/engine/userguide/networking/) for more information.\n","name":"Network","x-displayName":"Networks"},{"description":"Create and manage persistent storage that can be attached to containers.\n","name":"Volume","x-displayName":"Volumes"},{"description":"Run new commands inside running containers. See the [command-line reference](https://docs.docker.com/engine/reference/commandline/exec/) for more information.\n\nTo exec a command in a container, you first need to create an exec instance, then start it. These two API endpoints are wrapped up in a single command-line command, `docker exec`.\n","name":"Exec","x-displayName":"Exec"},{"description":"Engines can be clustered together in a swarm. See [the swarm mode documentation](https://docs.docker.com/engine/swarm/) for more information.\n","name":"Swarm","x-displayName":"Swarm"},{"description":"Nodes are instances of the Engine participating in a swarm. Swarm mode must be enabled for these endpoints to work.\n","name":"Node","x-displayName":"Nodes"},{"description":"Services are the definitions of tasks to run on a swarm. Swarm mode must be enabled for these endpoints to work.\n","name":"Service","x-displayName":"Services"},{"description":"A task is a container running on a swarm. It is the atomic scheduling unit of swarm. Swarm mode must be enabled for these endpoints to work.\n","name":"Task","x-displayName":"Tasks"},{"description":"Secrets are sensitive data that can be used by services. Swarm mode must be enabled for these endpoints to work.\n","name":"Secret","x-displayName":"Secrets"},{"description":"Configs are application configurations that can be used by services. Swarm mode must be enabled for these endpoints to work.\n","name":"Config","x-displayName":"Configs"},{"name":"Plugin","x-displayName":"Plugins"},{"name":"System","x-displayName":"System"}],"paths":{"/_ping":{"get":{"description":"This is a dummy endpoint you can use to test if the server is accessible.","operationId":"SystemPing","responses":{"200":{"content":{"text/plain":{"schema":{"example":"OK","type":"string"}}},"description":"no error","headers":{"API-Version":{"description":"Max API Version the server supports","schema":{"type":"string"}},"Docker-Experimental":{"description":"If the server is running with experimental mode enabled","schema":{"type":"boolean"}}}},"500":{"content":{"text/plain":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"server error"}},"summary":"Ping","tags":["System"]}},"/auth":{"post":{"description":"Validate credentials for a registry and, if available, get an identity token for accessing the registry without password.","operationId":"SystemAuth","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/AuthConfig"}}},"description":"Authentication to check"},"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"IdentityToken":"9cbaf023786cd7...","Status":"Login Succeeded"}}},"schema":{"properties":{"IdentityToken":{"description":"An opaque token used to authenticate a user after a successful login","nullable":false,"type":"string"},"Status":{"description":"The status of the authentication","nullable":false,"type":"string"}},"required":["Status"],"type":"object"}}},"description":"An identity token was generated successfully."},"204":{"description":"No error"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Server error"}},"summary":"Check auth configuration","tags":["System"]}},"/build":{"post":{"description":"Build an image from a tar archive with a `Dockerfile` in it.\n\nThe `Dockerfile` specifies how the image is built from the tar archive. It is typically in the archive's root, but can be at a different path or have a different name by specifying the `dockerfile` parameter. [See the `Dockerfile` reference for more information](https://docs.docker.com/engine/reference/builder/).\n\nThe Docker daemon performs a preliminary validation of the `Dockerfile` before starting the build, and returns an error if the syntax is incorrect. After that, each instruction is run one-by-one until the ID of the new image is output.\n\nThe build is canceled if the client drops the connection by quitting or being killed.\n","operationId":"ImageBuild","parameters":[{"description":"Path within the build context to the `Dockerfile`. This is ignored if `remote` is specified and points to an external `Dockerfile`.","in":"query","name":"dockerfile","schema":{"default":"Dockerfile","type":"string"}},{"description":"A name and optional tag to apply to the image in the `name:tag` format. If you omit the tag the default `latest` value is assumed. You can provide several `t` parameters.","in":"query","name":"t","schema":{"type":"string"}},{"description":"Extra hosts to add to /etc/hosts","in":"query","name":"extrahosts","schema":{"type":"string"}},{"description":"A Git repository URI or HTTP/HTTPS context URI. If the URI points to a single text file, the file’s contents are placed into a file called `Dockerfile` and the image is built from that file. If the URI points to a tarball, the file is downloaded by the daemon and the contents therein used as the context for the build. If the URI points to a tarball and the `dockerfile` parameter is also specified, there must be a file with the corresponding path inside the tarball.","in":"query","name":"remote","schema":{"type":"string"}},{"description":"Suppress verbose build output.","in":"query","name":"q","schema":{"default":false,"type":"boolean"}},{"description":"Do not use the cache when building the image.","in":"query","name":"nocache","schema":{"default":false,"type":"boolean"}},{"description":"JSON array of images used for build cache resolution.","in":"query","name":"cachefrom","schema":{"type":"string"}},{"description":"Attempt to pull the image even if an older image exists locally.","in":"query","name":"pull","schema":{"type":"string"}},{"description":"Remove intermediate containers after a successful build.","in":"query","name":"rm","schema":{"default":true,"type":"boolean"}},{"description":"Always remove intermediate containers, even upon failure.","in":"query","name":"forcerm","schema":{"default":false,"type":"boolean"}},{"description":"Set memory limit for build.","in":"query","name":"memory","schema":{"type":"integer"}},{"description":"Total memory (memory + swap). Set as `-1` to disable swap.","in":"query","name":"memswap","schema":{"type":"integer"}},{"description":"CPU shares (relative weight).","in":"query","name":"cpushares","schema":{"type":"integer"}},{"description":"CPUs in which to allow execution (e.g., `0-3`, `0,1`).","in":"query","name":"cpusetcpus","schema":{"type":"string"}},{"description":"The length of a CPU period in microseconds.","in":"query","name":"cpuperiod","schema":{"type":"integer"}},{"description":"Microseconds of CPU time that the container can get in a CPU period.","in":"query","name":"cpuquota","schema":{"type":"integer"}},{"description":"JSON map of string pairs for build-time variables. Users pass these values at build-time. Docker uses the buildargs as the environment context for commands run via the `Dockerfile` RUN instruction, or for variable expansion in other `Dockerfile` instructions. This is not meant for passing secret values. [Read more about the buildargs instruction.](https://docs.docker.com/engine/reference/builder/#arg)","in":"query","name":"buildargs","schema":{"type":"integer"}},{"description":"Size of `/dev/shm` in bytes. The size must be greater than 0. If omitted the system uses 64MB.","in":"query","name":"shmsize","schema":{"type":"integer"}},{"description":"Squash the resulting images layers into a single layer. *(Experimental release only.)*","in":"query","name":"squash","schema":{"type":"boolean"}},{"description":"Arbitrary key/value labels to set on the image, as a JSON map of string pairs.","in":"query","name":"labels","schema":{"type":"string"}},{"description":"Sets the networking mode for the run commands during build. Supported standard values are: `bridge`, `host`, `none`, and `container:<name|id>`. Any other value is taken as a custom network's name to which this container should connect to.","in":"query","name":"networkmode","schema":{"type":"string"}},{"in":"header","name":"Content-type","schema":{"default":"application/x-tar","enum":["application/x-tar"],"type":"string"}},{"description":"This is a base64-encoded JSON object with auth configurations for multiple registries that a build may refer to.\n\nThe key is a registry URL, and the value is an auth configuration object, [as described in the authentication section](#section/Authentication). For example:\n\n```\n{\n \"docker.example.com\": {\n \"username\": \"janedoe\",\n \"password\": \"hunter2\"\n },\n \"https://index.docker.io/v1/\": {\n \"username\": \"mobydock\",\n \"password\": \"conta1n3rize14\"\n }\n}\n```\n\nOnly the registry domain name (and port if not the default 443) are required. However, for legacy reasons, the Docker Hub registry must be specified with both a `https://` prefix and a `/v1/` suffix even though Docker will prefer to use the v2 registry API.\n","in":"header","name":"X-Registry-Config","schema":{"type":"string"}}],"requestBody":{"content":{"application/octet-stream":{"schema":{"format":"binary","type":"string"}}},"description":"A tar archive compressed with one of the following algorithms: identity (no compression), gzip, bzip2, xz."},"responses":{"200":{"description":"no error"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad parameter"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"server error"}},"summary":"Build an image","tags":["Image"]}},"/build/prune":{"post":{"operationId":"BuildPrune","responses":{"200":{"content":{"application/json":{"schema":{"properties":{"SpaceReclaimed":{"description":"Disk space reclaimed in bytes","format":"int64","type":"integer"}},"type":"object"}}},"description":"No error"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Server error"}},"summary":"Delete builder cache","tags":["Image"]}},"/commit":{"post":{"operationId":"ImageCommit","parameters":[{"description":"The ID or name of the container to commit","in":"query","name":"container","schema":{"type":"string"}},{"description":"Repository name for the created image","in":"query","name":"repo","schema":{"type":"string"}},{"description":"Tag name for the create image","in":"query","name":"tag","schema":{"type":"string"}},{"description":"Commit message","in":"query","name":"comment","schema":{"type":"string"}},{"description":"Author of the image (e.g., `John Hannibal Smith <hannibal@a-team.com>`)","in":"query","name":"author","schema":{"type":"string"}},{"description":"Whether to pause the container before committing","in":"query","name":"pause","schema":{"default":true,"type":"boolean"}},{"description":"`Dockerfile` instructions to apply while committing","in":"query","name":"changes","schema":{"type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContainerConfig"}}},"description":"The container configuration"},"responses":{"201":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/IdResponse"}}},"description":"no error"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"message":"No such container: c2ada9df5af8"}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"no such container"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"server error"}},"summary":"Create a new image from a container","tags":["Image"]}},"/configs":{"get":{"operationId":"ConfigList","parameters":[{"description":"A JSON encoded value of the filters (a `map[string][]string`) to process on the configs list. Available filters:\n\n- `id=<config id>`\n- `label=<key> or label=<key>=value`\n- `name=<config name>`\n- `names=<config name>`\n","in":"query","name":"filters","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"example":[{"CreatedAt":"2025-04-15T13:51:33.114Z","ID":"ktnbjxoalbkvbvedmg1urrz8h","Spec":{"Name":"server.conf"},"UpdatedAt":"2025-04-15T13:51:33.114Z","Version":{"Index":11}}],"items":{"$ref":"#/components/schemas/Config"},"type":"array"}}},"description":"no error"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"server error"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"node is not part of a swarm"}},"summary":"List configs","tags":["Config"]}},"/configs/create":{"post":{"operationId":"ConfigCreate","requestBody":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ConfigSpec"},{"example":{"Data":"VEhJUyBJUyBOT1QgQSBSRUFMIENFUlRJRklDQVRFCg==","Labels":{"foo":"bar"},"Name":"server.conf"},"type":"object"}]}}}},"responses":{"201":{"content":{"application/json":{"schema":{"example":{"ID":"ktnbjxoalbkvbvedmg1urrz8h"},"properties":{"ID":{"description":"The ID of the created config.","type":"string"}},"type":"object"}}},"description":"no error"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"name conflicts with an existing object"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"server error"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"node is not part of a swarm"}},"summary":"Create a config","tags":["Config"]}},"/configs/{id}":{"delete":{"operationId":"ConfigDelete","parameters":[{"description":"ID of the config","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"no error"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"config not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"server error"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"node is not part of a swarm"}},"summary":"Delete a config","tags":["Config"]},"get":{"operationId":"ConfigInspect","parameters":[{"description":"ID of the config","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":{"CreatedAt":"2025-04-15T13:51:33.114Z","ID":"ktnbjxoalbkvbvedmg1urrz8h","Spec":{"Name":"app-dev.crt"},"UpdatedAt":"2025-04-15T13:51:33.114Z","Version":{"Index":11}}}},"schema":{"$ref":"#/components/schemas/Config"}}},"description":"no error"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"config not found"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"server error"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"node is not part of a swarm"}},"summary":"Inspect a config","tags":["Config"]}},"/configs/{id}/update":{"post":{"operationId":"ConfigUpdate","parameters":[{"description":"The ID or name of the config","in":"path","name":"id","required":true,"schema":{"type":"string"}},{"description":"The version number of the config object being updated. This is required to avoid conflicting writes.","in":"query","name":"version","required":true,"schema":{"format":"int64","type":"integer"}}],"requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ConfigSpec"}},"text/plain":{"schema":{"$ref":"#/components/schemas/ConfigSpec"}}},"description":"The spec of the config to update. Currently, only the Labels field can be updated. All other fields must remain unchanged from the [ConfigInspect endpoint](#operation/ConfigInspect) response values."},"responses":{"200":{"description":"no error"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"bad parameter"},"404":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"no such config"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"server error"},"503":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"node is not part of a swarm"}},"summary":"Update a Config","tags":["Config"]}},"/containers/create":{"post":{"operationId":"ContainerCreate","parameters":[{"description":"Assign the specified name to the container. Must match `/?[a-zA-Z0-9_-]+`.","in":"query","name":"name","schema":{"pattern":"/?[a-zA-Z0-9_-]+","type":"string"}}],"requestBody":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ContainerConfig"},{"properties":{"HostConfig":{"$ref":"#/components/schemas/HostConfig"},"NetworkingConfig":{"description":"This container's networking configuration.","properties":{"EndpointsConfig":{"additionalProperties":{"$ref":"#/components/schemas/EndpointSettings"},"description":"A mapping of network name to endpoint configuration for that network.","type":"object"}},"type":"object"}},"type":"object"}],"example":{"AttachStderr":true,"AttachStdin":false,"AttachStdout":true,"Cmd":["date"],"Domainname":"","Entrypoint":"","Env":["FOO=bar","BAZ=quux"],"ExposedPorts":{"22/tcp":{}},"HostConfig":{"AutoRemove":true,"Binds":["/tmp:/tmp"],"BlkioDeviceReadBps":[{}],"BlkioDeviceReadIOps":[{}],"BlkioDeviceWriteBps":[{}],"BlkioDeviceWriteIOps":[{}],"BlkioWeight":300,"BlkioWeightDevice":[{}],"CapAdd":["NET_ADMIN"],"CapDrop":["MKNOD"],"CgroupParent":"","CpuPercent":80,"CpuPeriod":100000,"CpuQuota":50000,"CpuRealtimePeriod":1000000,"CpuRealtimeRuntime":10000,"CpuShares":512,"CpusetCpus":"0,1","CpusetMems":"0,1","Devices":[],"Dns":["8.8.8.8"],"DnsOptions":[""],"DnsSearch":[""],"GroupAdd":["newgroup"],"KernelMemory":0,"Links":["redis3:redis"],"LogConfig":{"Config":{},"Type":"json-file"},"MaximumIOBps":0,"MaximumIOps":0,"Memory":0,"MemoryReservation":0,"MemorySwap":0,"MemorySwappiness":60,"NanoCPUs":500000,"NetworkMode":"bridge","OomKillDisable":false,"OomScoreAdj":500,"PidMode":"","PidsLimit":-1,"PortBindings":{"22/tcp":[{"HostPort":"11022"}]},"Privileged":false,"PublishAllPorts":false,"ReadonlyRootfs":false,"RestartPolicy":{"MaximumRetryCount":0,"Name":""},"SecurityOpt":[],"ShmSize":67108864,"StorageOpt":{},"Ulimits":[{}],"VolumeDriver":"","VolumesFrom":["parent","other:ro"]},"Hostname":"","Image":"ubuntu","Labels":{"com.example.license":"GPL","com.example.vendor":"Acme","com.example.version":"1.0"},"MacAddress":"12:34:56:78:9a:bc","NetworkDisabled":false,"NetworkingConfig":{"EndpointsConfig":{"isolated_nw":{"Aliases":["server_x","server_y"],"IPAMConfig":{"IPv4Address":"172.20.30.33","IPv6Address":"2001:db8:abcd::3033","LinkLocalIPs":["169.254.34.68","fe80::3468"]},"Links":["container_1","container_2"]}}},"OpenStdin":false,"StdinOnce":false,"StopSignal":"SIGTERM","StopTimeout":10,"Tty":false,"User":"","Volumes":{"/volumes/data":{}},"WorkingDir":""}}},"application/octet-stream":{"schema":{"allOf":[{"$ref":"#/components/schemas/ContainerConfig"},{"properties":{"HostConfig":{"$ref":"#/components/schemas/HostConfig"},"NetworkingConfig":{"description":"This container's networking configuration.","properties":{"EndpointsConfig":{"additionalProperties":{"$ref":"#/components/schemas/EndpointSettings"},"description":"A mapping of network name to endpoint configuration for that network.","type":"object"}},"type":"object"}},"type":"object"}],"example":{"AttachStderr":true,"AttachStdin":false,"AttachStdout":true,"Cmd":["date"],"Domainname":"","Entrypoint":"","Env":["FOO=bar","BAZ=quux"],"ExposedPorts":{"22/tcp":{}},"HostConfig":{"AutoRemove":true,"Binds":["/tmp:/tmp"],"BlkioDeviceReadBps":[{}],"BlkioDeviceReadIOps":[{}],"BlkioDeviceWriteBps":[{}],"BlkioDeviceWriteIOps":[{}],"BlkioWeight":300,"BlkioWeightDevice":[{}],"CapAdd":["NET_ADMIN"],"CapDrop":["MKNOD"],"CgroupParent":"","CpuPercent":80,"CpuPeriod":100000,"CpuQuota":50000,"CpuRealtimePeriod":1000000,"CpuRealtimeRuntime":10000,"CpuShares":512,"CpusetCpus":"0,1","CpusetMems":"0,1","Devices":[],"Dns":["8.8.8.8"],"DnsOptions":[""],"DnsSearch":[""],"GroupAdd":["newgroup"],"KernelMemory":0,"Links":["redis3:redis"],"LogConfig":{"Config":{},"Type":"json-file"},"MaximumIOBps":0,"MaximumIOps":0,"Memory":0,"MemoryReservation":0,"MemorySwap":0,"MemorySwappiness":60,"NanoCPUs":500000,"NetworkMode":"bridge","OomKillDisable":false,"OomScoreAdj":500,"PidMode":"","PidsLimit":-1,"PortBindings":{"22/tcp":[{"HostPort":"11022"}]},"Privileged":false,"PublishAllPorts":false,"ReadonlyRootfs":false,"RestartPolicy":{"MaximumRetryCount":0,"Name":""},"SecurityOpt":[],"ShmSize":67108864,"StorageOpt":{},"Ulimits":[{}],"VolumeDriver":"","VolumesFrom":["parent","other:ro"]},"Hostname":"","Image":"ubuntu","Labels":{"com.example.license":"GPL","com.example.vendor":"Acme","com.example.version":"1.0"},"MacAddress":"12:34:56:78:9a:bc","NetworkDisabled":false,"NetworkingConfig":{"EndpointsConfig":{"isolated_nw":{"Aliases":["server_x","server_y"],"IPAMConfig":{"IPv4Address":"172.20.30.33","IPv6Address":"2001:db8:abcd::3033","LinkLocalIPs":["169.254.34.68","fe80::3468"]},"Links":["container_1","container_2"]}}},"OpenStdin":false,"StdinOnce":false,"StopSignal":"SIGTERM","StopTimeout":10,"Tty":false,"User":"","Volumes":{"/volumes/data":{}},"WorkingDir":""}}}},"description":"Container to create","required":true},"responses":{"201":{"content":{"application/json":{"examples":{"response":{"value":{"Id":"e90e34656806","Warnings":[]}}},"schema":{"properties":{"Id":{"description":"The ID of the created container","nullable":false,"type":"string"},"Warnings":{"description":"Warnings encountered when creating the container","items":{"type":"string"},"nullable":false,"type":"array"}},"required":["Id","Warnings"],"type":"object"}}},"description":"Container created successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"bad parameter"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"message":"No such container: c2ada9df5af8"}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"no such container"},"409":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"conflict"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"server error"}},"summary":"Create a container","tags":["Container"]}},"/containers/json":{"get":{"description":"Returns a list of containers. For details on the format, see [the inspect endpoint](#operation/ContainerInspect).\n\nNote that it uses a different, smaller representation of a container than inspecting a single container. For example,\nthe list of linked containers is not propagated .\n","operationId":"ContainerList","parameters":[{"description":"Return all containers. By default, only running containers are shown","in":"query","name":"all","schema":{"default":false,"type":"boolean"}},{"description":"Return this number of most recently created containers, including non-running ones.","in":"query","name":"limit","schema":{"type":"integer"}},{"description":"Return the size of container as fields `SizeRw` and `SizeRootFs`.","in":"query","name":"size","schema":{"default":false,"type":"boolean"}},{"description":"Filters to process on the container list, encoded as JSON (a `map[string][]string`). For example, `{\"status\": [\"paused\"]}` will only return paused containers. Available filters:\n\n- `ancestor`=(`<image-name>[:<tag>]`, `<image id>`, or `<image@digest>`)\n- `before`=(`<container id>` or `<container name>`)\n- `expose`=(`<port>[/<proto>]`|`<startport-endport>/[<proto>]`)\n- `exited=<int>` containers with exit code of `<int>`\n- `health`=(`starting`|`healthy`|`unhealthy`|`none`)\n- `id=<ID>` a container's ID\n- `isolation=`(`default`|`process`|`hyperv`) (Windows daemon only)\n- `is-task=`(`true`|`false`)\n- `label=key` or `label=\"key=value\"` of a container label\n- `name=<name>` a container's name\n- `network`=(`<network id>` or `<network name>`)\n- `publish`=(`<port>[/<proto>]`|`<startport-endport>/[<proto>]`)\n- `since`=(`<container id>` or `<container name>`)\n- `status=`(`created`|`restarting`|`running`|`removing`|`paused`|`exited`|`dead`)\n- `volume`=(`<volume name>` or `<mount point destination>`)\n","in":"query","name":"filters","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":[{"Command":"echo 1","Created":1367854155,"HostConfig":{"NetworkMode":"default"},"Id":"8dfafdbc3a40","Image":"ubuntu:latest","ImageID":"d74508fb6632491cea586a1fd7d748dfc5274cd6fdfedee309ecdcbc2bf5cb82","Labels":{"com.example.license":"GPL","com.example.vendor":"Acme","com.example.version":"1.0"},"Mounts":[{"Destination":"/data","Driver":"local","Mode":"ro,Z","Name":"fac362...80535","Propagation":"","RW":false,"Source":"/data"}],"Names":["/boring_feynman"],"NetworkSettings":{"Networks":{"bridge":{"EndpointID":"2cdc4edb1ded3631c81f57966563e5c8525b81121bb3706a9a9a3ae102711f3f","Gateway":"172.17.0.1","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"IPAddress":"172.17.0.2","IPPrefixLen":16,"IPv6Gateway":"","MacAddress":"02:42:ac:11:00:02","NetworkID":"7ea29fc1412292a2d7bba362f9253545fecdfa8ce9a6e37dd10ba8bee7129812"}}},"Ports":[{"PrivatePort":2222,"PublicPort":3333,"Type":"tcp"}],"SizeRootFs":0,"SizeRw":12288,"State":"Exited","Status":"Exit 0"},{"Command":"echo 222222","Created":1367854155,"HostConfig":{"NetworkMode":"default"},"Id":"9cd87474be90","Image":"ubuntu:latest","ImageID":"d74508fb6632491cea586a1fd7d748dfc5274cd6fdfedee309ecdcbc2bf5cb82","Labels":{},"Mounts":[],"Names":["/coolName"],"NetworkSettings":{"Networks":{"bridge":{"EndpointID":"88eaed7b37b38c2a3f0c4bc796494fdf51b270c2d22656412a2ca5d559a64d7a","Gateway":"172.17.0.1","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"IPAddress":"172.17.0.8","IPPrefixLen":16,"IPv6Gateway":"","MacAddress":"02:42:ac:11:00:08","NetworkID":"7ea29fc1412292a2d7bba362f9253545fecdfa8ce9a6e37dd10ba8bee7129812"}}},"Ports":[],"SizeRootFs":0,"SizeRw":12288,"State":"Exited","Status":"Exit 0"},{"Command":"echo 3333333333333333","Created":1367854154,"HostConfig":{"NetworkMode":"default"},"Id":"3176a2479c92","Image":"ubuntu:latest","ImageID":"d74508fb6632491cea586a1fd7d748dfc5274cd6fdfedee309ecdcbc2bf5cb82","Labels":{},"Mounts":[],"Names":["/sleepy_dog"],"NetworkSettings":{"Networks":{"bridge":{"EndpointID":"8b27c041c30326d59cd6e6f510d4f8d1d570a228466f956edf7815508f78e30d","Gateway":"172.17.0.1","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"IPAddress":"172.17.0.6","IPPrefixLen":16,"IPv6Gateway":"","MacAddress":"02:42:ac:11:00:06","NetworkID":"7ea29fc1412292a2d7bba362f9253545fecdfa8ce9a6e37dd10ba8bee7129812"}}},"Ports":[],"SizeRootFs":0,"SizeRw":12288,"State":"Exited","Status":"Exit 0"},{"Command":"echo 444444444444444444444444444444444","Created":1367854152,"HostConfig":{"NetworkMode":"default"},"Id":"4cb07b47f9fb","Image":"ubuntu:latest","ImageID":"d74508fb6632491cea586a1fd7d748dfc5274cd6fdfedee309ecdcbc2bf5cb82","Labels":{},"Mounts":[],"Names":["/running_cat"],"NetworkSettings":{"Networks":{"bridge":{"EndpointID":"d91c7b2f0644403d7ef3095985ea0e2370325cd2332ff3a3225c4247328e66e9","Gateway":"172.17.0.1","GlobalIPv6Address":"","GlobalIPv6PrefixLen":0,"IPAddress":"172.17.0.5","IPPrefixLen":16,"IPv6Gateway":"","MacAddress":"02:42:ac:11:00:05","NetworkID":"7ea29fc1412292a2d7bba362f9253545fecdfa8ce9a6e37dd10ba8bee7129812"}}},"Ports":[],"SizeRootFs":0,"SizeRw":12288,"State":"Exited","Status":"Exit 0"}]}},"schema":{"$ref":"#/components/schemas/ContainerSummary"}}},"description":"no error"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"bad parameter"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"server error"}},"summary":"List containers","tags":["Container"]}},"/containers/prune":{"post":{"operationId":"ContainerPrune","parameters":[{"description":"Filters to process on the prune list, encoded as JSON (a `map[string][]string`).\n\nAvailable filters:\n- `until=<timestamp>` Prune containers created before this timestamp. The `<timestamp>` can be Unix timestamps, date formatted timestamps, or Go duration strings (e.g. `10m`, `1h30m`) computed relative to the daemon machine’s time.\n- `label` (`label=<key>`, `label=<key>=<value>`, `label!=<key>`, or `label!=<key>=<value>`) Prune containers with (or without, in case `label!=...` is used) the specified labels.\n","in":"query","name":"filters","schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"schema":{"properties":{"ContainersDeleted":{"description":"Container IDs that were deleted","items":{"type":"string"},"type":"array"},"SpaceReclaimed":{"description":"Disk space reclaimed in bytes","format":"int64","type":"integer"}},"type":"object"}}},"description":"No error"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Server error"}},"summary":"Delete stopped containers","tags":["Container"]}},"/containers/{id}":{"delete":{"operationId":"ContainerDelete","parameters":[{"description":"ID or name of the container","in":"path","name":"id","required":true,"schema":{"type":"string"}},{"description":"Remove the volumes associated with the container.","in":"query","name":"v","schema":{"default":false,"type":"boolean"}},{"description":"If the container is running, kill it before removing it.","in":"query","name":"force","schema":{"default":false,"type":"boolean"}},{"description":"Remove the specified link associated with the container.","in":"query","name":"link","schema":{"default":false,"type":"boolean"}}],"responses":{"204":{"description":"no error"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"bad parameter"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"message":"No such container: c2ada9df5af8"}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"no such container"},"409":{"content":{"application/json":{"examples":{"response":{"value":{"message":"You cannot remove a running container: c2ada9df5af8. Stop the container before attempting removal or force remove"}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"conflict"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"server error"}},"summary":"Remove a container","tags":["Container"]}},"/containers/{id}/archive":{"get":{"description":"Get a tar archive of a resource in the filesystem of container id.","operationId":"ContainerArchive","parameters":[{"description":"ID or name of the container","in":"path","name":"id","required":true,"schema":{"type":"string"}},{"description":"Resource in the container’s filesystem to archive.","in":"query","name":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"no error"},"400":{"content":{"application/x-tar":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"properties":{"message":{"description":"The error message. Either \"must specify path parameter\" (path cannot be empty) or \"not a directory\" (path was asserted to be a directory but exists as a file).","nullable":false,"type":"string"}},"type":"object"}]}}},"description":"Bad parameter"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"message":"No such container: c2ada9df5af8"}}}},"application/x-tar":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Container or path does not exist"},"500":{"content":{"application/x-tar":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"server error"}},"summary":"Get an archive of a filesystem resource in a container","tags":["Container"]},"head":{"description":"A response header `X-Docker-Container-Path-Stat` is return containing a base64 - encoded JSON object with some filesystem header information about the path.","operationId":"ContainerArchiveInfo","parameters":[{"description":"ID or name of the container","in":"path","name":"id","required":true,"schema":{"type":"string"}},{"description":"Resource in the container’s filesystem to archive.","in":"query","name":"path","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"no error","headers":{"X-Docker-Container-Path-Stat":{"description":"TODO","schema":{"type":"string"}}}},"400":{"content":{"application/json":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"properties":{"message":{"description":"The error message. Either \"must specify path parameter\" (path cannot be empty) or \"not a directory\" (path was asserted to be a directory but exists as a file).","nullable":false,"type":"string"}},"type":"object"}]}},"text/plain":{"schema":{"allOf":[{"$ref":"#/components/schemas/ErrorResponse"},{"properties":{"message":{"description":"The error message. Either \"must specify path parameter\" (path cannot be empty) or \"not a directory\" (path was asserted to be a directory but exists as a file).","nullable":false,"type":"string"}},"type":"object"}]}}},"description":"Bad parameter"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"message":"No such container: c2ada9df5af8"}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Container or path does not exist"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Server error"}},"summary":"Get information about files in a container","tags":["Container"]},"put":{"description":"Upload a tar archive to be extracted to a path in the filesystem of container id.","operationId":"PutContainerArchive","parameters":[{"description":"ID or name of the container","in":"path","name":"id","required":true,"schema":{"type":"string"}},{"description":"Path to a directory in the container to extract the archive’s contents into. ","in":"query","name":"path","required":true,"schema":{"type":"string"}},{"description":"If “1”, “true”, or “True” then it will be an error if unpacking the given content would cause an existing directory to be replaced with a non-directory and vice versa.","in":"query","name":"noOverwriteDirNonDir","schema":{"type":"string"}}],"requestBody":{"content":{"application/octet-stream":{"schema":{"type":"string"}},"application/x-tar":{"schema":{"type":"string"}}},"description":"The input stream must be a tar archive compressed with one of the following algorithms: identity (no compression), gzip, bzip2, xz.","required":true},"responses":{"200":{"description":"The content was extracted successfully"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Bad parameter"},"403":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Permission denied, the volume or container rootfs is marked as read-only."},"404":{"content":{"application/json":{"examples":{"response":{"value":{"message":"No such container: c2ada9df5af8"}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"No such container or path does not exist inside the container"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"Server error"}},"summary":"Extract an archive of files or folders to a directory in a container","tags":["Container"]}},"/containers/{id}/attach":{"post":{"description":"Attach to a container to read its output or send it input. You can attach to the same container multiple times and you can reattach to containers that have been detached.\n\nEither the `stream` or `logs` parameter must be `true` for this endpoint to do anything.\n\nSee [the documentation for the `docker attach` command](https://docs.docker.com/engine/reference/commandline/attach/) for more details.\n\n### Hijacking\n\nThis endpoint hijacks the HTTP connection to transport `stdin`, `stdout`, and `stderr` on the same socket.\n\nThis is the response from the daemon for an attach request:\n\n```\nHTTP/1.1 200 OK\nContent-Type: application/vnd.docker.raw-stream\n\n[STREAM]\n```\n\nAfter the headers and two new lines, the TCP connection can now be used for raw, bidirectional communication between the client and server.\n\nTo hint potential proxies about connection hijacking, the Docker client can also optionally send connection upgrade headers.\n\nFor example, the client sends this request to upgrade the connection:\n\n```\nPOST /containers/16253994b7c4/attach?stream=1&stdout=1 HTTP/1.1\nUpgrade: tcp\nConnection: Upgrade\n```\n\nThe Docker daemon will respond with a `101 UPGRADED` response, and will similarly follow with the raw stream:\n\n```\nHTTP/1.1 101 UPGRADED\nContent-Type: application/vnd.docker.raw-stream\nConnection: Upgrade\nUpgrade: tcp\n\n[STREAM]\n```\n\n### Stream format\n\nWhen the TTY setting is disabled in [`POST /containers/create`](#operation/ContainerCreate), the stream over the hijacked connected is multiplexed to separate out `stdout` and `stderr`. The stream consists of a series of frames, each containing a header and a payload.\n\nThe header contains the information which the stream writes (`stdout` or `stderr`). It also contains the size of the associated frame encoded in the last four bytes (`uint32`).\n\nIt is encoded on the first eight bytes like this:\n\n```go\nheader := [8]byte{STREAM_TYPE, 0, 0, 0, SIZE1, SIZE2, SIZE3, SIZE4}\n```\n\n`STREAM_TYPE` can be:\n\n- 0: `stdin` (is written on `stdout`)\n- 1: `stdout`\n- 2: `stderr`\n\n`SIZE1, SIZE2, SIZE3, SIZE4` are the four bytes of the `uint32` size encoded as big endian.\n\nFollowing the header is the payload, which is the specified number of bytes of `STREAM_TYPE`.\n\nThe simplest way to implement this protocol is the following:\n\n1. Read 8 bytes.\n2. Choose `stdout` or `stderr` depending on the first byte.\n3. Extract the frame size from the last four bytes.\n4. Read the extracted size and output it on the correct output.\n5. Goto 1.\n\n### Stream format when using a TTY\n\nWhen the TTY setting is enabled in [`POST /containers/create`](#operation/ContainerCreate), the stream is not multiplexed. The data exchanged over the hijacked connection is simply the raw data from the process PTY and client's `stdin`.\n","operationId":"ContainerAttach","parameters":[{"description":"ID or name of the container","in":"path","name":"id","required":true,"schema":{"type":"string"}},{"description":"Override the key sequence for detaching a container.Format is a single character `[a-Z]` or `ctrl-<value>` where `<value>` is one of: `a-z`, `@`, `^`, `[`, `,` or `_`.","in":"query","name":"detachKeys","schema":{"type":"string"}},{"description":"Replay previous logs from the container.\n\nThis is useful for attaching to a container that has started and you want to output everything since the container started.\n\nIf `stream` is also enabled, once all the previous output has been returned, it will seamlessly transition into streaming current output.\n","in":"query","name":"logs","schema":{"default":false,"type":"boolean"}},{"description":"Stream attached streams from the time the request was made onwards","in":"query","name":"stream","schema":{"default":false,"type":"boolean"}},{"description":"Attach to `stdin`","in":"query","name":"stdin","schema":{"default":false,"type":"boolean"}},{"description":"Attach to `stdout`","in":"query","name":"stdout","schema":{"default":false,"type":"boolean"}},{"description":"Attach to `stderr`","in":"query","name":"stderr","schema":{"default":false,"type":"boolean"}}],"responses":{"101":{"description":"no error, hints proxy about hijacking"},"200":{"description":"no error, no upgrade header found"},"400":{"content":{"application/vnd.docker.raw-stream":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"bad parameter"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"message":"No such container: c2ada9df5af8"}}}},"application/vnd.docker.raw-stream":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"no such container"},"500":{"content":{"application/vnd.docker.raw-stream":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"server error"}},"summary":"Attach to a container","tags":["Container"]}},"/containers/{id}/attach/ws":{"get":{"operationId":"ContainerAttachWebsocket","parameters":[{"description":"ID or name of the container","in":"path","name":"id","required":true,"schema":{"type":"string"}},{"description":"Override the key sequence for detaching a container.Format is a single character `[a-Z]` or `ctrl-<value>` where `<value>` is one of: `a-z`, `@`, `^`, `[`, `,`, or `_`.","in":"query","name":"detachKeys","schema":{"type":"string"}},{"description":"Return logs","in":"query","name":"logs","schema":{"default":false,"type":"boolean"}},{"description":"Return stream","in":"query","name":"stream","schema":{"default":false,"type":"boolean"}},{"description":"Attach to `stdin`","in":"query","name":"stdin","schema":{"default":false,"type":"boolean"}},{"description":"Attach to `stdout`","in":"query","name":"stdout","schema":{"default":false,"type":"boolean"}},{"description":"Attach to `stderr`","in":"query","name":"stderr","schema":{"default":false,"type":"boolean"}}],"responses":{"101":{"description":"no error, hints proxy about hijacking"},"200":{"description":"no error, no upgrade header found"},"400":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"bad parameter"},"404":{"content":{"application/json":{"examples":{"response":{"value":{"message":"No such container: c2ada9df5af8"}}},"schema":{"$ref":"#/components/schemas/ErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"no such container"},"500":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}},"text/plain":{"schema":{"$ref":"#/components/schemas/ErrorResponse"}}},"description":"server error"}},"summary":"Attach to a container via a websocket","tags":["Container"]}},"/containers/{id}/changes":{"get":{"description":"Returns which files in a container's filesystem have been added, deleted,\nor modified. The `Kind` of modification can be one of:\n\n- `0`: Modified\n- `1`: Added\n- `2`: Deleted\n","operationId":"ContainerChanges","parameters":[{"description":"ID or name of the container","in":"path","name":"id","required":true,"schema":{"type":"string"}}],"responses":{"200":{"content":{"application/json":{"examples":{"response":{"value":[{"Kind":0,"Path":"/dev"},{"Kind":1,"Path":"/dev/kmsg"},{"Kind":1,"Path":"/test"}]}},