text: package types // import "github.com/docker/docker/api/types"
  
  import (
  	"bufio"
  	"io"
  	"net"
  
  	"github.com/docker/docker/api/types/container"
  	"github.com/docker/docker/api/types/filters"
  	units "github.com/docker/go-units"
  )
  
  // CheckpointCreateOptions holds parameters to create a checkpoint from a container
  type CheckpointCreateOptions struct {
  	CheckpointID  string
  	CheckpointDir string
  	Exit          bool
  }
  
  // CheckpointListOptions holds parameters to list checkpoints for a container
  type CheckpointListOptions struct {
  	CheckpointDir string
  }
  
  // CheckpointDeleteOptions holds parameters to delete a checkpoint from a container
  type CheckpointDeleteOptions struct {
  	CheckpointID  string
  	CheckpointDir string
  }
  
  // ContainerAttachOptions holds parameters to attach to a container.
  type ContainerAttachOptions struct {
  	Stream     bool
  	Stdin      bool
  	Stdout     bool
  	Stderr     bool
  	DetachKeys string
  	Logs       bool
  }
  
  // ContainerCommitOptions holds parameters to commit changes into a container.
  type ContainerCommitOptions struct {
  	Reference string
  	Comment   string
  	Author    string
  	Changes   []string
  	Pause     bool
  	Config    *container.Config
  }
  
  // ContainerExecInspect holds information returned by exec inspect.
  type ContainerExecInspect struct {
  	ExecID      string
  	ContainerID string
  	Running     bool
  	ExitCode    int
  	Pid         int
  }
  
  // ContainerListOptions holds parameters to list containers with.
  type ContainerListOptions struct {
  	Quiet   bool
  	Size    bool
  	All     bool
  	Latest  bool
  	Since   string
  	Before  string
  	Limit   int
  	Filters filters.Args
  }
  
  // ContainerLogsOptions holds parameters to filter logs with.
  type ContainerLogsOptions struct {
  	ShowStdout bool
  	ShowStderr bool
  	Since      string
  	Until      string
  	Timestamps bool
  	Follow     bool
  	Tail       string
  	Details    bool
  }
  
  // ContainerRemoveOptions holds parameters to remove containers.
  type ContainerRemoveOptions struct {
  	RemoveVolumes bool
  	RemoveLinks   bool
  	Force         bool
  }
  
  // ContainerStartOptions holds parameters to start containers.
  type ContainerStartOptions struct {
  	CheckpointID  string
  	CheckpointDir string
  }
  
  // CopyToContainerOptions holds information
  // about files to copy into a container
  type CopyToContainerOptions struct {
  	AllowOverwriteDirWithFile bool
  	CopyUIDGID                bool
  }
  
  // EventsOptions holds parameters to filter events with.
  type EventsOptions struct {
  	Since   string
  	Until   string
  	Filters filters.Args
  }
  
  // NetworkListOptions holds parameters to filter the list of networks with.
  type NetworkListOptions struct {
  	Filters filters.Args
  }
  
  // HijackedResponse holds connection information for a hijacked request.
  type HijackedResponse struct {
  	Conn   net.Conn
  	Reader *bufio.Reader
  }
  
  // Close closes the hijacked connection and reader.
  func (h *HijackedResponse) Close() {
  	h.Conn.Close()
  }
  
  // CloseWriter is an interface that implements structs
  // that close input streams to prevent from writing.
  type CloseWriter interface {
  	CloseWrite() error
  }
  
  // CloseWrite closes a readWriter for writing.
  func (h *HijackedResponse) CloseWrite() error {
  	if conn, ok := h.Conn.(CloseWriter); ok {
  		return conn.CloseWrite()
  	}
  	return nil
  }
  
  // ImageBuildOptions holds the information
  // necessary to build images.
  type ImageBuildOptions struct {
  	Tags           []string
  	SuppressOutput bool
  	RemoteContext  string
  	NoCache        bool
  	Remove         bool
  	ForceRemove    bool
  	PullParent     bool
  	Isolation      container.Isolation
  	CPUSetCPUs     string
  	CPUSetMems     string
  	CPUShares      int64
  	CPUQuota       int64
  	CPUPeriod      int64
  	Memory         int64
  	MemorySwap     int64
  	CgroupParent   string
  	NetworkMode    string
  	ShmSize        int64
  	Dockerfile     string
  	Ulimits        []*units.Ulimit
  	// BuildArgs needs to be a *string instead of just a string so that
  	// we can tell the difference between "" (empty string) and no value
  	// at all (nil). See the parsing of buildArgs in
  	// api/server/router/build/build_routes.go for even more info.
  	BuildArgs   map[string]*string
  	AuthConfigs map[string]AuthConfig
  	Context     io.Reader
  	Labels      map[string]string
  	// squash the resulting image's layers to the parent
  	// preserves the original image and creates a new one from the parent with all
  	// the changes applied to a single layer
  	Squash bool
  	// CacheFrom specifies images that are used for matching cache. Images
  	// specified here do not need to have a valid parent chain to match cache.
  	CacheFrom   []string
  	SecurityOpt []string
  	ExtraHosts  []string // List of extra hosts
  	Target      string
  	SessionID   string
  	Platform    string
  	// Version specifies the version of the unerlying builder to use
  	Version BuilderVersion
  	// BuildID is an optional identifier that can be passed together with the
  	// build request. The same identifier can be used to gracefully cancel the
  	// build with the cancel request.
  	BuildID string
  }
  
  // BuilderVersion sets the version of underlying builder to use
  type BuilderVersion string
  
  const (
  	// BuilderV1 is the first generation builder in docker daemon
  	BuilderV1 BuilderVersion = "1"
  	// BuilderBuildKit is builder based on moby/buildkit project
  	BuilderBuildKit = "2"
  )
  
  // ImageBuildResponse holds information
  // returned by a server after building
  // an image.
  type ImageBuildResponse struct {
  	Body   io.ReadCloser
  	OSType string
  }
  
  // ImageCreateOptions holds information to create images.
  type ImageCreateOptions struct {
  	RegistryAuth string // RegistryAuth is the base64 encoded credentials for the registry.
  	Platform     string // Platform is the target platform of the image if it needs to be pulled from the registry.
  }
  
  // ImageImportSource holds source information for ImageImport
  type ImageImportSource struct {
  	Source     io.Reader // Source is the data to send to the server to create this image from. You must set SourceName to "-" to leverage this.
  	SourceName string    // SourceName is the name of the image to pull. Set to "-" to leverage the Source attribute.
  }
  
  // ImageImportOptions holds information to import images from the client host.
  type ImageImportOptions struct {
  	Tag      string   // Tag is the name to tag this image with. This attribute is deprecated.
  	Message  string   // Message is the message to tag the image with
  	Changes  []string // Changes are the raw changes to apply to this image
  	Platform string   // Platform is the target platform of the image
  }
  
  // ImageListOptions holds parameters to filter the list of images with.
  type ImageListOptions struct {
  	All     bool
  	Filters filters.Args
  }
  
  // ImageLoadResponse returns information to the client about a load process.
  type ImageLoadResponse struct {
  	// Body must be closed to avoid a resource leak
  	Body io.ReadCloser
  	JSON bool
  }
  
  // ImagePullOptions holds information to pull images.
  type ImagePullOptions struct {
  	All           bool
  	RegistryAuth  string // RegistryAuth is the base64 encoded credentials for the registry
  	PrivilegeFunc RequestPrivilegeFunc
  	Platform      string
  }
  
  // RequestPrivilegeFunc is a function interface that
  // clients can supply to retry operations after
  // getting an authorization error.
  // This function returns the registry authentication
  // header value in base 64 format, or an error
  // if the privilege request fails.
  type RequestPrivilegeFunc func() (string, error)
  
  //ImagePushOptions holds information to push images.
  type ImagePushOptions ImagePullOptions
  
  // ImageRemoveOptions holds parameters to remove images.
  type ImageRemoveOptions struct {
  	Force         bool
  	PruneChildren bool
  }
  
  // ImageSearchOptions holds parameters to search images with.
  type ImageSearchOptions struct {
  	RegistryAuth  string
  	PrivilegeFunc RequestPrivilegeFunc
  	Filters       filters.Args
  	Limit         int
  }
  
  // ResizeOptions holds parameters to resize a tty.
  // It can be used to resize container ttys and
  // exec process ttys too.
  type ResizeOptions struct {
  	Height uint
  	Width  uint
  }
  
  // NodeListOptions holds parameters to list nodes with.
  type NodeListOptions struct {
  	Filters filters.Args
  }
  
  // NodeRemoveOptions holds parameters to remove nodes with.
  type NodeRemoveOptions struct {
  	Force bool
  }
  
  // ServiceCreateOptions contains the options to use when creating a service.
  type ServiceCreateOptions struct {
  	// EncodedRegistryAuth is the encoded registry authorization credentials to
  	// use when updating the service.
  	//
  	// This field follows the format of the X-Registry-Auth header.
  	EncodedRegistryAuth string
  
  	// QueryRegistry indicates whether the service update requires
  	// contacting a registry. A registry may be contacted to retrieve
  	// the image digest and manifest, which in turn can be used to update
  	// platform or other information about the service.
  	QueryRegistry bool
  }
  
  // ServiceCreateResponse contains the information returned to a client
  // on the creation of a new service.
  type ServiceCreateResponse struct {
  	// ID is the ID of the created service.
  	ID string
  	// Warnings is a set of non-fatal warning messages to pass on to the user.
  	Warnings []string `json:",omitempty"`
  }
  
  // Values for RegistryAuthFrom in ServiceUpdateOptions
  const (
  	RegistryAuthFromSpec         = "spec"
  	RegistryAuthFromPreviousSpec = "previous-spec"
  )
  
  // ServiceUpdateOptions contains the options to be used for updating services.
  type ServiceUpdateOptions struct {
  	// EncodedRegistryAuth is the encoded registry authorization credentials to
  	// use when updating the service.
  	//
  	// This field follows the format of the X-Registry-Auth header.
  	EncodedRegistryAuth string
  
  	// TODO(stevvooe): Consider moving the version parameter of ServiceUpdate
  	// into this field. While it does open API users up to racy writes, most
  	// users may not need that level of consistency in practice.
  
  	// RegistryAuthFrom specifies where to find the registry authorization
  	// credentials if they are not given in EncodedRegistryAuth. Valid
  	// values are "spec" and "previous-spec".
  	RegistryAuthFrom string
  
  	// Rollback indicates whether a server-side rollback should be
  	// performed. When this is set, the provided spec will be ignored.
  	// The valid values are "previous" and "none". An empty value is the
  	// same as "none".
  	Rollback string
  
  	// QueryRegistry indicates whether the service update requires
  	// contacting a registry. A registry may be contacted to retrieve
  	// the image digest and manifest, which in turn can be used to update
  	// platform or other information about the service.
  	QueryRegistry bool
  }
  
  // ServiceListOptions holds parameters to list services with.
  type ServiceListOptions struct {
  	Filters filters.Args
  }
  
  // ServiceInspectOptions holds parameters related to the "service inspect"
  // operation.
  type ServiceInspectOptions struct {
  	InsertDefaults bool
  }
  
  // TaskListOptions holds parameters to list tasks with.
  type TaskListOptions struct {
  	Filters filters.Args
  }
  
  // PluginRemoveOptions holds parameters to remove plugins.
  type PluginRemoveOptions struct {
  	Force bool
  }
  
  // PluginEnableOptions holds parameters to enable plugins.
  type PluginEnableOptions struct {
  	Timeout int
  }
  
  // PluginDisableOptions holds parameters to disable plugins.
  type PluginDisableOptions struct {
  	Force bool
  }
  
  // PluginInstallOptions holds parameters to install a plugin.
  type PluginInstallOptions struct {
  	Disabled              bool
  	AcceptAllPermissions  bool
  	RegistryAuth          string // RegistryAuth is the base64 encoded credentials for the registry
  	RemoteRef             string // RemoteRef is the plugin name on the registry
  	PrivilegeFunc         RequestPrivilegeFunc
  	AcceptPermissionsFunc func(PluginPrivileges) (bool, error)
  	Args                  []string
  }
  
  // SwarmUnlockKeyResponse contains the response for Engine API:
  // GET /swarm/unlockkey
  type SwarmUnlockKeyResponse struct {
  	// UnlockKey is the unlock key in ASCII-armored format.
  	UnlockKey string
  }
  
  // PluginCreateOptions hold all options to plugin create.
  type PluginCreateOptions struct {
  	RepoName string
  }
  