diff --git a/api/docs/v1.52.yaml b/api/docs/v1.52.yaml
index 49ed133..3f50dc3 100644
--- a/api/docs/v1.52.yaml
+++ b/api/docs/v1.52.yaml
@@ -2408,10 +2408,13 @@
           Name of the network.
         type: "string"
         example: "my_network"
+        x-omitempty: false
       Id:
         description: |
           ID that uniquely identifies a network on a single machine.
         type: "string"
+        x-go-name: "ID"
+        x-omitempty: false
         example: "7d86d31b1478e7cca9ebed7e73aa0fdeec46c5ca29497431d3007d2d9e15ed99"
       Created:
         description: |
@@ -2419,36 +2422,53 @@
           [RFC 3339](https://www.ietf.org/rfc/rfc3339.txt) format with nano-seconds.
         type: "string"
         format: "dateTime"
+        x-omitempty: false
+        x-go-type:
+          type: Time
+          import:
+            package: time
+          hints:
+            nullable: false
         example: "2016-10-19T04:33:30.360899459Z"
       Scope:
         description: |
           The level at which the network exists (e.g. `swarm` for cluster-wide
           or `local` for machine level)
         type: "string"
+        x-omitempty: false
         example: "local"
       Driver:
         description: |
           The name of the driver used to create the network (e.g. `bridge`,
           `overlay`).
         type: "string"
+        x-omitempty: false
         example: "overlay"
       EnableIPv4:
         description: |
           Whether the network was created with IPv4 enabled.
         type: "boolean"
+        x-omitempty: false
         example: true
       EnableIPv6:
         description: |
           Whether the network was created with IPv6 enabled.
         type: "boolean"
+        x-omitempty: false
         example: false
       IPAM:
+        description: |
+          The network's IP Address Management.
         $ref: "#/definitions/IPAM"
+        x-nullable: false
+        x-omitempty: false
       Internal:
         description: |
           Whether the network is created to only allow internal networking
           connectivity.
         type: "boolean"
+        x-nullable: false
+        x-omitempty: false
         default: false
         example: false
       Attachable:
@@ -2456,16 +2476,22 @@
           Whether a global / swarm scope network is manually attachable by regular
           containers from workers in swarm mode.
         type: "boolean"
+        x-nullable: false
+        x-omitempty: false
         default: false
         example: false
       Ingress:
         description: |
           Whether the network is providing the routing-mesh for the swarm cluster.
         type: "boolean"
+        x-nullable: false
+        x-omitempty: false
         default: false
         example: false
       ConfigFrom:
         $ref: "#/definitions/ConfigReference"
+        x-nullable: false
+        x-omitempty: false
       ConfigOnly:
         description: |
           Whether the network is a config-only network. Config-only networks are
@@ -2473,24 +2499,14 @@
           networks. Config-only networks cannot be used directly to run containers
           or services.
         type: "boolean"
+        x-omitempty: false
+        x-nullable: false
         default: false
-      Containers:
-        description: |
-          Contains endpoints attached to the network.
-        type: "object"
-        additionalProperties:
-          $ref: "#/definitions/NetworkContainer"
-        example:
-          19a4d5d687db25203351ed79d478946f861258f018fe384f229f2efa4b23513c:
-            Name: "test"
-            EndpointID: "628cadb8bcb92de107b2a1e516cbffe463e321f548feb37697cce00ad694f21a"
-            MacAddress: "02:42:ac:13:00:02"
-            IPv4Address: "172.19.0.2/16"
-            IPv6Address: ""
       Options:
         description: |
           Network-specific options uses when creating the network.
         type: "object"
+        x-omitempty: false
         additionalProperties:
           type: "string"
         example:
@@ -2501,8 +2517,10 @@
           com.docker.network.bridge.name: "docker0"
           com.docker.network.driver.mtu: "1500"
       Labels:
-        description: "User-defined key/value metadata."
+        description: |
+          Metadata specific to the network being created.
         type: "object"
+        x-omitempty: false
         additionalProperties:
           type: "string"
         example:
@@ -2513,12 +2531,101 @@
           List of peer nodes for an overlay network. This field is only present
           for overlay networks, and omitted for other network types.
         type: "array"
+        x-omitempty: true
         items:
           $ref: "#/definitions/PeerInfo"
-        x-nullable: true
-      # TODO: Add Services (only present when "verbose" is set).
+
+  NetworkSummary:
+    description: "Network list response item"
+    x-go-name: Summary
+    type: "object"
+    allOf:
+      - $ref: "#/definitions/Network"
+
+  NetworkInspect:
+    description: 'The body of the "get network" http response message.'
+    x-go-name: Inspect
+    type: "object"
+    allOf:
+      - $ref: "#/definitions/Network"
+    properties:
+      Containers:
+        description: |
+          Contains endpoints attached to the network.
+        type: "object"
+        x-omitempty: false
+        additionalProperties:
+          $ref: "#/definitions/EndpointResource"
+        example:
+          19a4d5d687db25203351ed79d478946f861258f018fe384f229f2efa4b23513c:
+            Name: "test"
+            EndpointID: "628cadb8bcb92de107b2a1e516cbffe463e321f548feb37697cce00ad694f21a"
+            MacAddress: "02:42:ac:13:00:02"
+            IPv4Address: "172.19.0.2/16"
+            IPv6Address: ""
+      Services:
+        description: |
+          List of services using the network. This field is only present for
+          swarm scope networks, and omitted for local scope networks.
+        type: "object"
+        x-omitempty: true
+        additionalProperties:
+          x-go-type:
+            type: ServiceInfo
+            hints:
+              nullable: false
+
+  ServiceInfo:
+    x-nullable: false
+    x-omitempty: false
+    description: >
+      represents service parameters with the list of service's tasks
+    type: "object"
+    properties:
+      VIP:
+        type: "string"
+        x-omitempty: false
+      Ports:
+        type: "array"
+        x-omitempty: false
+        items:
+          type: "string"
+      LocalLBIndex:
+        type: "integer"
+        format: "int"
+        x-omitempty: false
+      Tasks:
+        type: "array"
+        x-omitempty: false
+        items:
+          $ref: "#/definitions/NetworkTaskInfo"
+
+  NetworkTaskInfo:
+    x-nullable: false
+    x-omitempty: false
+    x-go-name: Task
+    description: >
+      carries the information about one backend task
+    type: "object"
+    properties:
+      Name:
+        type: "string"
+        x-omitempty: false
+      EndpointID:
+        type: "string"
+        x-omitempty: false
+      EndpointIP:
+        type: "string"
+        x-omitempty: false
+      Info:
+        type: "object"
+        x-omitempty: false
+        additionalProperties:
+          type: "string"
 
   ConfigReference:
+    x-nullable: false
+    x-omitempty: false
     description: |
       The config-only network source to provide the configuration for
       this network.
@@ -2530,10 +2637,13 @@
           configuration. The specified network must be an existing config-only
           network. Only network names are allowed, not network IDs.
         type: "string"
+        x-omitempty: false
         example: "config_only_network_01"
 
   IPAM:
     type: "object"
+    x-nullable: false
+    x-omitempty: false
     properties:
       Driver:
         description: "Name of the IPAM driver to use."
@@ -2575,39 +2685,50 @@
         additionalProperties:
           type: "string"
 
-  NetworkContainer:
+  EndpointResource:
     type: "object"
+    description: >
+      contains network resources allocated and used for a
+      container in a network.
     properties:
       Name:
         type: "string"
+        x-omitempty: false
         example: "container_1"
       EndpointID:
         type: "string"
+        x-omitempty: false
         example: "628cadb8bcb92de107b2a1e516cbffe463e321f548feb37697cce00ad694f21a"
       MacAddress:
         type: "string"
+        x-omitempty: false
         example: "02:42:ac:13:00:02"
       IPv4Address:
         type: "string"
+        x-omitempty: false
         example: "172.19.0.2/16"
       IPv6Address:
         type: "string"
+        x-omitempty: false
         example: ""
 
   PeerInfo:
-    description: |
-      PeerInfo represents one peer of an overlay network.
+    description: >
+      represents one peer of an overlay network.
     type: "object"
+    x-nullable: false
     properties:
       Name:
         description:
           ID of the peer-node in the Swarm cluster.
         type: "string"
+        x-omitempty: false
         example: "6869d7c1732b"
       IP:
         description:
           IP-address of the peer-node in the Swarm cluster.
         type: "string"
+        x-omitempty: false
         example: "10.133.77.91"
 
   NetworkCreateResponse:
@@ -10996,7 +11117,7 @@
           schema:
             type: "array"
             items:
-              $ref: "#/definitions/Network"
+              $ref: "#/definitions/NetworkSummary"
           examples:
             application/json:
               - Name: "bridge"
@@ -11087,7 +11208,7 @@
         200:
           description: "No error"
           schema:
-            $ref: "#/definitions/Network"
+            $ref: "#/definitions/NetworkInspect"
         404:
           description: "Network not found"
           schema:
diff --git a/api/types/build/build.go b/api/types/build/build.go
index a798802..db98397 100644
--- a/api/types/build/build.go
+++ b/api/types/build/build.go
@@ -1,12 +1,5 @@
 package build
 
-import (
-	"io"
-
-	"github.com/moby/moby/api/types/container"
-	"github.com/moby/moby/api/types/registry"
-)
-
 // BuilderVersion sets the version of underlying builder to use
 type BuilderVersion string
 
@@ -21,71 +14,3 @@
 type Result struct {
 	ID string
 }
-
-// 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        []*container.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]registry.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 underlying 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
-	// Outputs defines configurations for exporting build results. Only supported
-	// in BuildKit mode
-	Outputs []ImageBuildOutput
-}
-
-// ImageBuildOutput defines configuration for exporting a build result
-type ImageBuildOutput struct {
-	Type  string
-	Attrs map[string]string
-}
-
-// ImageBuildResponse holds information
-// returned by a server after building
-// an image.
-type ImageBuildResponse struct {
-	Body   io.ReadCloser
-	OSType string
-}
diff --git a/client/client_interfaces.go b/client/client_interfaces.go
index f75f8f7..448ecd9 100644
--- a/client/client_interfaces.go
+++ b/client/client_interfaces.go
@@ -106,7 +106,7 @@
 
 // ImageAPIClient defines API client methods for the images
 type ImageAPIClient interface {
-	ImageBuild(ctx context.Context, context io.Reader, options build.ImageBuildOptions) (build.ImageBuildResponse, error)
+	ImageBuild(ctx context.Context, context io.Reader, options ImageBuildOptions) (ImageBuildResponse, error)
 	BuildCachePrune(ctx context.Context, opts BuildCachePruneOptions) (*build.CachePruneReport, error)
 	BuildCancel(ctx context.Context, id string) error
 	ImageCreate(ctx context.Context, parentReference string, options ImageCreateOptions) (io.ReadCloser, error)
diff --git a/client/image_build.go b/client/image_build.go
index 94ec6c3..5c1634d 100644
--- a/client/image_build.go
+++ b/client/image_build.go
@@ -10,7 +10,6 @@
 	"strconv"
 	"strings"
 
-	"github.com/moby/moby/api/types/build"
 	"github.com/moby/moby/api/types/container"
 	"github.com/moby/moby/api/types/network"
 )
