# Deployment Groups ## List deployment groups `client.ZeroTrust.Devices.DeploymentGroups.List(ctx, params) (*V4PagePaginationArray[DeploymentGroup], error)` **get** `/accounts/{account_id}/devices/deployment-groups` Lists all deployment groups for an account. Use deployment groups to assign target WARP client versions to specific devices. This endpoint is in Beta. ### Parameters - `params DeviceDeploymentGroupListParams` - `AccountID param.Field[string]` Path param - `Page param.Field[int64]` Query param: The page number to return. - `PerPage param.Field[int64]` Query param: The maximum number of deployment groups to return per page. ### Returns - `type DeploymentGroup struct{…}` - `ID string` The ID of the deployment group. - `CreatedAt string` The RFC3339Nano timestamp when the deployment group was created. - `Name string` A user-friendly name for the deployment group. - `UpdatedAt string` The RFC3339Nano timestamp when the deployment group was last updated. - `VersionConfig []DeploymentGroupVersionConfig` Contains version configurations for different target environments. - `TargetEnvironment string` The target environment for the client version (e.g., windows, macos). - `Version string` The specific client version to deploy. - `PolicyIDs []string` Contains a list of policy IDs assigned to this deployment group. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/zero_trust" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) page, err := client.ZeroTrust.Devices.DeploymentGroups.List(context.TODO(), zero_trust.DeviceDeploymentGroupListParams{ AccountID: cloudflare.F("account_id"), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", page) } ``` #### Response ```json { "errors": [ { "code": 0, "message": "message" } ], "messages": [ { "code": 0, "message": "message" } ], "result": [ { "id": "550e8400-e29b-41d4-a716-446655440000", "created_at": "2026-02-14T13:17:00.123456789Z", "name": "Engineering Ring 0", "updated_at": "2026-02-14T13:17:00.123456789Z", "version_config": [ { "target_environment": "windows", "version": "2026.5.234.0" } ], "policy_ids": [ "policy-uuid-1", "policy-uuid-2" ] } ], "result_info": { "count": 1, "page": 1, "per_page": 10, "total_count": 10, "total_pages": 1 }, "success": true } ``` ## Get deployment group `client.ZeroTrust.Devices.DeploymentGroups.Get(ctx, groupID, query) (*DeploymentGroup, error)` **get** `/accounts/{account_id}/devices/deployment-groups/{group_id}` Fetches a single deployment group by its ID. This endpoint is in Beta. ### Parameters - `groupID string` - `query DeviceDeploymentGroupGetParams` - `AccountID param.Field[string]` ### Returns - `type DeploymentGroup struct{…}` - `ID string` The ID of the deployment group. - `CreatedAt string` The RFC3339Nano timestamp when the deployment group was created. - `Name string` A user-friendly name for the deployment group. - `UpdatedAt string` The RFC3339Nano timestamp when the deployment group was last updated. - `VersionConfig []DeploymentGroupVersionConfig` Contains version configurations for different target environments. - `TargetEnvironment string` The target environment for the client version (e.g., windows, macos). - `Version string` The specific client version to deploy. - `PolicyIDs []string` Contains a list of policy IDs assigned to this deployment group. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/zero_trust" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) deploymentGroup, err := client.ZeroTrust.Devices.DeploymentGroups.Get( context.TODO(), "group_id", zero_trust.DeviceDeploymentGroupGetParams{ AccountID: cloudflare.F("account_id"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", deploymentGroup.ID) } ``` #### Response ```json { "errors": [ { "code": 0, "message": "message" } ], "messages": [ { "code": 0, "message": "message" } ], "result": { "id": "550e8400-e29b-41d4-a716-446655440000", "created_at": "2026-02-14T13:17:00.123456789Z", "name": "Engineering Ring 0", "updated_at": "2026-02-14T13:17:00.123456789Z", "version_config": [ { "target_environment": "windows", "version": "2026.5.234.0" } ], "policy_ids": [ "policy-uuid-1", "policy-uuid-2" ] }, "success": true } ``` ## Create deployment group `client.ZeroTrust.Devices.DeploymentGroups.New(ctx, params) (*DeploymentGroup, error)` **post** `/accounts/{account_id}/devices/deployment-groups` Creates a new deployment group. Policy IDs must be unique across all deployment groups. This endpoint is in Beta. ### Parameters - `params DeviceDeploymentGroupNewParams` - `AccountID param.Field[string]` Path param - `Name param.Field[string]` Body param: A user-friendly name for the deployment group. - `VersionConfig param.Field[[]DeviceDeploymentGroupNewParamsVersionConfig]` Body param: Contains at least one version configuration. - `TargetEnvironment string` The target environment for the client version (e.g., windows, macos). - `Version string` The specific client version to deploy. - `PolicyIDs param.Field[[]string]` Body param: Contains an optional list of policy IDs assigned to a group. ### Returns - `type DeploymentGroup struct{…}` - `ID string` The ID of the deployment group. - `CreatedAt string` The RFC3339Nano timestamp when the deployment group was created. - `Name string` A user-friendly name for the deployment group. - `UpdatedAt string` The RFC3339Nano timestamp when the deployment group was last updated. - `VersionConfig []DeploymentGroupVersionConfig` Contains version configurations for different target environments. - `TargetEnvironment string` The target environment for the client version (e.g., windows, macos). - `Version string` The specific client version to deploy. - `PolicyIDs []string` Contains a list of policy IDs assigned to this deployment group. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/zero_trust" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) deploymentGroup, err := client.ZeroTrust.Devices.DeploymentGroups.New(context.TODO(), zero_trust.DeviceDeploymentGroupNewParams{ AccountID: cloudflare.F("account_id"), Name: cloudflare.F("Engineering Ring 0"), VersionConfig: cloudflare.F([]zero_trust.DeviceDeploymentGroupNewParamsVersionConfig{zero_trust.DeviceDeploymentGroupNewParamsVersionConfig{ TargetEnvironment: cloudflare.F("windows"), Version: cloudflare.F("2026.5.234.0"), }}), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", deploymentGroup.ID) } ``` #### Response ```json { "errors": [ { "code": 0, "message": "message" } ], "messages": [ { "code": 0, "message": "message" } ], "result": { "id": "550e8400-e29b-41d4-a716-446655440000", "created_at": "2026-02-14T13:17:00.123456789Z", "name": "Engineering Ring 0", "updated_at": "2026-02-14T13:17:00.123456789Z", "version_config": [ { "target_environment": "windows", "version": "2026.5.234.0" } ], "policy_ids": [ "policy-uuid-1", "policy-uuid-2" ] }, "success": true } ``` ## Update deployment group `client.ZeroTrust.Devices.DeploymentGroups.Edit(ctx, groupID, params) (*DeploymentGroup, error)` **patch** `/accounts/{account_id}/devices/deployment-groups/{group_id}` Updates a deployment group. Returns 409 if any newly added policy IDs already belong to another deployment group. This endpoint is in Beta. ### Parameters - `groupID string` - `params DeviceDeploymentGroupEditParams` - `AccountID param.Field[string]` Path param - `Name param.Field[string]` Body param: A user-friendly name for the deployment group. - `PolicyIDs param.Field[[]string]` Body param: Replaces the entire list of policy IDs. - `VersionConfig param.Field[[]DeviceDeploymentGroupEditParamsVersionConfig]` Body param: Replaces the entire version_config array. - `TargetEnvironment string` The target environment for the client version (e.g., windows, macos). - `Version string` The specific client version to deploy. ### Returns - `type DeploymentGroup struct{…}` - `ID string` The ID of the deployment group. - `CreatedAt string` The RFC3339Nano timestamp when the deployment group was created. - `Name string` A user-friendly name for the deployment group. - `UpdatedAt string` The RFC3339Nano timestamp when the deployment group was last updated. - `VersionConfig []DeploymentGroupVersionConfig` Contains version configurations for different target environments. - `TargetEnvironment string` The target environment for the client version (e.g., windows, macos). - `Version string` The specific client version to deploy. - `PolicyIDs []string` Contains a list of policy IDs assigned to this deployment group. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/zero_trust" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) deploymentGroup, err := client.ZeroTrust.Devices.DeploymentGroups.Edit( context.TODO(), "group_id", zero_trust.DeviceDeploymentGroupEditParams{ AccountID: cloudflare.F("account_id"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", deploymentGroup.ID) } ``` #### Response ```json { "errors": [ { "code": 0, "message": "message" } ], "messages": [ { "code": 0, "message": "message" } ], "result": { "id": "550e8400-e29b-41d4-a716-446655440000", "created_at": "2026-02-14T13:17:00.123456789Z", "name": "Engineering Ring 0", "updated_at": "2026-02-14T13:17:00.123456789Z", "version_config": [ { "target_environment": "windows", "version": "2026.5.234.0" } ], "policy_ids": [ "policy-uuid-1", "policy-uuid-2" ] }, "success": true } ``` ## Delete deployment group `client.ZeroTrust.Devices.DeploymentGroups.Delete(ctx, groupID, body) (*DeviceDeploymentGroupDeleteResponse, error)` **delete** `/accounts/{account_id}/devices/deployment-groups/{group_id}` Deletes a deployment group. Associated policies no longer apply and devices stop receiving version targets. This endpoint is in Beta. ### Parameters - `groupID string` - `body DeviceDeploymentGroupDeleteParams` - `AccountID param.Field[string]` ### Returns - `type DeviceDeploymentGroupDeleteResponse struct{…}` - `ID string` The ID of a deleted deployment group. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" "github.com/cloudflare/cloudflare-go/zero_trust" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) deploymentGroup, err := client.ZeroTrust.Devices.DeploymentGroups.Delete( context.TODO(), "group_id", zero_trust.DeviceDeploymentGroupDeleteParams{ AccountID: cloudflare.F("account_id"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", deploymentGroup.ID) } ``` #### Response ```json { "errors": [ { "code": 0, "message": "message" } ], "messages": [ { "code": 0, "message": "message" } ], "result": { "id": "550e8400-e29b-41d4-a716-446655440000" }, "success": true } ``` ## Domain Types ### Deployment Group - `type DeploymentGroup struct{…}` - `ID string` The ID of the deployment group. - `CreatedAt string` The RFC3339Nano timestamp when the deployment group was created. - `Name string` A user-friendly name for the deployment group. - `UpdatedAt string` The RFC3339Nano timestamp when the deployment group was last updated. - `VersionConfig []DeploymentGroupVersionConfig` Contains version configurations for different target environments. - `TargetEnvironment string` The target environment for the client version (e.g., windows, macos). - `Version string` The specific client version to deploy. - `PolicyIDs []string` Contains a list of policy IDs assigned to this deployment group.