Docker-Client

 view release on metacpan or  search on metacpan

share/specs/v1.32.yaml  view on Meta::CPAN

# A Swagger 2.0 (a.k.a. OpenAPI) definition of the Engine API.
#
# This is used for generating API documentation and the types used by the
# client/server. See api/README.md for more information.
#
# Some style notes:
# - This file is used by ReDoc, which allows GitHub Flavored Markdown in
#   descriptions.
# - There is no maximum line length, for ease of editing and pretty diffs.
# - operationIds are in the format "NounVerb", with a singular noun.

swagger: "2.0"
schemes:
  - "http"
  - "https"
produces:
  - "application/json"
  - "text/plain"
consumes:
  - "application/json"
  - "text/plain"
basePath: "/v1.32"
info:
  title: "Docker Engine API"
  version: "1.32"
  x-logo:
    url: "https://docs.docker.com/images/logo-docker-main.png"
  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.

    Most 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.

    # Errors

    The 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:

    ```
    {
      "message": "page not found"
    }
    ```

    # Versioning

    The API is usually changed in each release of Docker, so API calls are versioned to ensure that clients don't break.

    For Docker Engine 17.07, the API version is 1.31. To lock to this version, you prefix the URL with `/v1.31`. For example, calling `/info` is the same as calling `/v1.31/info`.

    Engine 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.

    In 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.

    The 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...

    This documentation is for version 1.32 of the API. Use this table to find documentation for previous versions of the API:

    Docker version  | API version | Changes
    ----------------|-------------|---------
    17.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)
    17.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)
    17.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)
    17.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)
    17.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)
    1.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)
    1.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)
    1.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)
    1.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)
    1.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)
    1.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)
    1.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)
    1.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)
    1.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)

    # Authentication

    Authentication 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...

    ```
    {
      "username": "string",
      "password": "string",
      "email": "string",
      "serveraddress": "string"
    }
    ```

    The `serveraddress` is a domain/IP without a protocol. Throughout this structure, double quotes are required.

    If you have already got an identity token from the [`/auth` endpoint](#operation/SystemAuth), you can just pass this instead of credentials:

    ```
    {
      "identitytoken": "9cbaf023786cd7..."
    }
    ```

# The tags on paths define the menu sections in the ReDoc documentation, so
# the usage of tags must make sense for that:
# - They should be singular, not plural.
# - There should not be too many tags, or the menu becomes unwieldy. For
#   example, it is preferable to add a path to the "System" tag instead of
#   creating a tag with a single path in it.
# - The order of tags in this list defines the order in the menu.
tags:
  # Primary objects
  - name: "Container"
    x-displayName: "Containers"
    description: |
      Create and manage containers.
  - name: "Image"
    x-displayName: "Images"
  - name: "Network"
    x-displayName: "Networks"
    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.
  - name: "Volume"
    x-displayName: "Volumes"
    description: |
      Create and manage persistent storage that can be attached to containers.
  - name: "Exec"
    x-displayName: "Exec"
    description: |
      Run new commands inside running containers. See the [command-line reference](https://docs.docker.com/engine/reference/commandline/exec/) for more information.

      To 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`.
  # Swarm things
  - name: "Swarm"
    x-displayName: "Swarm"
    description: |
      Engines can be clustered together in a swarm. See [the swarm mode documentation](https://docs.docker.com/engine/swarm/) for more information.
  - 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.
  - name: "Service"
    x-displayName: "Services"
    description: |
      Services are the definitions of tasks to run on a swarm. Swarm mode must be enabled for these endpoints to work.
  - name: "Task"
    x-displayName: "Tasks"
    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.
  - name: "Secret"
    x-displayName: "Secrets"
    description: |
      Secrets are sensitive data that can be used by services. Swarm mode must be enabled for these endpoints to work.
  # System things
  - name: "Plugin"
    x-displayName: "Plugins"
  - name: "System"
    x-displayName: "System"

definitions:
  Port:
    type: "object"
    description: "An open port on a container"
    required: [PrivatePort, Type]
    properties:
      IP:
        type: "string"
        format: "ip-address"
      PrivatePort:
        type: "integer"
        format: "uint16"
        x-nullable: false
        description: "Port on the container"
      PublicPort:
        type: "integer"
        format: "uint16"
        description: "Port exposed on the host"
      Type:
        type: "string"
        x-nullable: false
        enum: ["tcp", "udp"]
    example:
      PrivatePort: 8080
      PublicPort: 80
      Type: "tcp"

  MountPoint:
    type: "object"
    description: "A mount point inside a container"
    properties:
      Type:
        type: "string"
      Name:
        type: "string"
      Source:
        type: "string"
      Destination:
        type: "string"
      Driver:
        type: "string"
      Mode:
        type: "string"
      RW:
        type: "boolean"
      Propagation:
        type: "string"

  DeviceMapping:
    type: "object"
    description: "A device mapping between the host and container"
    properties:
      PathOnHost:
        type: "string"

share/specs/v1.32.yaml  view on Meta::CPAN

        type: "integer"
        default: 10
      Shell:
        description: "Shell for when `RUN`, `CMD`, and `ENTRYPOINT` uses a shell."
        type: "array"
        items:
          type: "string"

  NetworkSettings:
    description: "NetworkSettings exposes the network settings in the API"
    type: "object"
    properties:
      Bridge:
        description: Name of the network'a bridge (for example, `docker0`).
        type: "string"
        example: "docker0"
      SandboxID:
        description: SandboxID uniquely represents a container's network stack.
        type: "string"
        example: "9d12daf2c33f5959c8bf90aa513e4f65b561738661003029ec84830cd503a0c3"
      HairpinMode:
        description: |
          Indicates if hairpin NAT should be enabled on the virtual interface.
        type: "boolean"
        example: false
      LinkLocalIPv6Address:
        description: IPv6 unicast address using the link-local prefix.
        type: "string"
        example: "fe80::42:acff:fe11:1"
      LinkLocalIPv6PrefixLen:
        description: Prefix length of the IPv6 unicast address.
        type: "integer"
        example: "64"
      Ports:
        $ref: "#/definitions/PortMap"
      SandboxKey:
        description: SandboxKey identifies the sandbox
        type: "string"
        example: "/var/run/docker/netns/8ab54b426c38"

      # TODO is SecondaryIPAddresses actually used?
      SecondaryIPAddresses:
        description: ""
        type: "array"
        items:
          $ref: "#/definitions/Address"
        x-nullable: true

      # TODO is SecondaryIPv6Addresses actually used?
      SecondaryIPv6Addresses:
        description: ""
        type: "array"
        items:
          $ref: "#/definitions/Address"
        x-nullable: true

      # TODO properties below are part of DefaultNetworkSettings, which is
      # marked as deprecated since Docker 1.9 and to be removed in Docker v17.12
      EndpointID:
        description: |
          EndpointID uniquely represents a service endpoint in a Sandbox.

          <p><br /></p>

          > **Deprecated**: This field is only propagated when attached to the
          > default "bridge" network. Use the information from the "bridge"
          > network inside the `Networks` map instead, which contains the same
          > information. This field was deprecated in Docker 1.9 and is scheduled
          > to be removed in Docker 17.12.0
        type: "string"
        example: "b88f5b905aabf2893f3cbc4ee42d1ea7980bbc0a92e2c8922b1e1795298afb0b"
      Gateway:
        description: |
          Gateway address for the default "bridge" network.

          <p><br /></p>

          > **Deprecated**: This field is only propagated when attached to the
          > default "bridge" network. Use the information from the "bridge"
          > network inside the `Networks` map instead, which contains the same
          > information. This field was deprecated in Docker 1.9 and is scheduled
          > to be removed in Docker 17.12.0
        type: "string"
        example: "172.17.0.1"
      GlobalIPv6Address:
        description: |
          Global IPv6 address for the default "bridge" network.

          <p><br /></p>

          > **Deprecated**: This field is only propagated when attached to the
          > default "bridge" network. Use the information from the "bridge"
          > network inside the `Networks` map instead, which contains the same
          > information. This field was deprecated in Docker 1.9 and is scheduled
          > to be removed in Docker 17.12.0
        type: "string"
        example: "2001:db8::5689"
      GlobalIPv6PrefixLen:
        description: |
          Mask length of the global IPv6 address.

          <p><br /></p>

          > **Deprecated**: This field is only propagated when attached to the
          > default "bridge" network. Use the information from the "bridge"
          > network inside the `Networks` map instead, which contains the same
          > information. This field was deprecated in Docker 1.9 and is scheduled
          > to be removed in Docker 17.12.0
        type: "integer"
        example: 64
      IPAddress:
        description: |
          IPv4 address for the default "bridge" network.

          <p><br /></p>

          > **Deprecated**: This field is only propagated when attached to the
          > default "bridge" network. Use the information from the "bridge"
          > network inside the `Networks` map instead, which contains the same
          > information. This field was deprecated in Docker 1.9 and is scheduled
          > to be removed in Docker 17.12.0

share/specs/v1.32.yaml  view on Meta::CPAN

        type: "string"
      arguments:
        type: "array"
        items:
          type: "string"

  Volume:
    type: "object"
    required: [Name, Driver, Mountpoint, Labels, Scope, Options]
    properties:
      Name:
        type: "string"
        description: "Name of the volume."
        x-nullable: false
      Driver:
        type: "string"
        description: "Name of the volume driver used by the volume."
        x-nullable: false
      Mountpoint:
        type: "string"
        description: "Mount path of the volume on the host."
        x-nullable: false
      CreatedAt:
        type: "string"
        format: "dateTime"
        description: "Date/Time the volume was created."
      Status:
        type: "object"
        description: |
          Low-level details about the volume, provided by the volume driver.
          Details are returned as a map with key/value pairs:
          `{"key":"value","key2":"value2"}`.

          The `Status` field is optional, and is omitted if the volume driver
          does not support this feature.
        additionalProperties:
          type: "object"
      Labels:
        type: "object"
        description: "User-defined key/value metadata."
        x-nullable: false
        additionalProperties:
          type: "string"
      Scope:
        type: "string"
        description: "The level at which the volume exists. Either `global` for cluster-wide, or `local` for machine level."
        default: "local"
        x-nullable: false
        enum: ["local", "global"]
      Options:
        type: "object"
        description: "The driver specific options used when creating the volume."
        additionalProperties:
          type: "string"
      UsageData:
        type: "object"
        x-nullable: true
        required: [Size, RefCount]
        description: |
          Usage details about the volume. This information is used by the
          `GET /system/df` endpoint, and omitted in other endpoints.
        properties:
          Size:
            type: "integer"
            default: -1
            description: |
              Amount of disk space used by the volume (in bytes). This information
              is only available for volumes created with the `"local"` volume
              driver. For volumes created with other volume drivers, this field
              is set to `-1` ("not available")
            x-nullable: false
          RefCount:
            type: "integer"
            default: -1
            description: |
              The number of containers referencing this volume. This field
              is set to `-1` if the reference-count is not available.
            x-nullable: false

    example:
      Name: "tardis"
      Driver: "custom"
      Mountpoint: "/var/lib/docker/volumes/tardis"
      Status:
        hello: "world"
      Labels:
        com.example.some-label: "some-value"
        com.example.some-other-label: "some-other-value"
      Scope: "local"
      CreatedAt: "2016-06-07T20:31:11.853781916Z"

  Network:
    type: "object"
    properties:
      Name:
        type: "string"
      Id:
        type: "string"
      Created:
        type: "string"
        format: "dateTime"
      Scope:
        type: "string"
      Driver:
        type: "string"
      EnableIPv6:
        type: "boolean"
      IPAM:
        $ref: "#/definitions/IPAM"
      Internal:
        type: "boolean"
      Attachable:
        type: "boolean"
      Ingress:
        type: "boolean"
      Containers:
        type: "object"
        additionalProperties:
          $ref: "#/definitions/NetworkContainer"
      Options:
        type: "object"

share/specs/v1.32.yaml  view on Meta::CPAN

      error:
        type: "string"
      status:
        type: "string"
      progress:
        type: "string"
      progressDetail:
        $ref: "#/definitions/ProgressDetail"

  PushImageInfo:
    type: "object"
    properties:
      error:
        type: "string"
      status:
        type: "string"
      progress:
        type: "string"
      progressDetail:
        $ref: "#/definitions/ProgressDetail"

  ErrorDetail:
    type: "object"
    properties:
      code:
        type: "integer"
      message:
        type: "string"

  ProgressDetail:
    type: "object"
    properties:
      code:
        type: "integer"
      message:
        type: "integer"

  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."

  IdResponse:
    description: "Response to an API call that returns just an Id"
    type: "object"
    required: ["Id"]
    properties:
      Id:
        description: "The id of the newly created object."
        type: "string"
        x-nullable: false

  EndpointSettings:
    description: "Configuration for a network endpoint."
    type: "object"
    properties:
      # Configurations
      IPAMConfig:
        $ref: "#/definitions/EndpointIPAMConfig"
      Links:
        type: "array"
        items:
          type: "string"
        example:
          - "container_1"
          - "container_2"
      Aliases:
        type: "array"
        items:
          type: "string"
        example:
          - "server_x"
          - "server_y"

      # Operational data
      NetworkID:
        description: |
          Unique ID of the network.
        type: "string"
        example: "08754567f1f40222263eab4102e1c733ae697e8e354aa9cd6e18d7402835292a"
      EndpointID:
        description: |
          Unique ID for the service endpoint in a Sandbox.
        type: "string"
        example: "b88f5b905aabf2893f3cbc4ee42d1ea7980bbc0a92e2c8922b1e1795298afb0b"
      Gateway:
        description: |
          Gateway address for this network.
        type: "string"
        example: "172.17.0.1"
      IPAddress:
        description: |
          IPv4 address.
        type: "string"
        example: "172.17.0.4"
      IPPrefixLen:
        description: |
          Mask length of the IPv4 address.
        type: "integer"
        example: 16
      IPv6Gateway:
        description: |
          IPv6 gateway address.
        type: "string"
        example: "2001:db8:2::100"
      GlobalIPv6Address:
        description: |
          Global IPv6 address.
        type: "string"
        example: "2001:db8::5689"
      GlobalIPv6PrefixLen:
        description: |
          Mask length of the global IPv6 address.
        type: "integer"
        format: "int64"
        example: 64
      MacAddress:
        description: |
          MAC address for the endpoint on this network.
        type: "string"
        example: "02:42:ac:11:00:04"
      DriverOpts:
        description: |
          DriverOpts is a mapping of driver options and values. These options
          are passed directly to the driver and are driver specific.
        type: "object"
        x-nullable: true
        additionalProperties:
          type: "string"
        example:
          com.example.some-label: "some-value"
          com.example.some-other-label: "some-other-value"

  EndpointIPAMConfig:
    description: |
      EndpointIPAMConfig represents an endpoint's IPAM configuration.
    type: "object"
    x-nullable: true
    properties:
      IPv4Address:
        type: "string"
        example: "172.20.30.33"
      IPv6Address:
        type: "string"
        example: "2001:db8:abcd::3033"
      LinkLocalIPs:
        type: "array"
        items:
          type: "string"
        example:
          - "169.254.34.68"
          - "fe80::3468"

  PluginMount:
    type: "object"
    x-nullable: false
    required: [Name, Description, Settable, Source, Destination, Type, Options]
    properties:
      Name:
        type: "string"
        x-nullable: false
        example: "some-mount"
      Description:
        type: "string"
        x-nullable: false
        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"
        x-nullable: false
        example: "/mnt/state"
      Type:
        type: "string"
        x-nullable: false
        example: "bind"
      Options:
        type: "array"
        items:
          type: "string"
        example:
          - "rbind"
          - "rw"

  PluginDevice:
    type: "object"
    required: [Name, Description, Settable, Path]
    x-nullable: false
    properties:
      Name:
        type: "string"

share/specs/v1.32.yaml  view on Meta::CPAN

                Options:
                  description: "An object with key/value pairs that are interpreted as protocol-specific options for the external CA driver."
                  type: "object"
                  additionalProperties:
                    type: "string"
                CACert:
                  description: "The root CA certificate (in PEM format) this external CA uses to issue TLS certificates (assumed to be to the current swarm root CA certificate if not provided)."
                  type: "string"
          SigningCACert:
            description: "The desired signing CA certificate for all swarm node TLS leaf certificates, in PEM format."
            type: "string"
          SigningCAKey:
            description: "The desired signing CA key for all swarm node TLS leaf certificates, in PEM format."
            type: "string"
          ForceRotate:
            description: "An integer whose purpose is to force swarm to generate a new signing CA certificate and key, if none have been specified in `SigningCACert` and `SigningCAKey`"
            format: "uint64"
            type: "integer"
      EncryptionConfig:
        description: "Parameters related to encryption-at-rest."
        type: "object"
        properties:
          AutoLockManagers:
            description: "If set, generate a key and use it to lock data stored on the managers."
            type: "boolean"
            example: false
      TaskDefaults:
        description: "Defaults for creating tasks in this cluster."
        type: "object"
        properties:
          LogDriver:
            description: |
              The log driver to use for tasks created in the orchestrator if
              unspecified by a service.

              Updating this value only affects new tasks. Existing tasks continue
              to use their previously configured log driver until recreated.
            type: "object"
            properties:
              Name:
                description: |
                  The log driver to use as a default for new tasks.
                type: "string"
                example: "json-file"
              Options:
                description: |
                  Driver-specific options for the selectd log driver, specified
                  as key/value pairs.
                type: "object"
                additionalProperties:
                  type: "string"
                example:
                  "max-file": "10"
                  "max-size": "100m"

  # The Swarm information for `GET /info`. It is the same as `GET /swarm`, but
  # without `JoinTokens`.
  ClusterInfo:
    description: |
      ClusterInfo represents information about the swarm as is returned by the
      "/info" endpoint. Join-tokens are not included.
    x-nullable: true
    type: "object"
    properties:
      ID:
        description: "The ID of the swarm."
        type: "string"
        example: "abajmipo7b4xz5ip2nrla6b11"
      Version:
        $ref: "#/definitions/ObjectVersion"
      CreatedAt:
        description: |
          Date and time at which the swarm was initialised 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 swarm 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/SwarmSpec"
      TLSInfo:
        $ref: "#/definitions/TLSInfo"
      RootRotationInProgress:
        description: "Whether there is currently a root CA rotation in progress for the swarm"
        type: "boolean"
        example: false

  JoinTokens:
    description: |
      JoinTokens contains the tokens workers and managers need to join the swarm.
    type: "object"
    properties:
      Worker:
        description: |
          The token workers can use to join the swarm.
        type: "string"
        example: "SWMTKN-1-3pu6hszjas19xyp7ghgosyx9k8atbfcr8p2is99znpy26u2lkl-1awxwuwd3z9j1z3puu7rcgdbx"
      Manager:
        description: |
          The token managers can use to join the swarm.
        type: "string"
        example: "SWMTKN-1-3pu6hszjas19xyp7ghgosyx9k8atbfcr8p2is99znpy26u2lkl-7p73s1dx5in4tatdymyhg9hu2"

  Swarm:
    type: "object"
    allOf:
      - $ref: "#/definitions/ClusterInfo"
      - type: "object"
        properties:
          JoinTokens:
            $ref: "#/definitions/JoinTokens"

  TaskSpec:
    description: "User modifiable task configuration."
    type: "object"

share/specs/v1.32.yaml  view on Meta::CPAN

          description: "Additional human-readable status of this container (e.g. `Exit 0`)"
          type: "string"
        HostConfig:
          type: "object"
          properties:
            NetworkMode:
              type: "string"
        NetworkSettings:
          description: "A summary of the container's network settings"
          type: "object"
          properties:
            Networks:
              type: "object"
              additionalProperties:
                $ref: "#/definitions/EndpointSettings"
        Mounts:
          type: "array"
          items:
            $ref: "#/definitions/Mount"

  Driver:
    description: "Driver represents a driver (network, logging, secrets)."
    type: "object"
    required: [Name]
    properties:
      Name:
        description: "Name of the driver."
        type: "string"
        x-nullable: false
        example: "some-driver"
      Options:
        description: "Key/value map of driver-specific options."
        type: "object"
        x-nullable: false
        additionalProperties:
          type: "string"
        example:
          OptionA: "value for driver-specific option A"
          OptionB: "value for driver-specific option B"

  SecretSpec:
    type: "object"
    properties:
      Name:
        description: "User-defined name of the secret."
        type: "string"
      Labels:
        description: "User-defined key/value metadata."
        type: "object"
        additionalProperties:
          type: "string"
        example:
          com.example.some-label: "some-value"
          com.example.some-other-label: "some-other-value"
      Data:
        description: |
          Base64-url-safe-encoded ([RFC 4648](https://tools.ietf.org/html/rfc4648#section-3.2))
          data to store as secret.

          This field is only used to _create_ a secret, and is not returned by
          other endpoints.
        type: "string"
        example: ""
      Driver:
        description: "Name of the secrets driver used to fetch the secret's value from an external secret store"
        $ref: "#/definitions/Driver"

  Secret:
    type: "object"
    properties:
      ID:
        type: "string"
        example: "blt1owaxmitz71s9v5zh81zun"
      Version:
        $ref: "#/definitions/ObjectVersion"
      CreatedAt:
        type: "string"
        format: "dateTime"
        example: "2017-07-20T13:55:28.678958722Z"
      UpdatedAt:
        type: "string"
        format: "dateTime"
        example: "2017-07-20T13:55:28.678958722Z"
      Spec:
        $ref: "#/definitions/SecretSpec"

  ConfigSpec:
    type: "object"
    properties:
      Name:
        description: "User-defined name of the config."
        type: "string"
      Labels:
        description: "User-defined key/value metadata."
        type: "object"
        additionalProperties:
          type: "string"
      Data:
        description: |
          Base64-url-safe-encoded ([RFC 4648](https://tools.ietf.org/html/rfc4648#section-3.2))
          config data.
        type: "string"

  Config:
    type: "object"
    properties:
      ID:
        type: "string"
      Version:
        $ref: "#/definitions/ObjectVersion"
      CreatedAt:
        type: "string"
        format: "dateTime"
      UpdatedAt:
        type: "string"
        format: "dateTime"
      Spec:
        $ref: "#/definitions/ConfigSpec"

  SystemInfo:
    type: "object"

share/specs/v1.32.yaml  view on Meta::CPAN

          system when the daemon starts. Changes to operating system CPU
          allocation after the daemon is started are not reflected.
        type: "integer"
        example: 4
      MemTotal:
        description: |
          Total amount of physical memory available on the host, in kilobytes (kB).
        type: "integer"
        format: "int64"
        example: 2095882240

      IndexServerAddress:
        description: |
          Address / URL of the index server that is used for image search,
          and as a default for user authentication for Docker Hub and Docker Cloud.
        default: "https://index.docker.io/v1/"
        type: "string"
        example: "https://index.docker.io/v1/"
      RegistryConfig:
        $ref: "#/definitions/RegistryServiceConfig"
      GenericResources:
        $ref: "#/definitions/GenericResources"
      HttpProxy:
        description: |
          HTTP-proxy configured for the daemon. This value is obtained from the
          [`HTTP_PROXY`](https://www.gnu.org/software/wget/manual/html_node/Proxies.html) environment variable.

          Containers do not automatically inherit this configuration.
        type: "string"
        example: "http://user:pass@proxy.corp.example.com:8080"
      HttpsProxy:
        description: |
          HTTPS-proxy configured for the daemon. This value is obtained from the
          [`HTTPS_PROXY`](https://www.gnu.org/software/wget/manual/html_node/Proxies.html) environment variable.

          Containers do not automatically inherit this configuration.
        type: "string"
        example: "https://user:pass@proxy.corp.example.com:4443"
      NoProxy:
        description: |
          Comma-separated list of domain extensions for which no proxy should be
          used. This value is obtained from the [`NO_PROXY`](https://www.gnu.org/software/wget/manual/html_node/Proxies.html)
          environment variable.

          Containers do not automatically inherit this configuration.
        type: "string"
        example: "*.local, 169.254/16"
      Name:
        description: "Hostname of the host."
        type: "string"
        example: "node5.corp.example.com"
      Labels:
        description: |
          User-defined labels (key/value metadata) as set on the daemon.

          <p><br /></p>

          > **Note**: When part of a Swarm, nodes can both have _daemon_ labels,
          > set through the daemon configuration, and _node_ labels, set from a
          > manager node in the Swarm. Node labels are not included in this
          > field. Node labels can be retrieved using the `/nodes/(id)` endpoint
          > on a manager node in the Swarm.
        type: "array"
        items:
          type: "string"
        example: ["storage=ssd", "production"]
      ExperimentalBuild:
        description: |
          Indicates if experimental features are enabled on the daemon.
        type: "boolean"
        example: true
      ServerVersion:
        description: |
          Version string of the daemon.

          > **Note**: the [standalone Swarm API](https://docs.docker.com/swarm/swarm-api/)
          > returns the Swarm version instead of the daemon  version, for example
          > `swarm/1.2.8`.
        type: "string"
        example: "17.06.0-ce"
      ClusterStore:
        description: |
          URL of the distributed storage backend.


          The storage backend is used for multihost networking (to store
          network and endpoint information) and by the node discovery mechanism.

          <p><br /></p>

          > **Note**: This field is only propagated when using standalone Swarm
          > mode, and overlay networking using an external k/v store. Overlay
          > networks with Swarm mode enabled use the built-in raft store, and
          > this field will be empty.
        type: "string"
        example: "consul://consul.corp.example.com:8600/some/path"
      ClusterAdvertise:
        description: |
          The network endpoint that the Engine advertises for the purpose of
          node discovery. ClusterAdvertise is a `host:port` combination on which
          the daemon is reachable by other hosts.

          <p><br /></p>

          > **Note**: This field is only propagated when using standalone Swarm
          > mode, and overlay networking using an external k/v store. Overlay
          > networks with Swarm mode enabled use the built-in raft store, and
          > this field will be empty.
        type: "string"
        example: "node5.corp.example.com:8000"
      Runtimes:
        description: |
          List of [OCI compliant](https://github.com/opencontainers/runtime-spec)
          runtimes configured on the daemon. Keys hold the "name" used to
          reference the runtime.

          The Docker daemon relies on an OCI compliant runtime (invoked via the
          `containerd` daemon) as its interface to the Linux kernel namespaces,
          cgroups, and SELinux.

          The default runtime is `runc`, and automatically configured. Additional
          runtimes can be configured by the user and will be listed here.
        type: "object"
        additionalProperties:
          $ref: "#/definitions/Runtime"
        default:
          runc:
            path: "docker-runc"
        example:
          runc:
            path: "docker-runc"
          runc-master:
            path: "/go/bin/runc"
          custom:
            path: "/usr/local/bin/my-oci-runtime"
            runtimeArgs: ["--debug", "--systemd-cgroup=false"]
      DefaultRuntime:
        description: |
          Name of the default OCI runtime that is used when starting containers.

          The default can be overridden per-container at create time.
        type: "string"
        default: "runc"
        example: "runc"
      Swarm:
        $ref: "#/definitions/SwarmInfo"
      LiveRestoreEnabled:
        description: |
          Indicates if live restore is enabled.

          If enabled, containers are kept running when the daemon is shutdown
          or upon daemon start if running containers are detected.
        type: "boolean"
        default: false
        example: false
      Isolation:
        description: |
          Represents the isolation technology to use as a default for containers.
          The supported values are platform-specific.

share/specs/v1.32.yaml  view on Meta::CPAN

      Error:
        type: "string"
        default: ""
      RemoteManagers:
        description: |
          List of ID's and addresses of other managers in the swarm.
        type: "array"
        default: null
        x-nullable: true
        items:
          $ref: "#/definitions/PeerNode"
        example:
          - NodeID: "71izy0goik036k48jg985xnds"
            Addr: "10.0.0.158:2377"
          - NodeID: "79y6h1o4gv8n120drcprv5nmc"
            Addr: "10.0.0.159:2377"
          - NodeID: "k67qz4598weg5unwwffg6z1m1"
            Addr: "10.0.0.46:2377"
      Nodes:
        description: "Total number of nodes in the swarm."
        type: "integer"
        x-nullable: true
        example: 4
      Managers:
        description: "Total number of managers in the swarm."
        type: "integer"
        x-nullable: true
        example: 3
      Cluster:
        $ref: "#/definitions/ClusterInfo"

  LocalNodeState:
    description: "Current local status of this node."
    type: "string"
    default: ""
    enum:
      - ""
      - "inactive"
      - "pending"
      - "active"
      - "error"
      - "locked"
    example: "active"

  PeerNode:
    description: "Represents a peer-node in the swarm"
    properties:
      NodeID:
        description: "Unique identifier of for this node in the swarm."
        type: "string"
      Addr:
        description: |
          IP address and ports at which this node can be reached.
        type: "string"

paths:
  /containers/json:
    get:
      summary: "List containers"
      description: |
        Returns a list of containers. For details on the format, see [the inspect endpoint](#operation/ContainerInspect).

        Note that it uses a different, smaller representation of a container than inspecting a single container. For example,
        the list of linked containers is not propagated .
      operationId: "ContainerList"
      produces:
        - "application/json"
      parameters:
        - name: "all"
          in: "query"
          description: "Return all containers. By default, only running containers are shown"
          type: "boolean"
          default: false
        - name: "limit"
          in: "query"
          description: "Return this number of most recently created containers, including non-running ones."
          type: "integer"
        - name: "size"
          in: "query"
          description: "Return the size of container as fields `SizeRw` and `SizeRootFs`."
          type: "boolean"
          default: false
        - name: "filters"
          in: "query"
          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:

            - `ancestor`=(`<image-name>[:<tag>]`, `<image id>`, or `<image@digest>`)
            - `before`=(`<container id>` or `<container name>`)
            - `expose`=(`<port>[/<proto>]`|`<startport-endport>/[<proto>]`)
            - `exited=<int>` containers with exit code of `<int>`
            - `health`=(`starting`|`healthy`|`unhealthy`|`none`)
            - `id=<ID>` a container's ID
            - `isolation=`(`default`|`process`|`hyperv`) (Windows daemon only)
            - `is-task=`(`true`|`false`)
            - `label=key` or `label="key=value"` of a container label
            - `name=<name>` a container's name
            - `network`=(`<network id>` or `<network name>`)
            - `publish`=(`<port>[/<proto>]`|`<startport-endport>/[<proto>]`)
            - `since`=(`<container id>` or `<container name>`)
            - `status=`(`created`|`restarting`|`running`|`removing`|`paused`|`exited`|`dead`)
            - `volume`=(`<volume name>` or `<mount point destination>`)
          type: "string"
      responses:
        200:
          description: "no error"
          schema:
            $ref: "#/definitions/ContainerSummary"
          examples:
            application/json:
              - Id: "8dfafdbc3a40"
                Names:
                  - "/boring_feynman"
                Image: "ubuntu:latest"
                ImageID: "d74508fb6632491cea586a1fd7d748dfc5274cd6fdfedee309ecdcbc2bf5cb82"
                Command: "echo 1"
                Created: 1367854155
                State: "Exited"
                Status: "Exit 0"
                Ports:
                  - PrivatePort: 2222

share/specs/v1.32.yaml  view on Meta::CPAN

                State: "Exited"
                Status: "Exit 0"
                Ports: []
                Labels: {}
                SizeRw: 12288
                SizeRootFs: 0
                HostConfig:
                  NetworkMode: "default"
                NetworkSettings:
                  Networks:
                    bridge:
                      NetworkID: "7ea29fc1412292a2d7bba362f9253545fecdfa8ce9a6e37dd10ba8bee7129812"
                      EndpointID: "d91c7b2f0644403d7ef3095985ea0e2370325cd2332ff3a3225c4247328e66e9"
                      Gateway: "172.17.0.1"
                      IPAddress: "172.17.0.5"
                      IPPrefixLen: 16
                      IPv6Gateway: ""
                      GlobalIPv6Address: ""
                      GlobalIPv6PrefixLen: 0
                      MacAddress: "02:42:ac:11:00:05"
                Mounts: []
        400:
          description: "bad parameter"
          schema:
            $ref: "#/definitions/ErrorResponse"
        500:
          description: "server error"
          schema:
            $ref: "#/definitions/ErrorResponse"
      tags: ["Container"]
  /containers/create:
    post:
      summary: "Create a container"
      operationId: "ContainerCreate"
      consumes:
        - "application/json"
        - "application/octet-stream"
      produces:
        - "application/json"
      parameters:
        - name: "name"
          in: "query"
          description: "Assign the specified name to the container. Must match `/?[a-zA-Z0-9_-]+`."
          type: "string"
          pattern: "/?[a-zA-Z0-9_-]+"
        - name: "body"
          in: "body"
          description: "Container to create"
          schema:
            allOf:
              - $ref: "#/definitions/ContainerConfig"
              - type: "object"
                properties:
                  HostConfig:
                    $ref: "#/definitions/HostConfig"
                  NetworkingConfig:
                    description: "This container's networking configuration."
                    type: "object"
                    properties:
                      EndpointsConfig:
                        description: "A mapping of network name to endpoint configuration for that network."
                        type: "object"
                        additionalProperties:
                          $ref: "#/definitions/EndpointSettings"
            example:
              Hostname: ""
              Domainname: ""
              User: ""
              AttachStdin: false
              AttachStdout: true
              AttachStderr: true
              Tty: false
              OpenStdin: false
              StdinOnce: false
              Env:
                - "FOO=bar"
                - "BAZ=quux"
              Cmd:
                - "date"
              Entrypoint: ""
              Image: "ubuntu"
              Labels:
                com.example.vendor: "Acme"
                com.example.license: "GPL"
                com.example.version: "1.0"
              Volumes:
                /volumes/data: {}
              WorkingDir: ""
              NetworkDisabled: false
              MacAddress: "12:34:56:78:9a:bc"
              ExposedPorts:
                22/tcp: {}
              StopSignal: "SIGTERM"
              StopTimeout: 10
              HostConfig:
                Binds:
                  - "/tmp:/tmp"
                Links:
                  - "redis3:redis"
                Memory: 0
                MemorySwap: 0
                MemoryReservation: 0
                KernelMemory: 0
                NanoCPUs: 500000
                CpuPercent: 80
                CpuShares: 512
                CpuPeriod: 100000
                CpuRealtimePeriod: 1000000
                CpuRealtimeRuntime: 10000
                CpuQuota: 50000
                CpusetCpus: "0,1"
                CpusetMems: "0,1"
                MaximumIOps: 0
                MaximumIOBps: 0
                BlkioWeight: 300
                BlkioWeightDevice:
                  - {}
                BlkioDeviceReadBps:
                  - {}
                BlkioDeviceReadIOps:
                  - {}

share/specs/v1.32.yaml  view on Meta::CPAN

                  bridge:
                    NetworkID: "7ea29fc1412292a2d7bba362f9253545fecdfa8ce9a6e37dd10ba8bee7129812"
                    EndpointID: "7587b82f0dada3656fda26588aee72630c6fab1536d36e394b2bfbcf898c971d"
                    Gateway: "172.17.0.1"
                    IPAddress: "172.17.0.2"
                    IPPrefixLen: 16
                    IPv6Gateway: ""
                    GlobalIPv6Address: ""
                    GlobalIPv6PrefixLen: 0
                    MacAddress: "02:42:ac:12:00:02"
              Path: "/bin/sh"
              ProcessLabel: ""
              ResolvConfPath: "/var/lib/docker/containers/ba033ac4401106a3b513bc9d639eee123ad78ca3616b921167cd74b20e25ed39/resolv.conf"
              RestartCount: 1
              State:
                Error: ""
                ExitCode: 9
                FinishedAt: "2015-01-06T15:47:32.080254511Z"
                OOMKilled: false
                Dead: false
                Paused: false
                Pid: 0
                Restarting: false
                Running: true
                StartedAt: "2015-01-06T15:47:32.072697474Z"
                Status: "running"
              Mounts:
                - Name: "fac362...80535"
                  Source: "/data"
                  Destination: "/data"
                  Driver: "local"
                  Mode: "ro,Z"
                  RW: false
                  Propagation: ""
        404:
          description: "no such container"
          schema:
            $ref: "#/definitions/ErrorResponse"
          examples:
            application/json:
              message: "No such container: c2ada9df5af8"
        500:
          description: "server error"
          schema:
            $ref: "#/definitions/ErrorResponse"
      parameters:
        - name: "id"
          in: "path"
          required: true
          description: "ID or name of the container"
          type: "string"
        - name: "size"
          in: "query"
          type: "boolean"
          default: false
          description: "Return the size of container as fields `SizeRw` and `SizeRootFs`"
      tags: ["Container"]
  /containers/{id}/top:
    get:
      summary: "List processes running inside a container"
      description: "On Unix systems, this is done by running the `ps` command. This endpoint is not supported on Windows."
      operationId: "ContainerTop"
      responses:
        200:
          description: "no error"
          schema:
            type: "object"
            properties:
              Titles:
                description: "The ps column titles"
                type: "array"
                items:
                  type: "string"
              Processes:
                description: "Each process running in the container, where each is process is an array of values corresponding to the titles"
                type: "array"
                items:
                  type: "array"
                  items:
                    type: "string"
          examples:
            application/json:
              Titles:
                - "UID"
                - "PID"
                - "PPID"
                - "C"
                - "STIME"
                - "TTY"
                - "TIME"
                - "CMD"
              Processes:
                -
                  - "root"
                  - "13642"
                  - "882"
                  - "0"
                  - "17:03"
                  - "pts/0"
                  - "00:00:00"
                  - "/bin/bash"
                -
                  - "root"
                  - "13735"
                  - "13642"
                  - "0"
                  - "17:06"
                  - "pts/0"
                  - "00:00:00"
                  - "sleep 10"
        404:
          description: "no such container"
          schema:
            $ref: "#/definitions/ErrorResponse"
          examples:
            application/json:
              message: "No such container: c2ada9df5af8"
        500:
          description: "server error"
          schema:
            $ref: "#/definitions/ErrorResponse"
      parameters:
        - name: "id"
          in: "path"
          required: true
          description: "ID or name of the container"
          type: "string"
        - name: "ps_args"
          in: "query"
          description: "The arguments to pass to `ps`. For example, `aux`"
          type: "string"
          default: "-ef"
      tags: ["Container"]
  /containers/{id}/logs:
    get:
      summary: "Get container logs"
      description: |
        Get `stdout` and `stderr` logs from a container.

        Note: This endpoint works only for containers with the `json-file` or `journald` logging driver.
      operationId: "ContainerLogs"
      responses:
        101:
          description: "logs returned as a stream"
          schema:
            type: "string"
            format: "binary"
        200:
          description: "logs returned as a string in response body"
          schema:
            type: "string"
        404:
          description: "no such container"
          schema:
            $ref: "#/definitions/ErrorResponse"
          examples:
            application/json:
              message: "No such container: c2ada9df5af8"
        500:
          description: "server error"
          schema:
            $ref: "#/definitions/ErrorResponse"
      parameters:
        - name: "id"
          in: "path"
          required: true
          description: "ID or name of the container"
          type: "string"
        - name: "follow"
          in: "query"
          description: |
            Return the logs as a stream.

            This will return a `101` HTTP response with a `Connection: upgrade` header, then hijack the HTTP connection to send raw output. For more information about hijacking and the stream format, [see the documentation for the attach endpoint](#o...
          type: "boolean"
          default: false
        - name: "stdout"
          in: "query"
          description: "Return logs from `stdout`"
          type: "boolean"
          default: false
        - name: "stderr"
          in: "query"
          description: "Return logs from `stderr`"
          type: "boolean"
          default: false
        - name: "since"
          in: "query"
          description: "Only return logs since this time, as a UNIX timestamp"
          type: "integer"
          default: 0
        - name: "timestamps"
          in: "query"
          description: "Add timestamps to every log line"
          type: "boolean"
          default: false
        - name: "tail"
          in: "query"
          description: "Only return this number of log lines from the end of the logs. Specify as an integer or `all` to output all log lines."
          type: "string"
          default: "all"
      tags: ["Container"]
  /containers/{id}/changes:
    get:
      summary: "Get changes on a container’s filesystem"
      description: |
        Returns which files in a container's filesystem have been added, deleted,
        or modified. The `Kind` of modification can be one of:

        - `0`: Modified
        - `1`: Added
        - `2`: Deleted
      operationId: "ContainerChanges"
      produces: ["application/json"]
      responses:
        200:
          description: "The list of changes"
          schema:
            type: "array"
            items:
              type: "object"
              x-go-name: "ContainerChangeResponseItem"
              required: [Path, Kind]
              properties:
                Path:
                  description: "Path to file that has changed"
                  type: "string"
                  x-nullable: false
                Kind:
                  description: "Kind of change"
                  type: "integer"
                  format: "uint8"
                  enum: [0, 1, 2]
                  x-nullable: false
          examples:
            application/json:
              - Path: "/dev"
                Kind: 0
              - Path: "/dev/kmsg"
                Kind: 1
              - Path: "/test"
                Kind: 1
        404:
          description: "no such container"
          schema:
            $ref: "#/definitions/ErrorResponse"
          examples:
            application/json:
              message: "No such container: c2ada9df5af8"
        500:
          description: "server error"
          schema:
            $ref: "#/definitions/ErrorResponse"
      parameters:
        - name: "id"
          in: "path"
          required: true
          description: "ID or name of the container"
          type: "string"
      tags: ["Container"]
  /containers/{id}/export:
    get:
      summary: "Export a container"
      description: "Export the contents of a container as a tarball."
      operationId: "ContainerExport"
      produces:
        - "application/octet-stream"
      responses:
        200:
          description: "no error"
        404:
          description: "no such container"
          schema:
            $ref: "#/definitions/ErrorResponse"
          examples:
            application/json:
              message: "No such container: c2ada9df5af8"
        500:
          description: "server error"
          schema:
            $ref: "#/definitions/ErrorResponse"
      parameters:
        - name: "id"
          in: "path"
          required: true
          description: "ID or name of the container"
          type: "string"
      tags: ["Container"]
  /containers/{id}/stats:
    get:
      summary: "Get container stats based on resource usage"
      description: |
        This endpoint returns a live stream of a container’s resource usage
        statistics.

        The `precpu_stats` is the CPU statistic of last read, which is used
        for calculating the CPU usage percentage. It is not the same as the
        `cpu_stats` field.

        If either `precpu_stats.online_cpus` or `cpu_stats.online_cpus` is
        nil then for compatibility with older daemons the length of the
        corresponding `cpu_usage.percpu_usage` array should be used.
      operationId: "ContainerStats"
      produces: ["application/json"]
      responses:
        200:
          description: "no error"
          schema:
            type: "object"
          examples:
            application/json:
              read: "2015-01-08T22:57:31.547920715Z"
              pids_stats:
                current: 3
              networks:
                eth0:
                  rx_bytes: 5338
                  rx_dropped: 0
                  rx_errors: 0
                  rx_packets: 36
                  tx_bytes: 648
                  tx_dropped: 0
                  tx_errors: 0
                  tx_packets: 8
                eth5:
                  rx_bytes: 4641
                  rx_dropped: 0
                  rx_errors: 0
                  rx_packets: 26
                  tx_bytes: 690
                  tx_dropped: 0
                  tx_errors: 0
                  tx_packets: 9
              memory_stats:
                stats:
                  total_pgmajfault: 0
                  cache: 0
                  mapped_file: 0
                  total_inactive_file: 0
                  pgpgout: 414
                  rss: 6537216
                  total_mapped_file: 0
                  writeback: 0
                  unevictable: 0
                  pgpgin: 477
                  total_unevictable: 0
                  pgmajfault: 0
                  total_rss: 6537216
                  total_rss_huge: 6291456
                  total_writeback: 0
                  total_inactive_anon: 0
                  rss_huge: 6291456
                  hierarchical_memory_limit: 67108864

share/specs/v1.32.yaml  view on Meta::CPAN

    post:
      summary: "Pause a container"
      description: |
        Use the cgroups freezer to suspend all processes in a container.

        Traditionally, when suspending a process the `SIGSTOP` signal is used, which is observable by the process being suspended. With the cgroups freezer the process is unaware, and unable to capture, that it is being suspended, and subsequently re...
      operationId: "ContainerPause"
      responses:
        204:
          description: "no error"
        404:
          description: "no such container"
          schema:
            $ref: "#/definitions/ErrorResponse"
          examples:
            application/json:
              message: "No such container: c2ada9df5af8"
        500:
          description: "server error"
          schema:
            $ref: "#/definitions/ErrorResponse"
      parameters:
        - name: "id"
          in: "path"
          required: true
          description: "ID or name of the container"
          type: "string"
      tags: ["Container"]
  /containers/{id}/unpause:
    post:
      summary: "Unpause a container"
      description: "Resume a container which has been paused."
      operationId: "ContainerUnpause"
      responses:
        204:
          description: "no error"
        404:
          description: "no such container"
          schema:
            $ref: "#/definitions/ErrorResponse"
          examples:
            application/json:
              message: "No such container: c2ada9df5af8"
        500:
          description: "server error"
          schema:
            $ref: "#/definitions/ErrorResponse"
      parameters:
        - name: "id"
          in: "path"
          required: true
          description: "ID or name of the container"
          type: "string"
      tags: ["Container"]
  /containers/{id}/attach:
    post:
      summary: "Attach to a container"
      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.

        Either the `stream` or `logs` parameter must be `true` for this endpoint to do anything.

        See [the documentation for the `docker attach` command](https://docs.docker.com/engine/reference/commandline/attach/) for more details.

        ### Hijacking

        This endpoint hijacks the HTTP connection to transport `stdin`, `stdout`, and `stderr` on the same socket.

        This is the response from the daemon for an attach request:

        ```
        HTTP/1.1 200 OK
        Content-Type: application/vnd.docker.raw-stream

        [STREAM]
        ```

        After the headers and two new lines, the TCP connection can now be used for raw, bidirectional communication between the client and server.

        To hint potential proxies about connection hijacking, the Docker client can also optionally send connection upgrade headers.

        For example, the client sends this request to upgrade the connection:

        ```
        POST /containers/16253994b7c4/attach?stream=1&stdout=1 HTTP/1.1
        Upgrade: tcp
        Connection: Upgrade
        ```

        The Docker daemon will respond with a `101 UPGRADED` response, and will similarly follow with the raw stream:

        ```
        HTTP/1.1 101 UPGRADED
        Content-Type: application/vnd.docker.raw-stream
        Connection: Upgrade
        Upgrade: tcp

        [STREAM]
        ```

        ### Stream format

        When 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 containi...

        The 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`).

        It is encoded on the first eight bytes like this:

        ```go
        header := [8]byte{STREAM_TYPE, 0, 0, 0, SIZE1, SIZE2, SIZE3, SIZE4}
        ```

        `STREAM_TYPE` can be:

        - 0: `stdin` (is written on `stdout`)
        - 1: `stdout`
        - 2: `stderr`

        `SIZE1, SIZE2, SIZE3, SIZE4` are the four bytes of the `uint32` size encoded as big endian.

        Following the header is the payload, which is the specified number of bytes of `STREAM_TYPE`.

        The simplest way to implement this protocol is the following:

        1. Read 8 bytes.
        2. Choose `stdout` or `stderr` depending on the first byte.
        3. Extract the frame size from the last four bytes.

share/specs/v1.32.yaml  view on Meta::CPAN

          description: "No error"
          schema:
            $ref: "#/definitions/SystemInfo"
        500:
          description: "Server error"
          schema:
            $ref: "#/definitions/ErrorResponse"
      tags: ["System"]
  /version:
    get:
      summary: "Get version"
      description: "Returns the version of Docker that is running and various information about the system that Docker is running on."
      operationId: "SystemVersion"
      produces: ["application/json"]
      responses:
        200:
          description: "no error"
          schema:
            type: "object"
            properties:
              Version:
                type: "string"
              ApiVersion:
                type: "string"
              MinAPIVersion:
                type: "string"
              GitCommit:
                type: "string"
              GoVersion:
                type: "string"
              Os:
                type: "string"
              Arch:
                type: "string"
              KernelVersion:
                type: "string"
              Experimental:
                type: "boolean"
              BuildTime:
                type: "string"
          examples:
            application/json:
              Version: "17.04.0"
              Os: "linux"
              KernelVersion: "3.19.0-23-generic"
              GoVersion: "go1.7.5"
              GitCommit: "deadbee"
              Arch: "amd64"
              ApiVersion: "1.27"
              MinAPIVersion: "1.12"
              BuildTime: "2016-06-14T07:09:13.444803460+00:00"
              Experimental: true
        500:
          description: "server error"
          schema:
            $ref: "#/definitions/ErrorResponse"
      tags: ["System"]
  /_ping:
    get:
      summary: "Ping"
      description: "This is a dummy endpoint you can use to test if the server is accessible."
      operationId: "SystemPing"
      produces: ["text/plain"]
      responses:
        200:
          description: "no error"
          schema:
            type: "string"
            example: "OK"
          headers:
            API-Version:
              type: "string"
              description: "Max API Version the server supports"
            Docker-Experimental:
              type: "boolean"
              description: "If the server is running with experimental mode enabled"
        500:
          description: "server error"
          schema:
            $ref: "#/definitions/ErrorResponse"
      tags: ["System"]
  /commit:
    post:
      summary: "Create a new image from a container"
      operationId: "ImageCommit"
      consumes:
        - "application/json"
      produces:
        - "application/json"
      responses:
        201:
          description: "no error"
          schema:
            $ref: "#/definitions/IdResponse"
        404:
          description: "no such container"
          schema:
            $ref: "#/definitions/ErrorResponse"
          examples:
            application/json:
              message: "No such container: c2ada9df5af8"
        500:
          description: "server error"
          schema:
            $ref: "#/definitions/ErrorResponse"
      parameters:
        - name: "containerConfig"
          in: "body"
          description: "The container configuration"
          schema:
            $ref: "#/definitions/ContainerConfig"
        - name: "container"
          in: "query"
          description: "The ID or name of the container to commit"
          type: "string"
        - name: "repo"
          in: "query"
          description: "Repository name for the created image"
          type: "string"
        - name: "tag"
          in: "query"

share/specs/v1.32.yaml  view on Meta::CPAN

        500:
          description: "server error"
          schema:
            $ref: "#/definitions/ErrorResponse"
      tags: ["System"]
  /images/{name}/get:
    get:
      summary: "Export an image"
      description: |
        Get a tarball containing all images and metadata for a repository.

        If `name` is a specific name and tag (e.g. `ubuntu:latest`), then only that image (and its parents) are returned. If `name` is an image ID, similarly only that image (and its parents) are returned, but with the exclusion of the `repositories`...

        ### Image tarball format

        An image tarball contains one directory per image layer (named using its long ID), each containing these files:

        - `VERSION`: currently `1.0` - the file format version
        - `json`: detailed layer information, similar to `docker inspect layer_id`
        - `layer.tar`: A tarfile containing the filesystem changes in this layer

        The `layer.tar` file contains `aufs` style `.wh..wh.aufs` files and directories for storing attribute changes and deletions.

        If the tarball defines a repository, the tarball should also include a `repositories` file at the root that contains a list of repository and tag names mapped to layer IDs.

        ```json
        {
          "hello-world": {
            "latest": "565a9d68a73f6706862bfe8409a7f659776d4d60a8d096eb4a3cbce6999cc2a1"
          }
        }
        ```
      operationId: "ImageGet"
      produces:
        - "application/x-tar"
      responses:
        200:
          description: "no error"
          schema:
            type: "string"
            format: "binary"
        500:
          description: "server error"
          schema:
            $ref: "#/definitions/ErrorResponse"
      parameters:
        - name: "name"
          in: "path"
          description: "Image name or ID"
          type: "string"
          required: true
      tags: ["Image"]
  /images/get:
    get:
      summary: "Export several images"
      description: |
        Get a tarball containing all images and metadata for several image repositories.

        For each value of the `names` parameter: if it is a specific name and tag (e.g. `ubuntu:latest`), then only that image (and its parents) are returned; if it is an image ID, similarly only that image (and its parents) are returned and there wo...

        For details on the format, see [the export image endpoint](#operation/ImageGet).
      operationId: "ImageGetAll"
      produces:
        - "application/x-tar"
      responses:
        200:
          description: "no error"
          schema:
            type: "string"
            format: "binary"
        500:
          description: "server error"
          schema:
            $ref: "#/definitions/ErrorResponse"
      parameters:
        - name: "names"
          in: "query"
          description: "Image names to filter by"
          type: "array"
          items:
            type: "string"
      tags: ["Image"]
  /images/load:
    post:
      summary: "Import images"
      description: |
        Load a set of images and tags into a repository.

        For details on the format, see [the export image endpoint](#operation/ImageGet).
      operationId: "ImageLoad"
      consumes:
        - "application/x-tar"
      produces:
        - "application/json"
      responses:
        200:
          description: "no error"
        500:
          description: "server error"
          schema:
            $ref: "#/definitions/ErrorResponse"
      parameters:
        - name: "imagesTarball"
          in: "body"
          description: "Tar archive containing images"
          schema:
            type: "string"
            format: "binary"
        - name: "quiet"
          in: "query"
          description: "Suppress progress details during load."
          type: "boolean"
          default: false
      tags: ["Image"]
  /containers/{id}/exec:
    post:
      summary: "Create an exec instance"
      description: "Run a command inside a running container."
      operationId: "ContainerExec"
      consumes:
        - "application/json"
      produces:
        - "application/json"
      responses:
        201:
          description: "no error"
          schema:
            $ref: "#/definitions/IdResponse"
        404:
          description: "no such container"
          schema:
            $ref: "#/definitions/ErrorResponse"
          examples:
            application/json:
              message: "No such container: c2ada9df5af8"
        409:
          description: "container is paused"
          schema:
            $ref: "#/definitions/ErrorResponse"
        500:
          description: "Server error"
          schema:
            $ref: "#/definitions/ErrorResponse"
      parameters:
        - name: "execConfig"
          in: "body"
          description: "Exec configuration"
          schema:
            type: "object"
            properties:
              AttachStdin:
                type: "boolean"
                description: "Attach to `stdin` of the exec command."
              AttachStdout:
                type: "boolean"
                description: "Attach to `stdout` of the exec command."
              AttachStderr:
                type: "boolean"
                description: "Attach to `stderr` of the exec command."
              DetachKeys:
                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 `_`."
              Tty:
                type: "boolean"
                description: "Allocate a pseudo-TTY."
              Env:
                description: "A list of environment variables in the form `[\"VAR=value\", ...]`."
                type: "array"
                items:
                  type: "string"
              Cmd:
                type: "array"
                description: "Command to run, as a string or array of strings."
                items:
                  type: "string"
              Privileged:
                type: "boolean"
                description: "Runs the exec process with extended privileges."
                default: false
              User:
                type: "string"
                description: "The user, and optionally, group to run the exec process inside the container. Format is one of: `user`, `user:group`, `uid`, or `uid:gid`."
            example:
              AttachStdin: false
              AttachStdout: true
              AttachStderr: true
              DetachKeys: "ctrl-p,ctrl-q"
              Tty: false
              Cmd:
                - "date"
              Env:
                - "FOO=bar"
                - "BAZ=quux"
          required: true
        - name: "id"
          in: "path"
          description: "ID or name of container"
          type: "string"
          required: true
      tags: ["Exec"]
  /exec/{id}/start:
    post:
      summary: "Start an exec instance"
      description: "Starts a previously set up exec instance. If detach is true, this endpoint returns immediately after starting the command. Otherwise, it sets up an interactive session with the command."
      operationId: "ExecStart"
      consumes:
        - "application/json"
      produces:
        - "application/vnd.docker.raw-stream"
      responses:
        200:
          description: "No error"
        404:
          description: "No such exec instance"
          schema:
            $ref: "#/definitions/ErrorResponse"
        409:
          description: "Container is stopped or paused"
          schema:
            $ref: "#/definitions/ErrorResponse"
      parameters:
        - name: "execStartConfig"
          in: "body"
          schema:
            type: "object"
            properties:
              Detach:
                type: "boolean"
                description: "Detach from the command."
              Tty:
                type: "boolean"
                description: "Allocate a pseudo-TTY."
            example:
              Detach: false
              Tty: false
        - name: "id"
          in: "path"
          description: "Exec instance ID"
          required: true
          type: "string"
      tags: ["Exec"]
  /exec/{id}/resize:
    post:
      summary: "Resize an exec instance"
      description: "Resize the TTY session used by an exec instance. This endpoint only works if `tty` was specified as part of creating and starting the exec instance."
      operationId: "ExecResize"
      responses:
        201:
          description: "No error"
        404:
          description: "No such exec instance"
          schema:
            $ref: "#/definitions/ErrorResponse"
      parameters:
        - name: "id"
          in: "path"
          description: "Exec instance ID"
          required: true
          type: "string"
        - name: "h"
          in: "query"
          description: "Height of the TTY session in characters"
          type: "integer"
        - name: "w"
          in: "query"
          description: "Width of the TTY session in characters"
          type: "integer"
      tags: ["Exec"]
  /exec/{id}/json:
    get:
      summary: "Inspect an exec instance"
      description: "Return low-level information about an exec instance."
      operationId: "ExecInspect"
      produces:
        - "application/json"
      responses:
        200:
          description: "No error"
          schema:
            type: "object"
            properties:
              ID:
                type: "string"
              Running:
                type: "boolean"
              ExitCode:
                type: "integer"
              ProcessConfig:
                $ref: "#/definitions/ProcessConfig"
              OpenStdin:
                type: "boolean"
              OpenStderr:
                type: "boolean"
              OpenStdout:
                type: "boolean"
              ContainerID:
                type: "string"
              Pid:
                type: "integer"
                description: "The system process ID for the exec process."
          examples:
            application/json:
              CanRemove: false
              ContainerID: "b53ee82b53a40c7dca428523e34f741f3abc51d9f297a14ff874bf761b995126"
              DetachKeys: ""

share/specs/v1.32.yaml  view on Meta::CPAN

            $ref: "#/definitions/ErrorResponse"
        409:
          description: "Volume is in use and cannot be removed"
          schema:
            $ref: "#/definitions/ErrorResponse"
        500:
          description: "Server error"
          schema:
            $ref: "#/definitions/ErrorResponse"
      parameters:
        - name: "name"
          in: "path"
          required: true
          description: "Volume name or ID"
          type: "string"
        - name: "force"
          in: "query"
          description: "Force the removal of the volume"
          type: "boolean"
          default: false
      tags: ["Volume"]
  /volumes/prune:
    post:
      summary: "Delete unused volumes"
      produces:
        - "application/json"
      operationId: "VolumePrune"
      parameters:
        - name: "filters"
          in: "query"
          description: |
            Filters to process on the prune list, encoded as JSON (a `map[string][]string`).

            Available filters:
            - `label` (`label=<key>`, `label=<key>=<value>`, `label!=<key>`, or `label!=<key>=<value>`) Prune volumes with (or without, in case `label!=...` is used) the specified labels.
          type: "string"
      responses:
        200:
          description: "No error"
          schema:
            type: "object"
            properties:
              VolumesDeleted:
                description: "Volumes that were deleted"
                type: "array"
                items:
                  type: "string"
              SpaceReclaimed:
                description: "Disk space reclaimed in bytes"
                type: "integer"
                format: "int64"
        500:
          description: "Server error"
          schema:
            $ref: "#/definitions/ErrorResponse"
      tags: ["Volume"]
  /networks:
    get:
      summary: "List networks"
      description: |
        Returns a list of networks. For details on the format, see [the network inspect endpoint](#operation/NetworkInspect).

        Note that it uses a different, smaller representation of a network than inspecting a single network. For example,
        the list of containers attached to the network is not propagated in API versions 1.28 and up.
      operationId: "NetworkList"
      produces:
        - "application/json"
      responses:
        200:
          description: "No error"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/Network"
          examples:
            application/json:
              - Name: "bridge"
                Id: "f2de39df4171b0dc801e8002d1d999b77256983dfc63041c0f34030aa3977566"
                Created: "2016-10-19T06:21:00.416543526Z"
                Scope: "local"
                Driver: "bridge"
                EnableIPv6: false
                Internal: false
                Attachable: false
                Ingress: false
                IPAM:
                  Driver: "default"
                  Config:
                    -
                      Subnet: "172.17.0.0/16"
                Options:
                  com.docker.network.bridge.default_bridge: "true"
                  com.docker.network.bridge.enable_icc: "true"
                  com.docker.network.bridge.enable_ip_masquerade: "true"
                  com.docker.network.bridge.host_binding_ipv4: "0.0.0.0"
                  com.docker.network.bridge.name: "docker0"
                  com.docker.network.driver.mtu: "1500"
              - Name: "none"
                Id: "e086a3893b05ab69242d3c44e49483a3bbbd3a26b46baa8f61ab797c1088d794"
                Created: "0001-01-01T00:00:00Z"
                Scope: "local"
                Driver: "null"
                EnableIPv6: false
                Internal: false
                Attachable: false
                Ingress: false
                IPAM:
                  Driver: "default"
                  Config: []
                Containers: {}
                Options: {}
              - Name: "host"
                Id: "13e871235c677f196c4e1ecebb9dc733b9b2d2ab589e30c539efeda84a24215e"
                Created: "0001-01-01T00:00:00Z"
                Scope: "local"
                Driver: "host"
                EnableIPv6: false
                Internal: false
                Attachable: false
                Ingress: false
                IPAM:

share/specs/v1.32.yaml  view on Meta::CPAN

          type: "string"
          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>`
      tags: ["Plugin"]

  /plugins/privileges:
    get:
      summary: "Get plugin privileges"
      operationId: "GetPluginPrivileges"
      responses:
        200:
          description: "no error"
          schema:
            type: "array"
            items:
              description: "Describes a permission the user has to accept upon installing the plugin."
              type: "object"
              properties:
                Name:
                  type: "string"
                Description:
                  type: "string"
                Value:
                  type: "array"
                  items:
                    type: "string"
            example:
              - Name: "network"
                Description: ""
                Value:
                  - "host"
              - Name: "mount"
                Description: ""
                Value:
                  - "/data"
              - Name: "device"
                Description: ""
                Value:
                  - "/dev/cpu_dma_latency"
        500:
          description: "server error"
          schema:
            $ref: "#/definitions/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
          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](#operation/PostPluginsEnable).
      produces:
        - "application/json"
      responses:
        204:
          description: "no error"
        500:
          description: "server error"
          schema:
            $ref: "#/definitions/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
          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
          type: "string"
        - name: "X-Registry-Auth"
          in: "header"
          description: "A base64-encoded auth configuration to use when pulling a plugin from a registry. [See the authentication section for details.](#section/Authentication)"
          type: "string"
        - name: "body"
          in: "body"
          schema:
            type: "array"
            items:
              description: "Describes a permission accepted by the user upon installing the plugin."
              type: "object"
              properties:
                Name:
                  type: "string"
                Description:
                  type: "string"
                Value:
                  type: "array"
                  items:
                    type: "string"
            example:
              - Name: "network"
                Description: ""
                Value:
                  - "host"
              - Name: "mount"
                Description: ""
                Value:
                  - "/data"
              - Name: "device"
                Description: ""
                Value:
                  - "/dev/cpu_dma_latency"
      tags: ["Plugin"]

share/specs/v1.32.yaml  view on Meta::CPAN

                    ContainerSpec:
                      Image: "busybox"
                      Args:
                        - "top"
                    Resources:
                      Limits: {}
                      Reservations: {}
                    RestartPolicy:
                      Condition: "any"
                      MaxAttempts: 0
                    Placement: {}
                    ForceUpdate: 0
                  Mode:
                    Replicated:
                      Replicas: 1
                  UpdateConfig:
                    Parallelism: 2
                    Delay: 1000000000
                    FailureAction: "pause"
                    Monitor: 15000000000
                    MaxFailureRatio: 0.15
                  RollbackConfig:
                    Parallelism: 1
                    Delay: 1000000000
                    FailureAction: "pause"
                    Monitor: 15000000000
                    MaxFailureRatio: 0.15
                  EndpointSpec:
                    Mode: "vip"

        - name: "version"
          in: "query"
          description: "The version number of the service object being updated. This is required to avoid conflicting writes."
          required: true
          type: "integer"
        - name: "registryAuthFrom"
          in: "query"
          type: "string"
          description: "If the X-Registry-Auth header is not specified, this
  parameter indicates where to find registry authorization credentials. The
  valid values are `spec` and `previous-spec`."
          default: "spec"
        - name: "rollback"
          in: "query"
          type: "string"
          description: "Set to this parameter to `previous` to cause a
  server-side rollback to the previous service spec. The supplied spec will be
  ignored in this case."
        - name: "X-Registry-Auth"
          in: "header"
          description: "A base64-encoded auth configuration for pulling from private registries. [See the authentication section for details.](#section/Authentication)"
          type: "string"

      tags: ["Service"]
  /services/{id}/logs:
    get:
      summary: "Get service logs"
      description: |
        Get `stdout` and `stderr` logs from a service.

        **Note**: This endpoint works only for services with the `json-file` or `journald` logging drivers.
      operationId: "ServiceLogs"
      produces:
        - "application/vnd.docker.raw-stream"
        - "application/json"
      responses:
        101:
          description: "logs returned as a stream"
          schema:
            type: "string"
            format: "binary"
        200:
          description: "logs returned as a string in response body"
          schema:
            type: "string"
        404:
          description: "no such service"
          schema:
            $ref: "#/definitions/ErrorResponse"
          examples:
            application/json:
              message: "No such service: c2ada9df5af8"
        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"
          required: true
          description: "ID or name of the service"
          type: "string"
        - name: "details"
          in: "query"
          description: "Show service context and extra details provided to logs."
          type: "boolean"
          default: false
        - name: "follow"
          in: "query"
          description: |
            Return the logs as a stream.

            This will return a `101` HTTP response with a `Connection: upgrade` header, then hijack the HTTP connection to send raw output. For more information about hijacking and the stream format, [see the documentation for the attach endpoint](#o...
          type: "boolean"
          default: false
        - name: "stdout"
          in: "query"
          description: "Return logs from `stdout`"
          type: "boolean"
          default: false
        - name: "stderr"
          in: "query"
          description: "Return logs from `stderr`"
          type: "boolean"
          default: false
        - name: "since"
          in: "query"
          description: "Only return logs since this time, as a UNIX timestamp"
          type: "integer"
          default: 0
        - name: "timestamps"
          in: "query"
          description: "Add timestamps to every log line"
          type: "boolean"
          default: false
        - name: "tail"
          in: "query"
          description: "Only return this number of log lines from the end of the logs. Specify as an integer or `all` to output all log lines."
          type: "string"
          default: "all"
      tags: ["Service"]
  /tasks:
    get:
      summary: "List tasks"
      operationId: "TaskList"
      produces:
        - "application/json"
      responses:
        200:
          description: "no error"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/Task"
            example:
              - ID: "0kzzo1i0y4jz6027t0k7aezc7"
                Version:
                  Index: 71
                CreatedAt: "2016-06-07T21:07:31.171892745Z"
                UpdatedAt: "2016-06-07T21:07:31.376370513Z"
                Spec:
                  ContainerSpec:
                    Image: "redis"
                  Resources:
                    Limits: {}
                    Reservations: {}
                  RestartPolicy:
                    Condition: "any"
                    MaxAttempts: 0
                  Placement: {}
                ServiceID: "9mnpnzenvg8p8tdbtq4wvbkcz"
                Slot: 1
                NodeID: "60gvrl6tm78dmak4yl7srz94v"

share/specs/v1.32.yaml  view on Meta::CPAN

                    Addresses:
                      - "10.255.0.5/16"
        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"
          type: "string"
          description: |
            A JSON encoded value of the filters (a `map[string][]string`) to process on the tasks list. Available filters:

            - `desired-state=(running | shutdown | accepted)`
            - `id=<task id>`
            - `label=key` or `label="key=value"`
            - `name=<task name>`
            - `node=<node id or name>`
            - `service=<service name>`
      tags: ["Task"]
  /tasks/{id}:
    get:
      summary: "Inspect a task"
      operationId: "TaskInspect"
      produces:
        - "application/json"
      responses:
        200:
          description: "no error"
          schema:
            $ref: "#/definitions/Task"
        404:
          description: "no such task"
          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: "ID of the task"
          required: true
          type: "string"
      tags: ["Task"]
  /tasks/{id}/logs:
    get:
      summary: "Get task logs"
      description: |
        Get `stdout` and `stderr` logs from a task.

        **Note**: This endpoint works only for services with the `json-file` or `journald` logging drivers.
      operationId: "TaskLogs"
      produces:
        - "application/vnd.docker.raw-stream"
        - "application/json"
      responses:
        101:
          description: "logs returned as a stream"
          schema:
            type: "string"
            format: "binary"
        200:
          description: "logs returned as a string in response body"
          schema:
            type: "string"
        404:
          description: "no such task"
          schema:
            $ref: "#/definitions/ErrorResponse"
          examples:
            application/json:
              message: "No such task: c2ada9df5af8"
        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"
          required: true
          description: "ID of the task"
          type: "string"
        - name: "details"
          in: "query"
          description: "Show task context and extra details provided to logs."
          type: "boolean"
          default: false
        - name: "follow"
          in: "query"
          description: |
            Return the logs as a stream.

            This will return a `101` HTTP response with a `Connection: upgrade` header, then hijack the HTTP connection to send raw output. For more information about hijacking and the stream format, [see the documentation for the attach endpoint](#o...
          type: "boolean"
          default: false
        - name: "stdout"
          in: "query"
          description: "Return logs from `stdout`"
          type: "boolean"
          default: false
        - name: "stderr"
          in: "query"
          description: "Return logs from `stderr`"
          type: "boolean"
          default: false
        - name: "since"
          in: "query"
          description: "Only return logs since this time, as a UNIX timestamp"
          type: "integer"
          default: 0
        - name: "timestamps"
          in: "query"
          description: "Add timestamps to every log line"
          type: "boolean"
          default: false
        - name: "tail"
          in: "query"
          description: "Only return this number of log lines from the end of the logs. Specify as an integer or `all` to output all log lines."
          type: "string"
          default: "all"
  /secrets:
    get:
      summary: "List secrets"
      operationId: "SecretList"
      produces:
        - "application/json"
      responses:
        200:
          description: "no error"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/Secret"
            example:
              - ID: "blt1owaxmitz71s9v5zh81zun"
                Version:
                  Index: 85
                CreatedAt: "2017-07-20T13:55:28.678958722Z"
                UpdatedAt: "2017-07-20T13:55:28.678958722Z"
                Spec:
                  Name: "mysql-passwd"
                  Labels:
                    some.label: "some.value"
                  Driver:
                    Name: "secret-bucket"
                    Options:
                      OptionA: "value for driver option A"
                      OptionB: "value for driver option B"
              - ID: "ktnbjxoalbkvbvedmg1urrz8h"
                Version:
                  Index: 11
                CreatedAt: "2016-11-05T01:20:17.327670065Z"
                UpdatedAt: "2016-11-05T01:20:17.327670065Z"

share/specs/v1.32.yaml  view on Meta::CPAN

    delete:
      summary: "Delete a secret"
      operationId: "SecretDelete"
      produces:
        - "application/json"
      responses:
        204:
          description: "no error"
        404:
          description: "secret not found"
          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"
          required: true
          type: "string"
          description: "ID of the secret"
      tags: ["Secret"]
  /secrets/{id}/update:
    post:
      summary: "Update a Secret"
      operationId: "SecretUpdate"
      responses:
        200:
          description: "no error"
        400:
          description: "bad parameter"
          schema:
            $ref: "#/definitions/ErrorResponse"
        404:
          description: "no such secret"
          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 secret"
          type: "string"
          required: true
        - name: "body"
          in: "body"
          schema:
            $ref: "#/definitions/SecretSpec"
          description: "The spec of the secret to update. Currently, only the Labels field can be updated. All other fields must remain unchanged from the [SecretInspect endpoint](#operation/SecretInspect) response values."
        - name: "version"
          in: "query"
          description: "The version number of the secret object being updated. This is required to avoid conflicting writes."
          type: "integer"
          format: "int64"
          required: true
      tags: ["Secret"]
  /configs:
    get:
      summary: "List configs"
      operationId: "ConfigList"
      produces:
        - "application/json"
      responses:
        200:
          description: "no error"
          schema:
            type: "array"
            items:
              $ref: "#/definitions/Config"
            example:
              - ID: "ktnbjxoalbkvbvedmg1urrz8h"
                Version:
                  Index: 11
                CreatedAt: "2016-11-05T01:20:17.327670065Z"
                UpdatedAt: "2016-11-05T01:20:17.327670065Z"
                Spec:
                  Name: "server.conf"
        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"
          type: "string"
          description: |
            A JSON encoded value of the filters (a `map[string][]string`) to process on the configs list. Available filters:

            - `id=<config id>`
            - `label=<key> or label=<key>=value`
            - `name=<config name>`
            - `names=<config name>`
      tags: ["Config"]
  /configs/create:
    post:
      summary: "Create a config"
      operationId: "ConfigCreate"
      consumes:
        - "application/json"
      produces:
        - "application/json"
      responses:
        201:
          description: "no error"
          schema:

share/specs/v1.32.yaml  view on Meta::CPAN

    delete:
      summary: "Delete a config"
      operationId: "ConfigDelete"
      produces:
        - "application/json"
      responses:
        204:
          description: "no error"
        404:
          description: "config not found"
          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"
          required: true
          type: "string"
          description: "ID of the config"
      tags: ["Config"]
  /configs/{id}/update:
    post:
      summary: "Update a Config"
      operationId: "ConfigUpdate"
      responses:
        200:
          description: "no error"
        400:
          description: "bad parameter"
          schema:
            $ref: "#/definitions/ErrorResponse"
        404:
          description: "no such config"
          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 config"
          type: "string"
          required: true
        - name: "body"
          in: "body"
          schema:
            $ref: "#/definitions/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."
        - name: "version"
          in: "query"
          description: "The version number of the config object being updated. This is required to avoid conflicting writes."
          type: "integer"
          format: "int64"
          required: true
      tags: ["Config"]
  /distribution/{name}/json:
    get:
      summary: "Get image information from the registry"
      description: "Return image digest and platform information by contacting the registry."
      operationId: "DistributionInspect"
      produces:
        - "application/json"
      responses:
        200:
          description: "descriptor and platform information"
          schema:
            type: "object"
            x-go-name: DistributionInspect
            required: [Descriptor, Platforms]
            properties:
              Descriptor:
                type: "object"
                description: "A descriptor struct containing digest, media type, and size"
                properties:
                  MediaType:
                    type: "string"
                  Size:
                    type: "integer"
                    format: "int64"
                  Digest:
                    type: "string"
                  URLs:
                    type: "array"
                    items:
                      type: "string"
              Platforms:
                type: "array"
                description: "An array containing all platforms supported by the image"
                items:
                  type: "object"
                  properties:
                    Architecture:
                      type: "string"
                    OS:
                      type: "string"
                    OSVersion:
                      type: "string"
                    OSFeatures:
                      type: "array"
                      items:
                        type: "string"
                    Variant:
                      type: "string"
                    Features:
                      type: "array"
                      items:
                        type: "string"
          examples:
            application/json:
              Descriptor:
                MediaType: "application/vnd.docker.distribution.manifest.v2+json"
                Digest: "sha256:c0537ff6a5218ef531ece93d4984efc99bbf3f7497c0a7726c88e2bb7584dc96"
                Size: 3987495
                URLs:
                  - ""
              Platforms:
                - Architecture: "amd64"
                  OS: "linux"
                  OSVersion: ""
                  OSFeatures:
                    - ""
                  Variant: ""
                  Features:
                    - ""
        401:
          description: "Failed authentication or no image found"
          schema:
            $ref: "#/definitions/ErrorResponse"
          examples:
            application/json:
              message: "No such image: someimage (tag: latest)"
        500:
          description: "Server error"
          schema:
            $ref: "#/definitions/ErrorResponse"
      parameters:
        - name: "name"
          in: "path"
          description: "Image name or id"
          type: "string"
          required: true
      tags: ["Distribution"]
  /session:
    post:
      summary: "Initialize interactive session"
      description: |
        Start a new interactive session with a server. Session allows server to call back to the client for advanced capabilities.

        > **Note**: This endpoint is *experimental* and only available if the daemon is started with experimental
        > features enabled. The specifications for this endpoint may still change in a future version of the API.

        ### Hijacking

        This endpoint hijacks the HTTP connection to HTTP2 transport that allows the client to expose gPRC services on that connection.

        For example, the client sends this request to upgrade the connection:

        ```
        POST /session HTTP/1.1
        Upgrade: h2c
        Connection: Upgrade
        ```

        The Docker daemon will respond with a `101 UPGRADED` response follow with the raw stream:

        ```
        HTTP/1.1 101 UPGRADED
        Connection: Upgrade
        Upgrade: h2c
        ```
      operationId: "Session"
      produces:
        - "application/vnd.docker.raw-stream"
      responses:
        101:
          description: "no error, hijacking successful"
        400:
          description: "bad parameter"
          schema:
            $ref: "#/definitions/ErrorResponse"
        500:
          description: "server error"
          schema:
            $ref: "#/definitions/ErrorResponse"
      tags: ["Session (experimental)"]



( run in 0.626 second using v1.01-cache-2.11-cpan-39bf76dae61 )