swagger: '2.0' info: title: Docker Engine Config Node 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. It is the API the\nDocker client uses to communicate with the Engine, so everything the Docker\nclient can do can be done with the API.\n\nMost of the client's commands map directly to API endpoints (e.g. `docker ps`\nis `GET /containers/json`). The notable exception is running containers,\nwhich consists of several API calls.\n\n# Errors\n\nThe API uses standard HTTP status codes to indicate the success or failure\nof the API call. The body of the response will be JSON in the following\nformat:\n\n```\n{\n \"message\": \"page not found\"\n}\n```\n\n# Versioning\n\nThe API is usually changed in each release, so API calls are versioned to\nensure that clients don't break. To lock to a specific version of the API,\nyou prefix the URL with its version, for example, call `/v1.30/info` to use\nthe v1.30 version of the `/info` endpoint. If the API version specified in\nthe URL is not supported by the daemon, a HTTP `400 Bad Request` error message\nis returned.\n\nIf you omit the version-prefix, the current version of the API (v1.50) is used.\nFor example, calling `/info` is the same as calling `/v1.52/info`. Using the\nAPI without a version-prefix is deprecated and will be removed in a future release.\n\nEngine releases in the near future should support this version of the API,\nso your client will continue to work even if it is talking to a newer Engine.\n\nThe API uses an open schema model, which means the server may add extra properties\nto responses. Likewise, the server will ignore any extra query parameters and\nrequest body properties. When you write clients, you need to ignore additional\nproperties in responses to ensure they do not break when talking to newer\ndaemons.\n\n\n# Authentication\n\nAuthentication for registries is handled client side. The client has to send\nauthentication details to various endpoints that need to communicate with\nregistries, such as `POST /images/(name)/push`. These are sent as\n`X-Registry-Auth` header as a [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5)\n(JSON) string with the following structure:\n\n```\n{\n \"username\": \"string\",\n \"password\": \"string\",\n \"serveraddress\": \"string\"\n}\n```\n\nThe `serveraddress` is a domain/IP without a protocol. Throughout this\nstructure, double quotes are required.\n\nIf you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth),\nyou can just pass this instead of credentials:\n\n```\n{\n \"identitytoken\": \"9cbaf023786cd7...\"\n}\n```\n" basePath: /v1.54 schemes: - http - https consumes: - application/json - text/plain produces: - application/json - text/plain tags: - name: Node x-displayName: Nodes description: 'Nodes are instances of the Engine participating in a swarm. Swarm mode must be enabled for these endpoints to work. ' paths: /nodes: get: summary: List nodes operationId: NodeList responses: 200: description: no error schema: type: array items: $ref: '#/definitions/Node' 500: description: server error schema: $ref: '#/definitions/ErrorResponse' 503: description: node is not part of a swarm schema: $ref: '#/definitions/ErrorResponse' parameters: - name: filters in: query description: 'Filters to process on the nodes list, encoded as JSON (a `map[string][]string`). Available filters: - `id=` - `label=` - `membership=`(`accepted`|`pending`)` - `name=` - `node.label=` - `role=`(`manager`|`worker`)` ' type: string tags: - Node /nodes/{id}: get: summary: Inspect a node operationId: NodeInspect responses: 200: description: no error schema: $ref: '#/definitions/Node' 404: description: no such node schema: $ref: '#/definitions/ErrorResponse' 500: description: server error schema: $ref: '#/definitions/ErrorResponse' 503: description: node is not part of a swarm schema: $ref: '#/definitions/ErrorResponse' parameters: - name: id in: path description: The ID or name of the node type: string required: true tags: - Node delete: summary: Delete a node operationId: NodeDelete responses: 200: description: no error 404: description: no such node schema: $ref: '#/definitions/ErrorResponse' 500: description: server error schema: $ref: '#/definitions/ErrorResponse' 503: description: node is not part of a swarm schema: $ref: '#/definitions/ErrorResponse' parameters: - name: id in: path description: The ID or name of the node type: string required: true - name: force in: query description: Force remove a node from the swarm default: false type: boolean tags: - Node /nodes/{id}/update: post: summary: Update a node operationId: NodeUpdate responses: 200: description: no error 400: description: bad parameter schema: $ref: '#/definitions/ErrorResponse' 404: description: no such node schema: $ref: '#/definitions/ErrorResponse' 500: description: server error schema: $ref: '#/definitions/ErrorResponse' 503: description: node is not part of a swarm schema: $ref: '#/definitions/ErrorResponse' parameters: - name: id in: path description: The ID of the node type: string required: true - name: body in: body schema: $ref: '#/definitions/NodeSpec' - name: version in: query description: 'The version number of the node object being updated. This is required to avoid conflicting writes. ' type: integer format: int64 required: true tags: - Node definitions: ObjectVersion: description: 'The version number of the object such as node, service, etc. This is needed to avoid conflicting writes. The client must send the version number along with the modified specification when updating these objects. This approach ensures safe concurrency and determinism in that the change on the object may not be applied if the version number has changed from the last read. In other words, if two update requests specify the same base version, only one of the requests can succeed. As a result, two separate update requests that happen at the same time will not unintentionally overwrite each other. ' type: object properties: Index: type: integer format: uint64 example: 373531 NodeDescription: description: 'NodeDescription encapsulates the properties of the Node as reported by the agent. ' type: object properties: Hostname: type: string example: bf3067039e47 Platform: $ref: '#/definitions/Platform' Resources: $ref: '#/definitions/ResourceObject' Engine: $ref: '#/definitions/EngineDescription' TLSInfo: $ref: '#/definitions/TLSInfo' GenericResources: description: 'User-defined resources can be either Integer resources (e.g, `SSD=3`) or String resources (e.g, `GPU=UUID1`). ' type: array items: type: object properties: NamedResourceSpec: type: object properties: Kind: type: string Value: type: string DiscreteResourceSpec: type: object properties: Kind: type: string Value: type: integer format: int64 example: - DiscreteResourceSpec: Kind: SSD Value: 3 - NamedResourceSpec: Kind: GPU Value: UUID1 - NamedResourceSpec: Kind: GPU Value: UUID2 NodeState: description: NodeState represents the state of a node. type: string enum: - unknown - down - ready - disconnected example: ready ResourceObject: description: 'An object describing the resources which can be advertised by a node and requested by a task. ' type: object properties: NanoCPUs: type: integer format: int64 example: 4000000000 MemoryBytes: type: integer format: int64 example: 8272408576 GenericResources: $ref: '#/definitions/GenericResources' EngineDescription: description: EngineDescription provides information about an engine. type: object properties: EngineVersion: type: string example: 17.06.0 Labels: type: object additionalProperties: type: string example: foo: bar Plugins: type: array items: type: object properties: Type: type: string Name: type: string example: - Type: Log Name: awslogs - Type: Log Name: fluentd - Type: Log Name: gcplogs - Type: Log Name: gelf - Type: Log Name: journald - Type: Log Name: json-file - Type: Log Name: splunk - Type: Log Name: syslog - Type: Network Name: bridge - Type: Network Name: host - Type: Network Name: ipvlan - Type: Network Name: macvlan - Type: Network Name: 'null' - Type: Network Name: overlay - Type: Volume Name: local - Type: Volume Name: localhost:5000/vieux/sshfs:latest - Type: Volume Name: vieux/sshfs:latest NodeSpec: type: object properties: Name: description: Name for the node. type: string example: my-node Labels: description: User-defined key/value metadata. type: object additionalProperties: type: string Role: description: Role of the node. type: string enum: - worker - manager example: manager Availability: description: Availability of the node. type: string enum: - active - pause - drain example: active example: Availability: active Name: node-name Role: manager Labels: foo: bar Reachability: description: Reachability represents the reachability of a node. type: string enum: - unknown - unreachable - reachable example: reachable Platform: description: 'Platform represents the platform (Arch/OS). ' type: object properties: Architecture: description: 'Architecture represents the hardware architecture (for example, `x86_64`). ' type: string example: x86_64 OS: description: 'OS represents the Operating System (for example, `linux` or `windows`). ' type: string example: linux TLSInfo: description: 'Information about the issuer of leaf TLS certificates and the trusted root CA certificate. ' type: object properties: TrustRoot: description: 'The root CA certificate(s) that are used to validate leaf TLS certificates. ' type: string CertIssuerSubject: description: The base64-url-safe-encoded raw subject bytes of the issuer. type: string CertIssuerPublicKey: description: 'The base64-url-safe-encoded raw public key bytes of the issuer. ' type: string example: TrustRoot: '-----BEGIN CERTIFICATE----- MIIBajCCARCgAwIBAgIUbYqrLSOSQHoxD8CwG6Bi2PJi9c8wCgYIKoZIzj0EAwIw EzERMA8GA1UEAxMIc3dhcm0tY2EwHhcNMTcwNDI0MjE0MzAwWhcNMzcwNDE5MjE0 MzAwWjATMREwDwYDVQQDEwhzd2FybS1jYTBZMBMGByqGSM49AgEGCCqGSM49AwEH A0IABJk/VyMPYdaqDXJb/VXh5n/1Yuv7iNrxV3Qb3l06XD46seovcDWs3IZNV1lf 3Skyr0ofcchipoiHkXBODojJydSjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNVHRMB Af8EBTADAQH/MB0GA1UdDgQWBBRUXxuRcnFjDfR/RIAUQab8ZV/n4jAKBggqhkjO PQQDAgNIADBFAiAy+JTe6Uc3KyLCMiqGl2GyWGQqQDEcO3/YG36x7om65AIhAJvz pxv6zFeVEkAEEkqIYi0omA9+CjanB/6Bz4n1uw8H -----END CERTIFICATE----- ' CertIssuerSubject: MBMxETAPBgNVBAMTCHN3YXJtLWNh CertIssuerPublicKey: MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAEmT9XIw9h1qoNclv9VeHmf/Vi6/uI2vFXdBveXTpcPjqx6i9wNazchk1XWV/dKTKvSh9xyGKmiIeRcE4OiMnJ1A== Node: type: object properties: ID: type: string example: 24ifsmvkjbyhk Version: $ref: '#/definitions/ObjectVersion' CreatedAt: description: 'Date and time at which the node was added to the swarm in [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format with nano-seconds. ' type: string format: dateTime example: '2016-08-18T10:44:24.496525531Z' UpdatedAt: description: 'Date and time at which the node was last updated in [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format with nano-seconds. ' type: string format: dateTime example: '2017-08-09T07:09:37.632105588Z' Spec: $ref: '#/definitions/NodeSpec' Description: $ref: '#/definitions/NodeDescription' Status: $ref: '#/definitions/NodeStatus' ManagerStatus: $ref: '#/definitions/ManagerStatus' ErrorResponse: description: Represents an error. type: object required: - message properties: message: description: The error message. type: string x-nullable: false example: message: Something went wrong. ManagerStatus: description: 'ManagerStatus represents the status of a manager. It provides the current status of a node''s manager component, if the node is a manager. ' x-nullable: true type: object properties: Leader: type: boolean default: false example: true Reachability: $ref: '#/definitions/Reachability' Addr: description: 'The IP address and port at which the manager is reachable. ' type: string example: 10.0.0.46:2377 NodeStatus: description: 'NodeStatus represents the status of a node. It provides the current status of the node, as seen by the manager. ' type: object properties: State: $ref: '#/definitions/NodeState' Message: type: string example: '' Addr: description: IP address of the node. type: string example: 172.17.0.2