@@ -18,15 +17,15 @@
 // ImageBuild sends a request to the daemon to build images.
 // The Body in the response implements an [io.ReadCloser] and it's up to the caller to
 // close it.
-func (cli *Client) ImageBuild(ctx context.Context, buildContext io.Reader, options build.ImageBuildOptions) (build.ImageBuildResponse, error) {
+func (cli *Client) ImageBuild(ctx context.Context, buildContext io.Reader, options ImageBuildOptions) (ImageBuildResponse, error) {
 	query, err := cli.imageBuildOptionsToQuery(ctx, options)
 	if err != nil {
-		return build.ImageBuildResponse{}, err
+		return ImageBuildResponse{}, err
 	}
 
 	buf, err := json.Marshal(options.AuthConfigs)
 	if err != nil {
-		return build.ImageBuildResponse{}, err
+		return ImageBuildResponse{}, err
 	}
 
 	headers := http.Header{}
@@ -35,16 +34,16 @@
 
 	resp, err := cli.postRaw(ctx, "/build", query, buildContext, headers)
 	if err != nil {
-		return build.ImageBuildResponse{}, err
+		return ImageBuildResponse{}, err
 	}
 
-	return build.ImageBuildResponse{
+	return ImageBuildResponse{
 		Body:   resp.Body,
 		OSType: resp.Header.Get("Ostype"),
 	}, nil
 }
 
-func (cli *Client) imageBuildOptionsToQuery(ctx context.Context, options build.ImageBuildOptions) (url.Values, error) {
+func (cli *Client) imageBuildOptionsToQuery(ctx context.Context, options ImageBuildOptions) (url.Values, error) {
 	query := url.Values{}
 	if len(options.Tags) > 0 {
 		query["t"] = options.Tags
diff --git a/client/image_build_opts.go b/client/image_build_opts.go
new file mode 100644
index 0000000..df51db0
--- /dev/null
+++ b/client/image_build_opts.go
@@ -0,0 +1,77 @@
+package client
+
+import (
+	"io"
+
+	"github.com/moby/moby/api/types/build"
+	"github.com/moby/moby/api/types/container"
+	"github.com/moby/moby/api/types/registry"
+)
+
+// 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        []*container.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]registry.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 underlying builder to use
+	Version build.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
+	// Outputs defines configurations for exporting build results. Only supported
+	// in BuildKit mode
+	Outputs []ImageBuildOutput
+}
+
+// ImageBuildOutput defines configuration for exporting a build result
+type ImageBuildOutput struct {
+	Type  string
+	Attrs map[string]string
+}
+
+// ImageBuildResponse holds information
+// returned by a server after building
+// an image.
+type ImageBuildResponse struct {
+	Body   io.ReadCloser
+	OSType string
+}
diff --git a/client/image_build_test.go b/client/image_build_test.go
index 235cc8a..481ac13 100644
--- a/client/image_build_test.go
+++ b/client/image_build_test.go
@@ -11,7 +11,6 @@
 	"testing"
 
 	cerrdefs "github.com/containerd/errdefs"
-	"github.com/moby/moby/api/types/build"
 	"github.com/moby/moby/api/types/container"
 	"github.com/moby/moby/api/types/registry"
 	"gotest.tools/v3/assert"
@@ -21,7 +20,7 @@
 func TestImageBuildError(t *testing.T) {
 	client, err := NewClientWithOpts(WithMockClient(errorMock(http.StatusInternalServerError, "Server error")))
 	assert.NilError(t, err)
-	_, err = client.ImageBuild(context.Background(), nil, build.ImageBuildOptions{})
+	_, err = client.ImageBuild(context.Background(), nil, ImageBuildOptions{})
 	assert.Check(t, is.ErrorType(err, cerrdefs.IsInternal))
 }
 
@@ -30,13 +29,13 @@
 	v2 := "value2"
 	emptyRegistryConfig := "bnVsbA=="
 	buildCases := []struct {
-		buildOptions           build.ImageBuildOptions
+		buildOptions           ImageBuildOptions
 		expectedQueryParams    map[string]string
 		expectedTags           []string
 		expectedRegistryConfig string
 	}{
 		{
-			buildOptions: build.ImageBuildOptions{
+			buildOptions: ImageBuildOptions{
 				SuppressOutput: true,
 				NoCache:        true,
 				Remove:         true,
@@ -53,7 +52,7 @@
 			expectedRegistryConfig: emptyRegistryConfig,
 		},
 		{
-			buildOptions: build.ImageBuildOptions{
+			buildOptions: ImageBuildOptions{
 				SuppressOutput: false,
 				NoCache:        false,
 				Remove:         false,
@@ -71,7 +70,7 @@
 			expectedRegistryConfig: emptyRegistryConfig,
 		},
 		{
-			buildOptions: build.ImageBuildOptions{
+			buildOptions: ImageBuildOptions{
 				RemoteContext: "remoteContext",
 				Isolation:     container.Isolation("isolation"),
 				CPUSetCPUs:    "2",
@@ -104,7 +103,7 @@
 			expectedRegistryConfig: emptyRegistryConfig,
 		},
 		{
-			buildOptions: build.ImageBuildOptions{
+			buildOptions: ImageBuildOptions{
 				BuildArgs: map[string]*string{
 					"ARG1": &v1,
 					"ARG2": &v2,
@@ -119,7 +118,7 @@
 			expectedRegistryConfig: emptyRegistryConfig,
 		},
 		{
-			buildOptions: build.ImageBuildOptions{
+			buildOptions: ImageBuildOptions{
 				Ulimits: []*container.Ulimit{
 					{
 						Name: "nproc",
@@ -141,7 +140,7 @@
 			expectedRegistryConfig: emptyRegistryConfig,
 		},
 		{
-			buildOptions: build.ImageBuildOptions{
+			buildOptions: ImageBuildOptions{
 				AuthConfigs: map[string]registry.AuthConfig{
 					"https://index.docker.io/v1/": {
 						Auth: "dG90bwo=",
diff --git a/daemon/builder/backend/backend.go b/daemon/builder/backend/backend.go
index f975f30..a23d148 100644
--- a/daemon/builder/backend/backend.go
+++ b/daemon/builder/backend/backend.go
@@ -13,7 +13,6 @@
 	buildkit "github.com/moby/moby/v2/daemon/internal/builder-next"
 	"github.com/moby/moby/v2/daemon/internal/image"
 	"github.com/moby/moby/v2/daemon/internal/stringid"
-	"github.com/moby/moby/v2/daemon/server/backend"
 	"github.com/moby/moby/v2/daemon/server/buildbackend"
 	"github.com/pkg/errors"
 	"google.golang.org/grpc"
@@ -27,7 +26,7 @@
 
 // Builder defines interface for running a build
 type Builder interface {
-	Build(context.Context, backend.BuildConfig) (*builder.Result, error)
+	Build(context.Context, buildbackend.BuildConfig) (*builder.Result, error)
 }
 
 // Backend provides build functionality to the API router
@@ -51,7 +50,7 @@
 }
 
 // Build builds an image from a Source
-func (b *Backend) Build(ctx context.Context, config backend.BuildConfig) (string, error) {
+func (b *Backend) Build(ctx context.Context, config buildbackend.BuildConfig) (string, error) {
 	options := config.Options
 	useBuildKit := options.Version == build.BuilderBuildKit
 
diff --git a/daemon/builder/builder.go b/daemon/builder/builder.go
index fdeb352..ba42e43 100644
--- a/daemon/builder/builder.go
+++ b/daemon/builder/builder.go
@@ -13,6 +13,7 @@
 	"github.com/moby/moby/v2/daemon/internal/image"
 	"github.com/moby/moby/v2/daemon/internal/layer"
 	"github.com/moby/moby/v2/daemon/server/backend"
+	"github.com/moby/moby/v2/daemon/server/buildbackend"
 	"github.com/opencontainers/go-digest"
 	ocispec "github.com/opencontainers/image-spec/specs-go/v1"
 )
@@ -52,7 +53,7 @@
 
 // ImageBackend are the interface methods required from an image component
 type ImageBackend interface {
-	GetImageAndReleasableLayer(ctx context.Context, refOrID string, opts backend.GetImageAndLayerOptions) (Image, ROLayer, error)
+	GetImageAndReleasableLayer(ctx context.Context, refOrID string, opts buildbackend.GetImageAndLayerOptions) (Image, ROLayer, error)
 }
 
 // ExecBackend contains the interface methods required for executing containers
diff --git a/daemon/builder/dockerfile/builder.go b/daemon/builder/dockerfile/builder.go
index 3cc4a8c..4b90b56 100644
--- a/daemon/builder/dockerfile/builder.go
+++ b/daemon/builder/dockerfile/builder.go
@@ -18,7 +18,7 @@
 	"github.com/moby/moby/v2/daemon/builder"
 	"github.com/moby/moby/v2/daemon/builder/remotecontext"
 	"github.com/moby/moby/v2/daemon/internal/stringid"
-	"github.com/moby/moby/v2/daemon/server/backend"
+	"github.com/moby/moby/v2/daemon/server/buildbackend"
 	"github.com/moby/moby/v2/errdefs"
 	"github.com/moby/sys/user"
 	ocispec "github.com/opencontainers/image-spec/specs-go/v1"
@@ -62,7 +62,7 @@
 }
 
 // Build starts a new build from a BuildConfig
-func (bm *BuildManager) Build(ctx context.Context, config backend.BuildConfig) (*builder.Result, error) {
+func (bm *BuildManager) Build(ctx context.Context, config buildbackend.BuildConfig) (*builder.Result, error) {
 	buildsTriggered.Inc()
 	if config.Options.Dockerfile == "" {
 		config.Options.Dockerfile = builder.DefaultDockerfileName
@@ -98,9 +98,9 @@
 
 // builderOptions are the dependencies required by the builder
 type builderOptions struct {
-	Options        *build.ImageBuildOptions
+	Options        *buildbackend.BuildOptions
 	Backend        builder.Backend
-	ProgressWriter backend.ProgressWriter
+	ProgressWriter buildbackend.ProgressWriter
 	PathCache      pathCache
 	IDMapping      user.IdentityMapping
 }
@@ -108,11 +108,11 @@
 // Builder is a Dockerfile builder
 // It implements the builder.Backend interface.
 type Builder struct {
-	options *build.ImageBuildOptions
+	options *buildbackend.BuildOptions
 
 	Stdout io.Writer
 	Stderr io.Writer
-	Aux    backend.AuxEmitter
+	Aux    buildbackend.AuxEmitter
 	Output io.Writer
 
 	docker builder.Backend
@@ -130,7 +130,7 @@
 func newBuilder(ctx context.Context, options builderOptions) (*Builder, error) {
 	config := options.Options
 	if config == nil {
-		config = new(build.ImageBuildOptions)
+		config = &buildbackend.BuildOptions{}
 	}
 
 	imgProber, err := newImageProber(ctx, options.Backend, config.CacheFrom, config.NoCache)
@@ -217,7 +217,7 @@
 	return &builder.Result{ImageID: state.imageID, FromImage: state.baseImage}, nil
 }
 
-func emitImageID(aux backend.AuxEmitter, state *dispatchState) error {
+func emitImageID(aux buildbackend.AuxEmitter, state *dispatchState) error {
 	if aux == nil || state.imageID == "" {
 		return nil
 	}
@@ -343,7 +343,7 @@
 	}
 
 	b, err := newBuilder(ctx, builderOptions{
-		Options: &build.ImageBuildOptions{NoCache: true},
+		Options: &buildbackend.BuildOptions{NoCache: true},
 	})
 	if err != nil {
 		return nil, err
diff --git a/daemon/builder/dockerfile/dispatchers_test.go b/daemon/builder/dockerfile/dispatchers_test.go
index 1d4762b..da7e964 100644
--- a/daemon/builder/dockerfile/dispatchers_test.go
+++ b/daemon/builder/dockerfile/dispatchers_test.go
@@ -11,12 +11,12 @@
 	"github.com/moby/buildkit/frontend/dockerfile/instructions"
 	"github.com/moby/buildkit/frontend/dockerfile/parser"
 	"github.com/moby/buildkit/frontend/dockerfile/shell"
-	"github.com/moby/moby/api/types/build"
 	"github.com/moby/moby/api/types/container"
 	"github.com/moby/moby/v2/daemon/builder"
 	"github.com/moby/moby/v2/daemon/internal/image"
 	"github.com/moby/moby/v2/daemon/pkg/oci"
 	"github.com/moby/moby/v2/daemon/server/backend"
+	"github.com/moby/moby/v2/daemon/server/buildbackend"
 	"gotest.tools/v3/assert"
 	is "gotest.tools/v3/assert/cmp"
 )
@@ -24,19 +24,18 @@
 func newBuilderWithMockBackend(t *testing.T) *Builder {
 	t.Helper()
 	mockBackend := &MockBackend{}
-	opts := &build.ImageBuildOptions{}
 	ctx := context.Background()
 
 	imageProber, err := newImageProber(ctx, mockBackend, nil, false)
 	assert.NilError(t, err, "Could not create image prober")
 
 	b := &Builder{
-		options:       opts,
+		options:       &buildbackend.BuildOptions{},
 		docker:        mockBackend,
 		Stdout:        new(bytes.Buffer),
 		disableCommit: true,
 		imageSources: newImageSources(builderOptions{
-			Options: opts,
+			Options: &buildbackend.BuildOptions{},
 			Backend: mockBackend,
 		}),
 		imageProber:      imageProber,
diff --git a/daemon/builder/dockerfile/imagecontext.go b/daemon/builder/dockerfile/imagecontext.go
index ae44878..1f08a27 100644
--- a/daemon/builder/dockerfile/imagecontext.go
+++ b/daemon/builder/dockerfile/imagecontext.go
@@ -8,7 +8,7 @@
 	"github.com/containerd/platforms"
 	"github.com/moby/moby/v2/daemon/builder"
 	dockerimage "github.com/moby/moby/v2/daemon/internal/image"
-	"github.com/moby/moby/v2/daemon/server/backend"
+	"github.com/moby/moby/v2/daemon/server/buildbackend"
 	ocispec "github.com/opencontainers/image-spec/specs-go/v1"
 	"github.com/pkg/errors"
 )
@@ -25,15 +25,15 @@
 
 func newImageSources(options builderOptions) *imageSources {
 	getAndMount := func(ctx context.Context, idOrRef string, localOnly bool, platform *ocispec.Platform) (builder.Image, builder.ROLayer, error) {
-		pullOption := backend.PullOptionNoPull
+		pullOption := buildbackend.PullOptionNoPull
 		if !localOnly {
 			if options.Options.PullParent {
-				pullOption = backend.PullOptionForcePull
+				pullOption = buildbackend.PullOptionForcePull
 			} else {
-				pullOption = backend.PullOptionPreferLocal
+				pullOption = buildbackend.PullOptionPreferLocal
 			}
 		}
-		return options.Backend.GetImageAndReleasableLayer(ctx, idOrRef, backend.GetImageAndLayerOptions{
+		return options.Backend.GetImageAndReleasableLayer(ctx, idOrRef, buildbackend.GetImageAndLayerOptions{
 			PullOption: pullOption,
 			AuthConfig: options.Options.AuthConfigs,
 			Output:     options.ProgressWriter.Output,
diff --git a/daemon/builder/dockerfile/internals.go b/daemon/builder/dockerfile/internals.go
index 9693576..d2d0626 100644
--- a/daemon/builder/dockerfile/internals.go
+++ b/daemon/builder/dockerfile/internals.go
@@ -16,7 +16,6 @@
 	"github.com/containerd/platforms"
 	"github.com/moby/go-archive"
 	"github.com/moby/go-archive/chrootarchive"
-	"github.com/moby/moby/api/types/build"
 	"github.com/moby/moby/api/types/container"
 	"github.com/moby/moby/api/types/network"
 	"github.com/moby/moby/v2/daemon/builder"
@@ -24,6 +23,7 @@
 	"github.com/moby/moby/v2/daemon/internal/stringid"
 	networkSettings "github.com/moby/moby/v2/daemon/network"
 	"github.com/moby/moby/v2/daemon/server/backend"
+	"github.com/moby/moby/v2/daemon/server/buildbackend"
 	ocispec "github.com/opencontainers/image-spec/specs-go/v1"
 	"github.com/pkg/errors"
 )
@@ -340,7 +340,7 @@
 	return ctr.ID, nil
 }
 
-func hostConfigFromOptions(options *build.ImageBuildOptions) *container.HostConfig {
+func hostConfigFromOptions(options *buildbackend.BuildOptions) *container.HostConfig {
 	resources := container.Resources{
 		CgroupParent: options.CgroupParent,
 		CPUShares:    options.CPUShares,
diff --git a/daemon/builder/dockerfile/internals_linux_test.go b/daemon/builder/dockerfile/internals_linux_test.go
index 07fba0c..0c8ec37 100644
--- a/daemon/builder/dockerfile/internals_linux_test.go
+++ b/daemon/builder/dockerfile/internals_linux_test.go
@@ -6,7 +6,7 @@
 	"path/filepath"
 	"testing"
 
-	"github.com/moby/moby/api/types/build"
+	"github.com/moby/moby/v2/daemon/server/buildbackend"
 	"github.com/moby/sys/user"
 	"gotest.tools/v3/assert"
 	is "gotest.tools/v3/assert/cmp"
@@ -58,7 +58,7 @@
 		expected  identity
 	}{
 		{
-			builder:   &Builder{options: &build.ImageBuildOptions{Platform: "linux"}},
+			builder:   &Builder{options: &buildbackend.BuildOptions{Platform: "linux"}},
 			name:      "UIDNoMap",
 			chownStr:  "1",
 			idMapping: unmapped,
@@ -66,7 +66,7 @@
 			expected:  identity{UID: 1, GID: 1},
 		},
 		{
-			builder:   &Builder{options: &build.ImageBuildOptions{Platform: "linux"}},
+			builder:   &Builder{options: &buildbackend.BuildOptions{Platform: "linux"}},
 			name:      "UIDGIDNoMap",
 			chownStr:  "0:1",
 			idMapping: unmapped,
@@ -74,7 +74,7 @@
 			expected:  identity{UID: 0, GID: 1},
 		},
 		{
-			builder:   &Builder{options: &build.ImageBuildOptions{Platform: "linux"}},
+			builder:   &Builder{options: &buildbackend.BuildOptions{Platform: "linux"}},
 			name:      "UIDWithMap",
 			chownStr:  "0",
 			idMapping: remapped,
@@ -82,7 +82,7 @@
 			expected:  identity{UID: 100000, GID: 100000},
 		},
 		{
-			builder:   &Builder{options: &build.ImageBuildOptions{Platform: "linux"}},
+			builder:   &Builder{options: &buildbackend.BuildOptions{Platform: "linux"}},
 			name:      "UIDGIDWithMap",
 			chownStr:  "1:33",
 			idMapping: remapped,
@@ -90,7 +90,7 @@
 			expected:  identity{UID: 100001, GID: 100033},
 		},
 		{
-			builder:   &Builder{options: &build.ImageBuildOptions{Platform: "linux"}},
+			builder:   &Builder{options: &buildbackend.BuildOptions{Platform: "linux"}},
 			name:      "UserNoMap",
 			chownStr:  "bin:5555",
 			idMapping: unmapped,
@@ -98,7 +98,7 @@
 			expected:  identity{UID: 1, GID: 5555},
 		},
 		{
-			builder:   &Builder{options: &build.ImageBuildOptions{Platform: "linux"}},
+			builder:   &Builder{options: &buildbackend.BuildOptions{Platform: "linux"}},
 			name:      "GroupWithMap",
 			chownStr:  "0:unicorn",
 			idMapping: remapped,
@@ -106,7 +106,7 @@
 			expected:  identity{UID: 100000, GID: 101002},
 		},
 		{
-			builder:   &Builder{options: &build.ImageBuildOptions{Platform: "linux"}},
+			builder:   &Builder{options: &buildbackend.BuildOptions{Platform: "linux"}},
 			name:      "UserOnlyWithMap",
 			chownStr:  "unicorn",
 			idMapping: remapped,
@@ -131,7 +131,7 @@
 		descr     string
 	}{
 		{
-			builder:   &Builder{options: &build.ImageBuildOptions{Platform: "linux"}},
+			builder:   &Builder{options: &buildbackend.BuildOptions{Platform: "linux"}},
 			name:      "BadChownFlagFormat",
 			chownStr:  "bob:1:555",
 			idMapping: unmapped,
@@ -139,7 +139,7 @@
 			descr:     "invalid chown string format: bob:1:555",
 		},
 		{
-			builder:   &Builder{options: &build.ImageBuildOptions{Platform: "linux"}},
+			builder:   &Builder{options: &buildbackend.BuildOptions{Platform: "linux"}},
 			name:      "UserNoExist",
 			chownStr:  "bob",
 			idMapping: unmapped,
@@ -147,7 +147,7 @@
 			descr:     "can't find uid for user bob: no such user: bob",
 		},
 		{
-			builder:   &Builder{options: &build.ImageBuildOptions{Platform: "linux"}},
+			builder:   &Builder{options: &buildbackend.BuildOptions{Platform: "linux"}},
 			name:      "GroupNoExist",
 			chownStr:  "root:bob",
 			idMapping: unmapped,
diff --git a/daemon/builder/dockerfile/internals_test.go b/daemon/builder/dockerfile/internals_test.go
index 24c87de..b751613 100644
--- a/daemon/builder/dockerfile/internals_test.go
+++ b/daemon/builder/dockerfile/internals_test.go
@@ -8,13 +8,12 @@
 	"testing"
 
 	"github.com/moby/go-archive"
-	"github.com/moby/moby/api/types/build"
 	"github.com/moby/moby/api/types/container"
 	"github.com/moby/moby/v2/daemon/builder"
 	"github.com/moby/moby/v2/daemon/builder/remotecontext"
 	"github.com/moby/moby/v2/daemon/internal/image"
 	"github.com/moby/moby/v2/daemon/internal/layer"
-	"github.com/moby/moby/v2/daemon/server/backend"
+	"github.com/moby/moby/v2/daemon/server/buildbackend"
 	"github.com/opencontainers/go-digest"
 	"gotest.tools/v3/assert"
 	is "gotest.tools/v3/assert/cmp"
@@ -75,8 +74,8 @@
 		dockerfilePath = builder.DefaultDockerfileName
 	}
 
-	config := backend.BuildConfig{
-		Options: &build.ImageBuildOptions{Dockerfile: dockerfilePath},
+	config := buildbackend.BuildConfig{
+		Options: &buildbackend.BuildOptions{Dockerfile: dockerfilePath},
 		Source:  tarStream,
 	}
 	_, _, err = remotecontext.Detect(config)
diff --git a/daemon/builder/dockerfile/mockbackend_test.go b/daemon/builder/dockerfile/mockbackend_test.go
index d44d1a0..5f42b39 100644
--- a/daemon/builder/dockerfile/mockbackend_test.go
+++ b/daemon/builder/dockerfile/mockbackend_test.go
@@ -12,6 +12,7 @@
 	"github.com/moby/moby/v2/daemon/internal/image"
 	"github.com/moby/moby/v2/daemon/internal/layer"
 	"github.com/moby/moby/v2/daemon/server/backend"
+	"github.com/moby/moby/v2/daemon/server/buildbackend"
 	"github.com/opencontainers/go-digest"
 	ocispec "github.com/opencontainers/image-spec/specs-go/v1"
 )
@@ -62,7 +63,7 @@
 	return nil
 }
 
-func (m *MockBackend) GetImageAndReleasableLayer(ctx context.Context, refOrID string, opts backend.GetImageAndLayerOptions) (builder.Image, builder.ROLayer, error) {
+func (m *MockBackend) GetImageAndReleasableLayer(ctx context.Context, refOrID string, opts buildbackend.GetImageAndLayerOptions) (builder.Image, builder.ROLayer, error) {
 	if m.getImageFunc != nil {
 		return m.getImageFunc(refOrID)
 	}
diff --git a/daemon/builder/remotecontext/detect.go b/daemon/builder/remotecontext/detect.go
index ae81c80..8cc23b6 100644
--- a/daemon/builder/remotecontext/detect.go
+++ b/daemon/builder/remotecontext/detect.go
@@ -15,7 +15,7 @@
 	"github.com/moby/buildkit/frontend/dockerfile/parser"
 	"github.com/moby/moby/v2/daemon/builder"
 	"github.com/moby/moby/v2/daemon/builder/remotecontext/urlutil"
-	"github.com/moby/moby/v2/daemon/server/backend"
+	"github.com/moby/moby/v2/daemon/server/buildbackend"
 	"github.com/moby/moby/v2/errdefs"
 	"github.com/moby/patternmatcher"
 	"github.com/moby/patternmatcher/ignorefile"
@@ -28,7 +28,7 @@
 
 // Detect returns a context and dockerfile from remote location or local
 // archive.
-func Detect(config backend.BuildConfig) (remote builder.Source, dockerfile *parser.Result, _ error) {
+func Detect(config buildbackend.BuildConfig) (remote builder.Source, dockerfile *parser.Result, _ error) {
 	remoteURL := config.Options.RemoteContext
 	switch {
 	case remoteURL == "":
diff --git a/daemon/containerd/image_builder.go b/daemon/containerd/image_builder.go
index df3696e..8d2b4eb 100644
--- a/daemon/containerd/image_builder.go
+++ b/daemon/containerd/image_builder.go
@@ -33,6 +33,7 @@
 	"github.com/moby/moby/v2/daemon/internal/layer"
 	"github.com/moby/moby/v2/daemon/internal/stringid"
 	"github.com/moby/moby/v2/daemon/server/backend"
+	"github.com/moby/moby/v2/daemon/server/buildbackend"
 	"github.com/moby/moby/v2/errdefs"
 	"github.com/opencontainers/go-digest"
 	"github.com/opencontainers/image-spec/identity"
@@ -64,7 +65,7 @@
 // GetImageAndReleasableLayer returns an image and releaseable layer for a
 // reference or ID. Every call to GetImageAndReleasableLayer MUST call
 // releasableLayer.Release() to prevent leaking of layers.
-func (i *ImageService) GetImageAndReleasableLayer(ctx context.Context, refOrID string, opts backend.GetImageAndLayerOptions) (builder.Image, builder.ROLayer, error) {
+func (i *ImageService) GetImageAndReleasableLayer(ctx context.Context, refOrID string, opts buildbackend.GetImageAndLayerOptions) (builder.Image, builder.ROLayer, error) {
 	if refOrID == "" { // FROM scratch
 		if runtime.GOOS == "windows" {
 			return nil, nil, errors.New(`"FROM scratch" is not supported on Windows`)
@@ -80,10 +81,10 @@
 		}, nil
 	}
 
-	if opts.PullOption != backend.PullOptionForcePull {
+	if opts.PullOption != buildbackend.PullOptionForcePull {
 		// TODO(laurazard): same as below
 		img, err := i.GetImage(ctx, refOrID, backend.GetImageOpts{Platform: opts.Platform})
-		if err != nil && opts.PullOption == backend.PullOptionNoPull {
+		if err != nil && opts.PullOption == buildbackend.PullOptionNoPull {
 			return nil, nil, err
 		}
 		imgDesc, err := i.resolveDescriptor(ctx, refOrID)
diff --git a/daemon/image_service.go b/daemon/image_service.go
index 4683035..b4a4365 100644
--- a/daemon/image_service.go
+++ b/daemon/image_service.go
@@ -16,6 +16,7 @@
 	"github.com/moby/moby/v2/daemon/internal/image"
 	"github.com/moby/moby/v2/daemon/internal/layer"
 	"github.com/moby/moby/v2/daemon/server/backend"
+	"github.com/moby/moby/v2/daemon/server/buildbackend"
 	"github.com/moby/moby/v2/daemon/server/imagebackend"
 	"github.com/opencontainers/go-digest"
 	ocispec "github.com/opencontainers/image-spec/specs-go/v1"
@@ -48,7 +49,7 @@
 
 	// Layers
 
-	GetImageAndReleasableLayer(ctx context.Context, refOrID string, opts backend.GetImageAndLayerOptions) (builder.Image, builder.ROLayer, error)
+	GetImageAndReleasableLayer(ctx context.Context, refOrID string, opts buildbackend.GetImageAndLayerOptions) (builder.Image, builder.ROLayer, error)
 	CreateLayer(container *container.Container, initFunc layer.MountInit) (container.RWLayer, error)
 	CreateLayerFromImage(img *image.Image, layerName string, rwLayerOpts *layer.CreateRWLayerOpts) (container.RWLayer, error)
 	GetLayerByID(cid string) (container.RWLayer, error)
diff --git a/daemon/images/image_builder.go b/daemon/images/image_builder.go
index 5f209ce..bcf8e65 100644
--- a/daemon/images/image_builder.go
+++ b/daemon/images/image_builder.go
@@ -17,6 +17,7 @@
 	"github.com/moby/moby/v2/daemon/internal/layer"
 	"github.com/moby/moby/v2/daemon/internal/stringid"
 	"github.com/moby/moby/v2/daemon/server/backend"
+	"github.com/moby/moby/v2/daemon/server/buildbackend"
 	"github.com/opencontainers/go-digest"
 	ocispec "github.com/opencontainers/image-spec/specs-go/v1"
 	"github.com/pkg/errors"
@@ -195,7 +196,7 @@
 // GetImageAndReleasableLayer returns an image and releaseable layer for a reference or ID.
 // Every call to GetImageAndReleasableLayer MUST call releasableLayer.Release() to prevent
 // leaking of layers.
-func (i *ImageService) GetImageAndReleasableLayer(ctx context.Context, refOrID string, opts backend.GetImageAndLayerOptions) (builder.Image, builder.ROLayer, error) {
+func (i *ImageService) GetImageAndReleasableLayer(ctx context.Context, refOrID string, opts buildbackend.GetImageAndLayerOptions) (builder.Image, builder.ROLayer, error) {
 	if refOrID == "" { // FROM scratch
 		if runtime.GOOS == "windows" {
 			return nil, nil, errors.New(`"FROM scratch" is not supported on Windows`)
@@ -209,9 +210,9 @@
 		return nil, lyr, err
 	}
 
-	if opts.PullOption != backend.PullOptionForcePull {
+	if opts.PullOption != buildbackend.PullOptionForcePull {
 		img, err := i.GetImage(ctx, refOrID, backend.GetImageOpts{Platform: opts.Platform})
-		if err != nil && opts.PullOption == backend.PullOptionNoPull {
+		if err != nil && opts.PullOption == buildbackend.PullOptionNoPull {
 			return nil, nil, err
 		}
 		if err != nil && !cerrdefs.IsNotFound(err) {
diff --git a/daemon/internal/builder-next/builder.go b/daemon/internal/builder-next/builder.go
index 5838f62..81e7c01 100644
--- a/daemon/internal/builder-next/builder.go
+++ b/daemon/internal/builder-next/builder.go
@@ -32,7 +32,6 @@
 	"github.com/moby/moby/v2/daemon/internal/timestamp"
 	"github.com/moby/moby/v2/daemon/libnetwork"
 	"github.com/moby/moby/v2/daemon/pkg/opts"
-	"github.com/moby/moby/v2/daemon/server/backend"
 	"github.com/moby/moby/v2/daemon/server/buildbackend"
 	"github.com/moby/moby/v2/errdefs"
 	"github.com/moby/sys/user"
@@ -243,7 +242,7 @@
 }
 
 // Build executes a build request
-func (b *Builder) Build(ctx context.Context, opt backend.BuildConfig) (*builder.Result, error) {
+func (b *Builder) Build(ctx context.Context, opt buildbackend.BuildConfig) (*builder.Result, error) {
 	if len(opt.Options.Outputs) > 1 {
 		return nil, errors.Errorf("multiple outputs not supported")
 	}
diff --git a/daemon/server/backend/build.go b/daemon/server/backend/build.go
deleted file mode 100644
index ba5f247..0000000
--- a/daemon/server/backend/build.go
+++ /dev/null
@@ -1,50 +0,0 @@
-package backend
-
-import (
-	"io"
-
-	"github.com/moby/moby/api/types/build"
-	"github.com/moby/moby/api/types/registry"
-	ocispec "github.com/opencontainers/image-spec/specs-go/v1"
-)
-
-// PullOption defines different modes for accessing images
-type PullOption int
-
-const (
-	// PullOptionNoPull only returns local images
-	PullOptionNoPull PullOption = iota
-	// PullOptionForcePull always tries to pull a ref from the registry first
-	PullOptionForcePull
-	// PullOptionPreferLocal uses local image if it exists, otherwise pulls
-	PullOptionPreferLocal
-)
-
-// ProgressWriter is a data object to transport progress streams to the client
-type ProgressWriter struct {
-	Output             io.Writer
-	StdoutFormatter    io.Writer
-	StderrFormatter    io.Writer
-	AuxFormatter       AuxEmitter
-	ProgressReaderFunc func(io.ReadCloser) io.ReadCloser
-}
-
-// AuxEmitter is an interface for emitting aux messages during build progress
-type AuxEmitter interface {
-	Emit(string, any) error
-}
-
-// BuildConfig is the configuration used by a BuildManager to start a build
-type BuildConfig struct {
-	Source         io.ReadCloser
-	ProgressWriter ProgressWriter
-	Options        *build.ImageBuildOptions
-}
-
-// GetImageAndLayerOptions are the options supported by GetImageAndReleasableLayer
-type GetImageAndLayerOptions struct {
-	PullOption PullOption
-	AuthConfig map[string]registry.AuthConfig
-	Output     io.Writer
-	Platform   *ocispec.Platform
-}
diff --git a/daemon/server/buildbackend/build.go b/daemon/server/buildbackend/build.go
index bcab277..798894b 100644
--- a/daemon/server/buildbackend/build.go
+++ b/daemon/server/buildbackend/build.go
@@ -1,6 +1,15 @@
 package buildbackend
 
-import "github.com/moby/moby/api/types/filters"
+import (
+	"io"
+
+	ocispec "github.com/opencontainers/image-spec/specs-go/v1"
+
+	"github.com/moby/moby/api/types/build"
+	"github.com/moby/moby/api/types/container"
+	"github.com/moby/moby/api/types/filters"
+	"github.com/moby/moby/api/types/registry"
+)
 
 type CachePruneOptions struct {
 	All           bool
@@ -9,3 +18,104 @@
 	MinFreeSpace  int64
 	Filters       filters.Args
 }
+
+// PullOption defines different modes for accessing images
+type PullOption int
+
+const (
+	// PullOptionNoPull only returns local images
+	PullOptionNoPull PullOption = iota
+	// PullOptionForcePull always tries to pull a ref from the registry first
+	PullOptionForcePull
+	// PullOptionPreferLocal uses local image if it exists, otherwise pulls
+	PullOptionPreferLocal
+)
+
+// ProgressWriter is a data object to transport progress streams to the client
+type ProgressWriter struct {
+	Output             io.Writer
+	StdoutFormatter    io.Writer
+	StderrFormatter    io.Writer
+	AuxFormatter       AuxEmitter
+	ProgressReaderFunc func(io.ReadCloser) io.ReadCloser
+}
+
+// AuxEmitter is an interface for emitting aux messages during build progress
+type AuxEmitter interface {
+	Emit(string, any) error
+}
+
+// BuildConfig is the configuration used by a BuildManager to start a build
+type BuildConfig struct {
+	Source         io.ReadCloser
+	ProgressWriter ProgressWriter
+	Options        *BuildOptions
+}
+
+// BuildOptions holds the information
+// necessary to build images.
+type BuildOptions 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        []*container.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]registry.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 underlying builder to use
+	Version build.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
+	// Outputs defines configurations for exporting build results. Only supported
+	// in BuildKit mode
+	Outputs []BuildOutput
+}
+
+// BuildOutput defines configuration for exporting a build result
+type BuildOutput struct {
+	Type  string
+	Attrs map[string]string
+}
+
+// GetImageAndLayerOptions are the options supported by GetImageAndReleasableLayer
+type GetImageAndLayerOptions struct {
+	PullOption PullOption
+	AuthConfig map[string]registry.AuthConfig
+	Output     io.Writer
+	Platform   *ocispec.Platform
+}
diff --git a/daemon/server/router/build/backend.go b/daemon/server/router/build/backend.go
index ee45a13..6841cb4 100644
--- a/daemon/server/router/build/backend.go
+++ b/daemon/server/router/build/backend.go
@@ -4,7 +4,6 @@
 	"context"
 
 	"github.com/moby/moby/api/types/build"
-	"github.com/moby/moby/v2/daemon/server/backend"
 	"github.com/moby/moby/v2/daemon/server/buildbackend"
 )
 
@@ -12,7 +11,7 @@
 type Backend interface {
 	// Build a Docker image returning the id of the image
 	// TODO: make this return a reference instead of string
-	Build(context.Context, backend.BuildConfig) (string, error)
+	Build(context.Context, buildbackend.BuildConfig) (string, error)
 
 	// PruneCache prunes the build cache.
 	PruneCache(context.Context, buildbackend.CachePruneOptions) (*build.CachePruneReport, error)
diff --git a/daemon/server/router/build/build_routes.go b/daemon/server/router/build/build_routes.go
index 06d8305..a90074b 100644
--- a/daemon/server/router/build/build_routes.go
+++ b/daemon/server/router/build/build_routes.go
@@ -23,7 +23,6 @@
 	"github.com/moby/moby/api/types/filters"
 	"github.com/moby/moby/api/types/registry"
 	"github.com/moby/moby/api/types/versions"
-	"github.com/moby/moby/v2/daemon/server/backend"
 	"github.com/moby/moby/v2/daemon/server/buildbackend"
 	"github.com/moby/moby/v2/daemon/server/httputils"
 	"github.com/moby/moby/v2/pkg/ioutils"
@@ -36,8 +35,8 @@
 
 func (e invalidParam) InvalidParameter() {}
 
-func newImageBuildOptions(ctx context.Context, r *http.Request) (*build.ImageBuildOptions, error) {
-	options := &build.ImageBuildOptions{
+func newImageBuildOptions(ctx context.Context, r *http.Request) (*buildbackend.BuildOptions, error) {
+	options := &buildbackend.BuildOptions{
 		Version:        build.BuilderV1, // Builder V1 is the default, but can be overridden
 		Dockerfile:     r.FormValue("dockerfile"),
 		SuppressOutput: httputils.BoolValue(r, "q"),
@@ -82,7 +81,7 @@
 	if versions.GreaterThanOrEqualTo(version, "1.40") {
 		outputsJSON := r.FormValue("outputs")
 		if outputsJSON != "" {
-			var outputs []build.ImageBuildOutput
+			var outputs []buildbackend.BuildOutput
 			if err := json.Unmarshal([]byte(outputsJSON), &outputs); err != nil {
 				return nil, invalidParam{errors.Wrap(err, "invalid outputs specified")}
 			}
@@ -314,7 +313,7 @@
 
 	wantAux := versions.GreaterThanOrEqualTo(version, "1.30")
 
-	imgID, err := br.backend.Build(ctx, backend.BuildConfig{
+	imgID, err := br.backend.Build(ctx, buildbackend.BuildConfig{
 		Source:         body,
 		Options:        buildOptions,
 		ProgressWriter: buildProgressWriter(out, wantAux, createProgressReader),
@@ -360,7 +359,7 @@
 	return s.w.Write(b)
 }
 
-func buildProgressWriter(out io.Writer, wantAux bool, createProgressReader func(io.ReadCloser) io.ReadCloser) backend.ProgressWriter {
+func buildProgressWriter(out io.Writer, wantAux bool, createProgressReader func(io.ReadCloser) io.ReadCloser) buildbackend.ProgressWriter {
 	// see https://github.com/moby/moby/pull/21406
 	out = &syncWriter{w: out}
 
@@ -369,7 +368,7 @@
 		aux = &streamformatter.AuxFormatter{Writer: out}
 	}
 
-	return backend.ProgressWriter{
+	return buildbackend.ProgressWriter{
 		Output:             out,
 		StdoutFormatter:    streamformatter.NewStdoutWriter(out),
 		StderrFormatter:    streamformatter.NewStderrWriter(out),
diff --git a/integration/build/build_cgroupns_linux_test.go b/integration/build/build_cgroupns_linux_test.go
index 1923628..f4bf3cb 100644
--- a/integration/build/build_cgroupns_linux_test.go
+++ b/integration/build/build_cgroupns_linux_test.go
@@ -7,7 +7,7 @@
 	"strings"
 	"testing"
 
-	"github.com/moby/moby/api/types/build"
+	"github.com/moby/moby/client"
 	"github.com/moby/moby/client/pkg/jsonmessage"
 	"github.com/moby/moby/v2/integration/internal/requirement"
 	"github.com/moby/moby/v2/testutil"
@@ -51,14 +51,12 @@
 	source := fakecontext.New(t, "", fakecontext.WithDockerfile(dockerfile))
 	defer source.Close()
 
-	client := d.NewClientT(t)
-	resp, err := client.ImageBuild(ctx,
-		source.AsTarReader(t),
-		build.ImageBuildOptions{
-			Remove:      true,
-			ForceRemove: true,
-			Tags:        []string{"buildcgroupns"},
-		})
+	apiClient := d.NewClientT(t)
+	resp, err := apiClient.ImageBuild(ctx, source.AsTarReader(t), client.ImageBuildOptions{
+		Remove:      true,
+		ForceRemove: true,
+		Tags:        []string{"buildcgroupns"},
+	})
 	assert.NilError(t, err)
 	defer resp.Body.Close()
 
diff --git a/integration/build/build_squash_test.go b/integration/build/build_squash_test.go
index d9e4629..3c1c4b8 100644
--- a/integration/build/build_squash_test.go
+++ b/integration/build/build_squash_test.go
@@ -7,7 +7,6 @@
 	"testing"
 
 	"github.com/moby/moby/api/pkg/stdcopy"
-	"github.com/moby/moby/api/types/build"
 	"github.com/moby/moby/client"
 	"github.com/moby/moby/v2/integration/internal/container"
 	"github.com/moby/moby/v2/testutil"
@@ -51,13 +50,11 @@
 	defer source.Close()
 
 	name := strings.ToLower(t.Name())
-	resp, err := apiClient.ImageBuild(ctx,
-		source.AsTarReader(t),
-		build.ImageBuildOptions{
-			Remove:      true,
-			ForceRemove: true,
-			Tags:        []string{name},
-		})
+	resp, err := apiClient.ImageBuild(ctx, source.AsTarReader(t), client.ImageBuildOptions{
+		Remove:      true,
+		ForceRemove: true,
+		Tags:        []string{name},
+	})
 	assert.NilError(t, err)
 	_, err = io.Copy(io.Discard, resp.Body)
 	resp.Body.Close()
@@ -70,7 +67,7 @@
 	// build with squash
 	resp, err = apiClient.ImageBuild(ctx,
 		source.AsTarReader(t),
-		build.ImageBuildOptions{
+		client.ImageBuildOptions{
 			Remove:      true,
 			ForceRemove: true,
 			Squash:      true,
diff --git a/integration/build/build_test.go b/integration/build/build_test.go
index 4c3648b..9f2ae88 100644
--- a/integration/build/build_test.go
+++ b/integration/build/build_test.go
@@ -110,7 +110,7 @@
 			_, err := tw.Write(dockerfile)
 			assert.NilError(t, err)
 			assert.NilError(t, tw.Close())
-			resp, err := apiClient.ImageBuild(ctx, buff, build.ImageBuildOptions{Remove: tc.rm, ForceRemove: tc.forceRm, NoCache: true})
+			resp, err := apiClient.ImageBuild(ctx, buff, client.ImageBuildOptions{Remove: tc.rm, ForceRemove: tc.forceRm, NoCache: true})
 			assert.NilError(t, err)
 			defer resp.Body.Close()
 			filter, err := buildContainerIdsFilter(resp.Body)
@@ -163,16 +163,12 @@
 		t.Run(target, func(t *testing.T) {
 			imgName := strings.ToLower(t.Name())
 
-			resp, err := apiclient.ImageBuild(
-				ctx,
-				source.AsTarReader(t),
-				build.ImageBuildOptions{
-					Remove:      true,
-					ForceRemove: true,
-					Target:      target,
-					Tags:        []string{imgName},
-				},
-			)
+			resp, err := apiclient.ImageBuild(ctx, source.AsTarReader(t), client.ImageBuildOptions{
+				Remove:      true,
+				ForceRemove: true,
+				Target:      target,
+				Tags:        []string{imgName},
+			})
 			assert.NilError(t, err)
 
 			out := bytes.NewBuffer(nil)
@@ -213,13 +209,11 @@
 
 	apiclient := testEnv.APIClient()
 	imgName := strings.ToLower(t.Name())
-	resp, err := apiclient.ImageBuild(ctx,
-		source.AsTarReader(t),
-		build.ImageBuildOptions{
-			Remove:      true,
-			ForceRemove: true,
-			Tags:        []string{imgName},
-		})
+	resp, err := apiclient.ImageBuild(ctx, source.AsTarReader(t), client.ImageBuildOptions{
+		Remove:      true,
+		ForceRemove: true,
+		Tags:        []string{imgName},
+	})
 	assert.NilError(t, err)
 	_, err = io.Copy(io.Discard, resp.Body)
 	assert.Check(t, resp.Body.Close())
@@ -260,15 +254,13 @@
 
 	apiclient := testEnv.APIClient()
 	// For `target-a` build
-	resp, err := apiclient.ImageBuild(ctx,
-		source.AsTarReader(t),
-		build.ImageBuildOptions{
-			Remove:      true,
-			ForceRemove: true,
-			Tags:        []string{imgName},
-			Labels:      testLabels,
-			Target:      "target-a",
-		})
+	resp, err := apiclient.ImageBuild(ctx, source.AsTarReader(t), client.ImageBuildOptions{
+		Remove:      true,
+		ForceRemove: true,
+		Tags:        []string{imgName},
+		Labels:      testLabels,
+		Target:      "target-a",
+	})
 	assert.NilError(t, err)
 	_, err = io.Copy(io.Discard, resp.Body)
 	assert.Check(t, resp.Body.Close())
@@ -289,7 +281,7 @@
 	delete(testLabels, "label-a")
 	resp, err = apiclient.ImageBuild(ctx,
 		source.AsTarReader(t),
-		build.ImageBuildOptions{
+		client.ImageBuildOptions{
 			Remove:      true,
 			ForceRemove: true,
 			Tags:        []string{imgName},
@@ -328,12 +320,10 @@
 	defer source.Close()
 
 	apiclient := testEnv.APIClient()
-	resp, err := apiclient.ImageBuild(ctx,
-		source.AsTarReader(t),
-		build.ImageBuildOptions{
-			Remove:      true,
-			ForceRemove: true,
-		})
+	resp, err := apiclient.ImageBuild(ctx, source.AsTarReader(t), client.ImageBuildOptions{
+		Remove:      true,
+		ForceRemove: true,
+	})
 	assert.NilError(t, err)
 	_, err = io.Copy(io.Discard, resp.Body)
 	assert.Check(t, resp.Body.Close())
@@ -364,12 +354,10 @@
 	defer source.Close()
 
 	apiclient := testEnv.APIClient()
-	resp, err := apiclient.ImageBuild(ctx,
-		source.AsTarReader(t),
-		build.ImageBuildOptions{
-			Remove:      true,
-			ForceRemove: true,
-		})
+	resp, err := apiclient.ImageBuild(ctx, source.AsTarReader(t), client.ImageBuildOptions{
+		Remove:      true,
+		ForceRemove: true,
+	})
 
 	out := bytes.NewBuffer(nil)
 	assert.NilError(t, err)
@@ -410,12 +398,10 @@
 	assert.NilError(t, err)
 
 	apiclient := testEnv.APIClient()
-	resp, err := apiclient.ImageBuild(ctx,
-		buf,
-		build.ImageBuildOptions{
-			Remove:      true,
-			ForceRemove: true,
-		})
+	resp, err := apiclient.ImageBuild(ctx, buf, client.ImageBuildOptions{
+		Remove:      true,
+		ForceRemove: true,
+	})
 
 	out := bytes.NewBuffer(nil)
 	assert.NilError(t, err)
@@ -435,7 +421,7 @@
 
 	resp, err = apiclient.ImageBuild(ctx,
 		buf,
-		build.ImageBuildOptions{
+		client.ImageBuildOptions{
 			Remove:      true,
 			ForceRemove: true,
 		})
@@ -472,12 +458,10 @@
 	defer source.Close()
 
 	apiClient := testEnv.APIClient()
-	resp, err := apiClient.ImageBuild(ctx,
-		source.AsTarReader(t),
-		build.ImageBuildOptions{
-			Remove:      true,
-			ForceRemove: true,
-		})
+	resp, err := apiClient.ImageBuild(ctx, source.AsTarReader(t), client.ImageBuildOptions{
+		Remove:      true,
+		ForceRemove: true,
+	})
 
 	out := bytes.NewBuffer(nil)
 	assert.NilError(t, err)
@@ -518,12 +502,10 @@
 	assert.NilError(t, err)
 
 	apiClient := testEnv.APIClient()
-	resp, err := apiClient.ImageBuild(ctx,
-		buf,
-		build.ImageBuildOptions{
-			Remove:      true,
-			ForceRemove: true,
-		})
+	resp, err := apiClient.ImageBuild(ctx, buf, client.ImageBuildOptions{
+		Remove:      true,
+		ForceRemove: true,
+	})
 
 	out := bytes.NewBuffer(nil)
 	assert.NilError(t, err)
@@ -559,12 +541,10 @@
 	assert.NilError(t, err)
 
 	apiClient := testEnv.APIClient()
-	resp, err := apiClient.ImageBuild(ctx,
-		buf,
-		build.ImageBuildOptions{
-			Remove:      true,
-			ForceRemove: true,
-		})
+	resp, err := apiClient.ImageBuild(ctx, buf, client.ImageBuildOptions{
+		Remove:      true,
+		ForceRemove: true,
+	})
 
 	out := bytes.NewBuffer(nil)
 	assert.NilError(t, err)
@@ -626,7 +606,7 @@
 
 			_, err = apiClient.ImageBuild(ctx,
 				buf,
-				build.ImageBuildOptions{
+				client.ImageBuildOptions{
 					Remove:      true,
 					ForceRemove: true,
 				})
@@ -653,15 +633,11 @@
 		t.Run(target, func(t *testing.T) {
 			ctx := testutil.StartSpan(ctx, t)
 
-			resp, err := apiClient.ImageBuild(
-				ctx,
-				source.AsTarReader(t),
-				build.ImageBuildOptions{
-					Remove:      true,
-					ForceRemove: true,
-					Target:      target,
-				},
-			)
+			resp, err := apiClient.ImageBuild(ctx, source.AsTarReader(t), client.ImageBuildOptions{
+				Remove:      true,
+				ForceRemove: true,
+				Target:      target,
+			})
 			assert.NilError(t, err)
 
 			out := bytes.NewBuffer(nil)
@@ -684,7 +660,7 @@
 	err := w.Close()
 	assert.NilError(t, err)
 
-	_, err = testEnv.APIClient().ImageBuild(ctx, buf, build.ImageBuildOptions{
+	_, err = testEnv.APIClient().ImageBuild(ctx, buf, client.ImageBuildOptions{
 		Remove:      true,
 		ForceRemove: true,
 		Platform:    "foobar",
@@ -713,7 +689,7 @@
 			apiClient := testEnv.APIClient()
 
 			buildAndGetID := func() string {
-				resp, err := apiClient.ImageBuild(ctx, source.AsTarReader(t), build.ImageBuildOptions{
+				resp, err := apiClient.ImageBuild(ctx, source.AsTarReader(t), client.ImageBuildOptions{
 					Version: build.BuilderV1,
 				})
 				assert.NilError(t, err)
@@ -752,7 +728,7 @@
 
 			since := time.Now()
 
-			resp, err := apiClient.ImageBuild(ctx, source.AsTarReader(t), build.ImageBuildOptions{
+			resp, err := apiClient.ImageBuild(ctx, source.AsTarReader(t), client.ImageBuildOptions{
 				Version: builderVersion,
 				NoCache: true,
 			})
@@ -807,7 +783,7 @@
 	apiClient := testEnv.APIClient()
 
 	buildImage := func(imgName string) error {
-		resp, err := apiClient.ImageBuild(ctx, source.AsTarReader(t), build.ImageBuildOptions{
+		resp, err := apiClient.ImageBuild(ctx, source.AsTarReader(t), client.ImageBuildOptions{
 			Remove:      true,
 			ForceRemove: true,
 			Tags:        []string{imgName},
diff --git a/integration/build/build_userns_linux_test.go b/integration/build/build_userns_linux_test.go
index 6b574f0..9437f72 100644
--- a/integration/build/build_userns_linux_test.go
+++ b/integration/build/build_userns_linux_test.go
@@ -10,7 +10,6 @@
 	"testing"
 
 	"github.com/moby/moby/api/pkg/stdcopy"
-	"github.com/moby/moby/api/types/build"
 	"github.com/moby/moby/client"
 	"github.com/moby/moby/client/pkg/jsonmessage"
 	"github.com/moby/moby/v2/integration/internal/container"
@@ -64,11 +63,9 @@
 	source := fakecontext.New(t, "", fakecontext.WithDockerfile(dockerfile))
 	defer source.Close()
 
-	resp, err := clientUserRemap.ImageBuild(ctx,
-		source.AsTarReader(t),
-		build.ImageBuildOptions{
-			Tags: []string{imageTag},
-		})
+	resp, err := clientUserRemap.ImageBuild(ctx, source.AsTarReader(t), client.ImageBuildOptions{
+		Tags: []string{imageTag},
+	})
 	assert.NilError(t, err)
 	defer resp.Body.Close()
 
diff --git a/integration/capabilities/capabilities_linux_test.go b/integration/capabilities/capabilities_linux_test.go
index 50c38fe..bd6f0c6 100644
--- a/integration/capabilities/capabilities_linux_test.go
+++ b/integration/capabilities/capabilities_linux_test.go
@@ -7,9 +7,8 @@
 	"testing"
 
 	"github.com/moby/moby/api/pkg/stdcopy"
-	"github.com/moby/moby/api/types/build"
 	containertypes "github.com/moby/moby/api/types/container"
-	client2 "github.com/moby/moby/client"
+	"github.com/moby/moby/client"
 	"github.com/moby/moby/v2/integration/internal/container"
 	"github.com/moby/moby/v2/testutil"
 	"github.com/moby/moby/v2/testutil/fakecontext"
@@ -32,14 +31,12 @@
 	source := fakecontext.New(t, "", fakecontext.WithDockerfile(withFileCapability))
 	defer source.Close()
 
-	client := testEnv.APIClient()
+	apiClient := testEnv.APIClient()
 
 	// Build image
-	resp, err := client.ImageBuild(ctx,
-		source.AsTarReader(t),
-		build.ImageBuildOptions{
-			Tags: []string{imageTag},
-		})
+	resp, err := apiClient.ImageBuild(ctx, source.AsTarReader(t), client.ImageBuildOptions{
+		Tags: []string{imageTag},
+	})
 	assert.NilError(t, err)
 	_, err = io.Copy(io.Discard, resp.Body)
 	assert.NilError(t, err)
@@ -78,11 +75,11 @@
 				container.WithCmd("/bin/cat", "/txt"),
 				container.WithSecurityOpt("no-new-privileges=true"),
 			)
-			cid := container.Run(ctx, t, client, opts...)
-			poll.WaitOn(t, container.IsInState(ctx, client, cid, containertypes.StateExited))
+			cid := container.Run(ctx, t, apiClient, opts...)
+			poll.WaitOn(t, container.IsInState(ctx, apiClient, cid, containertypes.StateExited))
 
 			// Assert on outputs
-			logReader, err := client.ContainerLogs(ctx, cid, client2.ContainerLogsOptions{
+			logReader, err := apiClient.ContainerLogs(ctx, cid, client.ContainerLogsOptions{
 				ShowStdout: true,
 				ShowStderr: true,
 			})
diff --git a/integration/container/copy_test.go b/integration/container/copy_test.go
index 6ddb9a7..8b344a3 100644
--- a/integration/container/copy_test.go
+++ b/integration/container/copy_test.go
@@ -213,7 +213,7 @@
 	`))
 	defer buildCtx.Close()
 
-	resp, err := apiClient.ImageBuild(ctx, buildCtx.AsTarReader(t), build.ImageBuildOptions{})
+	resp, err := apiClient.ImageBuild(ctx, buildCtx.AsTarReader(t), client.ImageBuildOptions{})
 	assert.NilError(t, err)
 	defer resp.Body.Close()
 
@@ -287,7 +287,7 @@
 	`))
 	defer buildCtx.Close()
 
-	resp, err := apiClient.ImageBuild(ctx, buildCtx.AsTarReader(t), build.ImageBuildOptions{})
+	resp, err := apiClient.ImageBuild(ctx, buildCtx.AsTarReader(t), client.ImageBuildOptions{})
 	assert.NilError(t, err)
 	defer resp.Body.Close()
 
diff --git a/integration/image/history_test.go b/integration/image/history_test.go
index 180c489..de2d2f6 100644
--- a/integration/image/history_test.go
+++ b/integration/image/history_test.go
@@ -68,7 +68,7 @@
 	defer buildCtx.Close()
 
 	// Build the image for a non-native platform
-	resp, err := apiClient.ImageBuild(ctx, buildCtx.AsTarReader(t), buildtypes.ImageBuildOptions{
+	resp, err := apiClient.ImageBuild(ctx, buildCtx.AsTarReader(t), client.ImageBuildOptions{
 		Version:  buildtypes.BuilderBuildKit,
 		Tags:     []string{"cross-platform-test"},
 		Platform: platforms.FormatAll(nonNativePlatform),
diff --git a/integration/internal/build/build.go b/integration/internal/build/build.go
index 1f79ce0..40ae23b 100644
--- a/integration/internal/build/build.go
+++ b/integration/internal/build/build.go
@@ -18,7 +18,7 @@
 
 // Do builds an image from the given context and returns the image ID.
 func Do(ctx context.Context, t *testing.T, apiClient client.APIClient, buildCtx *fakecontext.Fake) string {
-	resp, err := apiClient.ImageBuild(ctx, buildCtx.AsTarReader(t), build.ImageBuildOptions{})
+	resp, err := apiClient.ImageBuild(ctx, buildCtx.AsTarReader(t), client.ImageBuildOptions{})
 	if resp.Body != nil {
 		defer resp.Body.Close()
 	}
diff --git a/integration/volume/mount_test.go b/integration/volume/mount_test.go
index a220777..6e3b0f0 100644
--- a/integration/volume/mount_test.go
+++ b/integration/volume/mount_test.go
@@ -9,7 +9,6 @@
 	"strings"
 	"testing"
 
-	"github.com/moby/moby/api/types/build"
 	containertypes "github.com/moby/moby/api/types/container"
 	"github.com/moby/moby/api/types/mount"
 	"github.com/moby/moby/api/types/network"
@@ -320,13 +319,11 @@
 	)
 	defer source.Close()
 
-	resp, err := apiClient.ImageBuild(ctx,
-		source.AsTarReader(t),
-		build.ImageBuildOptions{
-			Remove:      false,
-			ForceRemove: false,
-			Tags:        []string{imgName},
-		})
+	resp, err := apiClient.ImageBuild(ctx, source.AsTarReader(t), client.ImageBuildOptions{
+		Remove:      false,
+		ForceRemove: false,
+		Tags:        []string{imgName},
+	})
 	assert.NilError(t, err)
 
 	out := bytes.NewBuffer(nil)
diff --git a/testutil/fakestorage/fixtures.go b/testutil/fakestorage/fixtures.go
index ca0f2b3..9e55ea8 100644
--- a/testutil/fakestorage/fixtures.go
+++ b/testutil/fakestorage/fixtures.go
@@ -10,7 +10,7 @@
 	"testing"
 
 	"github.com/moby/go-archive"
-	"github.com/moby/moby/api/types/build"
+	"github.com/moby/moby/client"
 	"gotest.tools/v3/assert"
 )
 
@@ -76,7 +76,7 @@
 	assert.NilError(t, err)
 
 	apiClient := testEnv.APIClient()
-	resp, err := apiClient.ImageBuild(context.Background(), reader, build.ImageBuildOptions{
+	resp, err := apiClient.ImageBuild(context.Background(), reader, client.ImageBuildOptions{
 		Remove:      true,
 		ForceRemove: true,
 		Tags:        []string{"httpserver"},
diff --git a/testutil/fakestorage/storage.go b/testutil/fakestorage/storage.go
index a716e8b..f8d5e3b 100644
--- a/testutil/fakestorage/storage.go
+++ b/testutil/fakestorage/storage.go
@@ -11,7 +11,6 @@
 	"strings"
 	"testing"
 
-	"github.com/moby/moby/api/types/build"
 	containertypes "github.com/moby/moby/api/types/container"
 	"github.com/moby/moby/client"
 	"github.com/moby/moby/v2/testutil"
@@ -145,7 +144,7 @@
 COPY . /static`); err != nil {
 		t.Fatal(err)
 	}
-	resp, err := c.ImageBuild(context.Background(), ctx.AsTarReader(t), build.ImageBuildOptions{
+	resp, err := c.ImageBuild(context.Background(), ctx.AsTarReader(t), client.ImageBuildOptions{
 		NoCache: true,
 		Tags:    []string{imgName},
 	})
diff --git a/vendor/github.com/moby/moby/api/types/build/build.go b/vendor/github.com/moby/moby/api/types/build/build.go
index a798802..db98397 100644
--- a/vendor/github.com/moby/moby/api/types/build/build.go
+++ b/vendor/github.com/moby/moby/api/types/build/build.go
@@ -1,12 +1,5 @@
 package build
 
-import (
-	"io"
-
-	"github.com/moby/moby/api/types/container"
-	"github.com/moby/moby/api/types/registry"
-)
-
 // BuilderVersion sets the version of underlying builder to use
 type BuilderVersion string
 
@@ -21,71 +14,3 @@
 type Result struct {
 	ID string
 }
-
-// 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        []*container.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]registry.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 underlying 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
-	// Outputs defines configurations for exporting build results. Only supported
-	// in BuildKit mode
-	Outputs []ImageBuildOutput
-}
-
-// ImageBuildOutput defines configuration for exporting a build result
-type ImageBuildOutput struct {
-	Type  string
-	Attrs map[string]string
-}
-
-// ImageBuildResponse holds information
-// returned by a server after building
-// an image.
-type ImageBuildResponse struct {
-	Body   io.ReadCloser
-	OSType string
-}
diff --git a/vendor/github.com/moby/moby/client/client_interfaces.go b/vendor/github.com/moby/moby/client/client_interfaces.go
index f75f8f7..448ecd9 100644
--- a/vendor/github.com/moby/moby/client/client_interfaces.go
+++ b/vendor/github.com/moby/moby/client/client_interfaces.go
@@ -106,7 +106,7 @@
 
 // ImageAPIClient defines API client methods for the images
 type ImageAPIClient interface {
-	ImageBuild(ctx context.Context, context io.Reader, options build.ImageBuildOptions) (build.ImageBuildResponse, error)
+	ImageBuild(ctx context.Context, context io.Reader, options ImageBuildOptions) (ImageBuildResponse, error)
 	BuildCachePrune(ctx context.Context, opts BuildCachePruneOptions) (*build.CachePruneReport, error)
 	BuildCancel(ctx context.Context, id string) error
 	ImageCreate(ctx context.Context, parentReference string, options ImageCreateOptions) (io.ReadCloser, error)
diff --git a/vendor/github.com/moby/moby/client/image_build.go b/vendor/github.com/moby/moby/client/image_build.go
index 94ec6c3..5c1634d 100644
--- a/vendor/github.com/moby/moby/client/image_build.go
+++ b/vendor/github.com/moby/moby/client/image_build.go
@@ -10,7 +10,6 @@
 	"strconv"
 	"strings"
 
-	"github.com/moby/moby/api/types/build"
 	"github.com/moby/moby/api/types/container"
 	"github.com/moby/moby/api/types/network"
 )
@@ -18,15 +17,15 @@
 // ImageBuild sends a request to the daemon to build images.
 // The Body in the response implements an [io.ReadCloser] and it's up to the caller to
 // close it.
-func (cli *Client) ImageBuild(ctx context.Context, buildContext io.Reader, options build.ImageBuildOptions) (build.ImageBuildResponse, error) {
+func (cli *Client) ImageBuild(ctx context.Context, buildContext io.Reader, options ImageBuildOptions) (ImageBuildResponse, error) {
 	query, err := cli.imageBuildOptionsToQuery(ctx, options)
 	if err != nil {
-		return build.ImageBuildResponse{}, err
+		return ImageBuildResponse{}, err
 	}
 
 	buf, err := json.Marshal(options.AuthConfigs)
 	if err != nil {
-		return build.ImageBuildResponse{}, err
+		return ImageBuildResponse{}, err
 	}
 
 	headers := http.Header{}
@@ -35,16 +34,16 @@
 
 	resp, err := cli.postRaw(ctx, "/build", query, buildContext, headers)
 	if err != nil {
-		return build.ImageBuildResponse{}, err
+		return ImageBuildResponse{}, err
 	}
 
-	return build.ImageBuildResponse{
+	return ImageBuildResponse{
 		Body:   resp.Body,
 		OSType: resp.Header.Get("Ostype"),
 	}, nil
 }
 
-func (cli *Client) imageBuildOptionsToQuery(ctx context.Context, options build.ImageBuildOptions) (url.Values, error) {
+func (cli *Client) imageBuildOptionsToQuery(ctx context.Context, options ImageBuildOptions) (url.Values, error) {
 	query := url.Values{}
 	if len(options.Tags) > 0 {
 		query["t"] = options.Tags
diff --git a/vendor/github.com/moby/moby/client/image_build_opts.go b/vendor/github.com/moby/moby/client/image_build_opts.go
new file mode 100644
index 0000000..df51db0
--- /dev/null
+++ b/vendor/github.com/moby/moby/client/image_build_opts.go
@@ -0,0 +1,77 @@
+package client
+
+import (
+	"io"
+
+	"github.com/moby/moby/api/types/build"
+	"github.com/moby/moby/api/types/container"
+	"github.com/moby/moby/api/types/registry"
+)
+
+// 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        []*container.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]registry.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 underlying builder to use
+	Version build.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
+	// Outputs defines configurations for exporting build results. Only supported
+	// in BuildKit mode
+	Outputs []ImageBuildOutput
+}
+
+// ImageBuildOutput defines configuration for exporting a build result
+type ImageBuildOutput struct {
+	Type  string
+	Attrs map[string]string
+}
+
+// ImageBuildResponse holds information
+// returned by a server after building
+// an image.
+type ImageBuildResponse struct {
+	Body   io.ReadCloser
+	OSType string
+}
