Docker-Client

 view release on metacpan or  search on metacpan

share/specs/v1.40.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.40"
info:
  title: "Docker Engine API"
  version: "1.40"
  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, so API calls are versioned to
    ensure that clients don't break. To lock to a specific version of the API,
    you prefix the URL with its version, for example, call `/v1.30/info` to use
    the v1.30 version of the `/info` endpoint. If the API version specified in
    the URL is not supported by the daemon, a HTTP `400 Bad Request` error message
    is returned.

    If you omit the version-prefix, the current version of the API (v1.40) is used.
    For example, calling `/info` is the same as calling `/v1.40/info`. Using the
    API without a version-prefix is deprecated and will be removed in a future release.

    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.

    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 in responses to ensure they do not break when talking to newer
    daemons.


    # 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 [base64url encoded](https://tools.ietf.org/html/rfc4648#section-5)
    (JSON) string with the following structure:

    ```
    {
      "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/network/)
      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. Refer to 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. Refer to 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.
  - name: "Config"
    x-displayName: "Configs"
    description: |
      Configs are application configurations 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"
        description: "Host IP address that the container's port is mapped to"
      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", "sctp"]
    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:

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

          type: "object"
          enum:
            - {}
          default: {}
      WorkingDir:
        description: "The working directory for commands to run in."
        type: "string"
      Entrypoint:
        description: |
          The entry point for the container as a string or an array of strings.

          If the array consists of exactly one empty string (`[""]`) then the
          entry point is reset to system default (i.e., the entry point used by
          docker when there is no `ENTRYPOINT` instruction in the `Dockerfile`).
        type: "array"
        items:
          type: "string"
      NetworkDisabled:
        description: "Disable networking for the container."
        type: "boolean"
      MacAddress:
        description: "MAC address of the container."
        type: "string"
      OnBuild:
        description: |
          `ONBUILD` metadata that were defined in the image's `Dockerfile`.
        type: "array"
        items:
          type: "string"
      Labels:
        description: "User-defined key/value metadata."
        type: "object"
        additionalProperties:
          type: "string"
      StopSignal:
        description: |
          Signal to stop a container as a string or unsigned integer.
        type: "string"
        default: "SIGTERM"
      StopTimeout:
        description: "Timeout to stop a container in seconds."
        type: "integer"
        default: 10
      Shell:
        description: |
          Shell for when `RUN`, `CMD`, and `ENTRYPOINT` uses a shell.
        type: "array"
        items:
          type: "string"

  NetworkingConfig:
    description: |
      NetworkingConfig represents the container's networking configuration for
      each of its interfaces.
      It is used for the networking configs specified in the `docker create`
      and `docker network connect` commands.
    type: "object"
    properties:
      EndpointsConfig:
        description: |
          A mapping of network name to endpoint configuration for that network.
        type: "object"
        additionalProperties:
          $ref: "#/definitions/EndpointSettings"
    example:
      # putting an example here, instead of using the example values from
      # /definitions/EndpointSettings, because containers/create currently
      # does not support attaching to multiple networks, so the example request
      # would be confusing if it showed that multiple networks can be contained
      # in the EndpointsConfig.
      # TODO remove once we support multiple networks on container create (see https://github.com/moby/moby/blob/07e6b843594e061f82baa5fa23c2ff7d536c2a05/daemon/create.go#L323)
      EndpointsConfig:
        isolated_nw:
          IPAMConfig:
            IPv4Address: "172.20.30.33"
            IPv6Address: "2001:db8:abcd::3033"
            LinkLocalIPs:
              - "169.254.34.68"
              - "fe80::3468"
          Links:
            - "container_1"
            - "container_2"
          Aliases:
            - "server_x"
            - "server_y"

  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.40.yaml  view on Meta::CPAN

        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.40.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:
      current:
        type: "integer"
      total:
        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.40.yaml  view on Meta::CPAN

            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
      DataPathPort:
        description: |
          DataPathPort specifies the data path port number for data traffic.
          Acceptable port range is 1024 to 49151.
          If no port is set or is set to 0, the default port (4789) is used.
        type: "integer"
        format: "uint32"
        default: 4789
        example: 4789
      DefaultAddrPool:
        description: |
          Default Address Pool specifies default subnet pools for global scope
          networks.
        type: "array"
        items:
          type: "string"
          format: "CIDR"
          example: ["10.10.0.0/16", "20.20.0.0/16"]
      SubnetSize:
        description: |
          SubnetSize specifies the subnet size of the networks created from the
          default subnet pool.
        type: "integer"
        format: "uint32"
        maximum: 29
        default: 24
        example: 24

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

          Limits:
            description: "Define resources limits."
            $ref: "#/definitions/ResourceObject"
          Reservation:
            description: "Define resources reservation."
            $ref: "#/definitions/ResourceObject"
      RestartPolicy:
        description: |
          Specification for the restart policy which applies to containers
          created as part of this service.
        type: "object"
        properties:
          Condition:
            description: "Condition for restart."
            type: "string"
            enum:
              - "none"
              - "on-failure"
              - "any"
          Delay:
            description: "Delay between restart attempts."
            type: "integer"
            format: "int64"
          MaxAttempts:
            description: |
              Maximum attempts to restart a given container before giving up
              (default value is 0, which is ignored).
            type: "integer"
            format: "int64"
            default: 0
          Window:
            description: |
              Windows is the time window used to evaluate the restart policy
              (default value is 0, which is unbounded).
            type: "integer"
            format: "int64"
            default: 0
      Placement:
        type: "object"
        properties:
          Constraints:
            description: |
              An array of constraint expressions to limit the set of nodes where
              a task can be scheduled. Constraint expressions can either use a
              _match_ (`==`) or _exclude_ (`!=`) rule. Multiple constraints find
              nodes that satisfy every expression (AND match). Constraints can
              match node or Docker Engine labels as follows:

              node attribute       | matches                        | example
              ---------------------|--------------------------------|-----------------------------------------------
              `node.id`            | Node ID                        | `node.id==2ivku8v2gvtg4`
              `node.hostname`      | Node hostname                  | `node.hostname!=node-2`
              `node.role`          | Node role (`manager`/`worker`) | `node.role==manager`
              `node.platform.os`   | Node operating system          | `node.platform.os==windows`
              `node.platform.arch` | Node architecture              | `node.platform.arch==x86_64`
              `node.labels`        | User-defined node labels       | `node.labels.security==high`
              `engine.labels`      | Docker Engine's labels         | `engine.labels.operatingsystem==ubuntu-14.04`

              `engine.labels` apply to Docker Engine labels like operating system,
              drivers, etc. Swarm administrators add `node.labels` for operational
              purposes by using the [`node update endpoint`](#operation/NodeUpdate).

            type: "array"
            items:
              type: "string"
            example:
              - "node.hostname!=node3.corp.example.com"
              - "node.role!=manager"
              - "node.labels.type==production"
              - "node.platform.os==linux"
              - "node.platform.arch==x86_64"
          Preferences:
            description: |
              Preferences provide a way to make the scheduler aware of factors
              such as topology. They are provided in order from highest to
              lowest precedence.
            type: "array"
            items:
              type: "object"
              properties:
                Spread:
                  type: "object"
                  properties:
                    SpreadDescriptor:
                      description: |
                        label descriptor, such as `engine.labels.az`.
                      type: "string"
            example:
              - Spread:
                  SpreadDescriptor: "node.labels.datacenter"
              - Spread:
                  SpreadDescriptor: "node.labels.rack"
          MaxReplicas:
            description: |
              Maximum number of replicas for per node (default value is 0, which
              is unlimited)
            type: "integer"
            format: "int64"
            default: 0
          Platforms:
            description: |
              Platforms stores all the platforms that the service's image can
              run on. This field is used in the platform filter for scheduling.
              If empty, then the platform filter is off, meaning there are no
              scheduling restrictions.
            type: "array"
            items:
              $ref: "#/definitions/Platform"
      ForceUpdate:
        description: |
          A counter that triggers an update even if no relevant parameters have
          been changed.
        type: "integer"
      Runtime:
        description: |
          Runtime is the type of runtime specified for the task executor.
        type: "string"
      Networks:
        description: "Specifies which networks the service should attach to."
        type: "array"
        items:

share/specs/v1.40.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-5))
          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"
      Templating:
        description: |
          Templating driver, if applicable

          Templating controls whether and how to evaluate the config payload as
          a template. If no driver is set, no templating is used.
        $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-5))
          config data.
        type: "string"
      Templating:
        description: |
          Templating driver, if applicable

          Templating controls whether and how to evaluate the config payload as
          a template. If no driver is set, no templating is used.
        $ref: "#/definitions/Driver"

  Config:
    type: "object"

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

      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.
          Credentials ([user info component](https://tools.ietf.org/html/rfc3986#section-3.2.1)) in the proxy URL
          are masked in the API response.

          Containers do not automatically inherit this configuration.
        type: "string"
        example: "http://xxxxx:xxxxx@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.
          Credentials ([user info component](https://tools.ietf.org/html/rfc3986#section-3.2.1)) in the proxy URL
          are masked in the API response.

          Containers do not automatically inherit this configuration.
        type: "string"
        example: "https://xxxxx:xxxxx@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: "runc"
        example:
          runc:
            path: "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.40.yaml  view on Meta::CPAN

      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"

  NetworkAttachmentConfig:
    description: |
      Specifies how a service should be attached to a particular network.
    type: "object"
    properties:
      Target:
        description: |
          The target network for attachment. Must be a network name or ID.
        type: "string"
      Aliases:
        description: |
          Discoverable alternate names for the service on this network.
        type: "array"
        items:
          type: "string"
      DriverOpts:
        description: |
          Driver attachment options for the network target.
        type: "object"
        additionalProperties:
          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:

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

                    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"
                Health:
                  Status: "healthy"
                  FailingStreak: 0
                  Log:
                    - Start: "2019-12-22T10:59:05.6385933Z"
                      End: "2019-12-22T10:59:05.8078452Z"
                      ExitCode: 0
                      Output: ""
                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"
            title: "ContainerTopResponse"
            description: "OK response to ContainerTop operation"
            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:
        200:
          description: |
            logs returned as a stream in response body.
            For the stream format, [see the documentation for the attach endpoint](#operation/ContainerAttach).
            Note that unlike the attach endpoint, the logs endpoint does not
            upgrade the connection and does not set Content-Type.
          schema:
            type: "string"
            format: "binary"
        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: "Keep connection after returning logs."
          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: "until"
          in: "query"
          description: "Only return logs before 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:

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

                  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 the *previous* read, and is
        used to calculate the CPU usage percentage. It is not an exact copy
        of 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.

        To calculate the values shown by the `stats` command of the docker cli tool
        the following formulas can be used:
        * used_memory = `memory_stats.usage - memory_stats.stats.cache`
        * available_memory = `memory_stats.limit`
        * Memory usage % = `(used_memory / available_memory) * 100.0`
        * cpu_delta = `cpu_stats.cpu_usage.total_usage - precpu_stats.cpu_usage.total_usage`
        * system_cpu_delta = `cpu_stats.system_cpu_usage - precpu_stats.system_cpu_usage`
        * number_cpus = `lenght(cpu_stats.cpu_usage.percpu_usage)` or `cpu_stats.online_cpus`
        * CPU usage % = `(cpu_delta / system_cpu_delta) * number_cpus * 100.0`
      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

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

        Traditionally, when suspending a process the `SIGSTOP` signal is used,
        which is observable by the process being suspended. With the freezer
        cgroup the process is unaware, and unable to capture, that it is being
        suspended, and subsequently resumed.
      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
        containing a header and a payload.

        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`

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

              Status:
                description: "The status of the authentication"
                type: "string"
                x-nullable: false
              IdentityToken:
                description: "An opaque token used to authenticate a user after a successful login"
                type: "string"
                x-nullable: false
          examples:
            application/json:
              Status: "Login Succeeded"
              IdentityToken: "9cbaf023786cd7..."
        204:
          description: "No error"
        500:
          description: "Server error"
          schema:
            $ref: "#/definitions/ErrorResponse"
      parameters:
        - name: "authConfig"
          in: "body"
          description: "Authentication to check"
          schema:
            $ref: "#/definitions/AuthConfig"
      tags: ["System"]
  /info:
    get:
      summary: "Get system information"
      operationId: "SystemInfo"
      produces:
        - "application/json"
      responses:
        200:
          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:
            $ref: "#/definitions/SystemVersion"
        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"
            BuildKit-Version:
              type: "string"
              description: "Default version of docker image builder"
            Docker-Experimental:
              type: "boolean"
              description: "If the server is running with experimental mode enabled"
            Cache-Control:
              type: "string"
              default: "no-cache, no-store, must-revalidate"
            Pragma:
              type: "string"
              default: "no-cache"
        500:
          description: "server error"
          schema:
            $ref: "#/definitions/ErrorResponse"
          headers:
            Cache-Control:
              type: "string"
              default: "no-cache, no-store, must-revalidate"
            Pragma:
              type: "string"
              default: "no-cache"
      tags: ["System"]
    head:
      summary: "Ping"
      description: "This is a dummy endpoint you can use to test if the server is accessible."
      operationId: "SystemPingHead"
      produces: ["text/plain"]
      responses:
        200:
          description: "no error"
          schema:
            type: "string"
            example: "(empty)"
          headers:
            API-Version:
              type: "string"
              description: "Max API Version the server supports"
            BuildKit-Version:
              type: "string"
              description: "Default version of docker image builder"
            Docker-Experimental:
              type: "boolean"
              description: "If the server is running with experimental mode enabled"
            Cache-Control:
              type: "string"
              default: "no-cache, no-store, must-revalidate"
            Pragma:
              type: "string"
              default: "no-cache"
        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"

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

  /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 would be no names referenced in the 'repositories'
        file for this image ID.

        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"

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

                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`.
              WorkingDir:
                type: "string"
                description: |
                  The working directory for the exec process inside the container.
            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"
            title: "ExecInspectResponse"
            properties:
              CanRemove:
                type: "boolean"
              DetachKeys:
                type: "string"
              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"

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

          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"
            title: "VolumePruneResponse"
            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

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

      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"
              title: "PluginPrivilegeItem"
              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 base64url-encoded auth configuration to use when pulling a plugin
            from a registry.

            Refer to the [authentication section](#section/Authentication) for
            details.
          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: ""

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

                    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.
            This version number should be the value as currently set on the
            service *before* the update. You can find the current version by
            calling `GET /services/{id}`
          required: true
          type: "integer"
        - name: "registryAuthFrom"
          in: "query"
          description: |
            If the `X-Registry-Auth` header is not specified, this parameter
            indicates where to find registry authorization credentials.
          type: "string"
          enum: ["spec", "previous-spec"]
          default: "spec"
        - name: "rollback"
          in: "query"
          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.
          type: "string"
        - name: "X-Registry-Auth"
          in: "header"
          description: |
            A base64url-encoded auth configuration for pulling from private
            registries.

            Refer to the [authentication section](#section/Authentication) for
            details.
          type: "string"

      tags: ["Service"]
  /services/{id}/logs:
    get:
      summary: "Get service logs"
      description: |
        Get `stdout` and `stderr` logs from a service. See also
        [`/containers/{id}/logs`](#operation/ContainerLogs).

        **Note**: This endpoint works only for services with the `local`,
        `json-file` or `journald` logging drivers.
      operationId: "ServiceLogs"
      responses:
        200:
          description: "logs returned as a stream in response body"
          schema:
            type: "string"
            format: "binary"
        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: "Keep connection after returning logs."
          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"

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

          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.
        See also [`/containers/{id}/logs`](#operation/ContainerLogs).

        **Note**: This endpoint works only for services with the `local`,
        `json-file` or `journald` logging drivers.
      operationId: "TaskLogs"
      responses:
        200:
          description: "logs returned as a stream in response body"
          schema:
            type: "string"
            format: "binary"
        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: "Keep connection after returning logs."
          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"

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

      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:

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

      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
            title: "DistributionInspectResponse"
            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.

        ### 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 responds 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"]



( run in 2.032 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )