# Resource Groups ## List Resource Groups `client.IAM.ResourceGroups.List(ctx, params) (*SinglePage[ResourceGroupListResponse], error)` **get** `/accounts/{account_id}/iam/resource_groups` List all the resource groups for an account. ### Parameters - `params ResourceGroupListParams` - `AccountID param.Field[string]` Path param: Account identifier tag. - `ID param.Field[string]` Query param: ID of the resource group to be fetched. - `Name param.Field[string]` Query param: Name of the resource group to be fetched. ### Returns - `type ResourceGroupListResponse struct{…}` A group of scoped resources. - `ID string` Identifier of the resource group. - `Scope []ResourceGroupListResponseScope` The scope associated to the resource group - `Key string` This is a combination of pre-defined resource name and identifier (like Account ID etc.) - `Objects []ResourceGroupListResponseScopeObject` A list of scope objects for additional context. - `Key string` This is a combination of pre-defined resource name and identifier (like Zone ID etc.) - `Meta ResourceGroupListResponseMeta` Attributes associated to the resource group. - `Key string` - `Value string` - `Name string` Name of the resource group. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/iam" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) page, err := client.IAM.ResourceGroups.List(context.TODO(), iam.ResourceGroupListParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", page) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": [ { "id": "6d7f2f5f5b1d4a0e9081fdc98d432fd1", "scope": [ { "key": "com.cloudflare.api.account.eb78d65290b24279ba6f44721b3ea3c4", "objects": [ { "key": "com.cloudflare.api.account.zone.23f8d65290b24279ba6f44721b3eaad5" } ] } ], "meta": { "key": "key", "value": "value" }, "name": "com.cloudflare.api.account.eb78d65290b24279ba6f44721b3ea3c4" } ] } ``` ## Resource Group Details `client.IAM.ResourceGroups.Get(ctx, resourceGroupID, query) (*ResourceGroupGetResponse, error)` **get** `/accounts/{account_id}/iam/resource_groups/{resource_group_id}` Get information about a specific resource group in an account. ### Parameters - `resourceGroupID string` Resource Group identifier tag. - `query ResourceGroupGetParams` - `AccountID param.Field[string]` Account identifier tag. ### Returns - `type ResourceGroupGetResponse struct{…}` A group of scoped resources. - `ID string` Identifier of the resource group. - `Scope []ResourceGroupGetResponseScope` The scope associated to the resource group - `Key string` This is a combination of pre-defined resource name and identifier (like Account ID etc.) - `Objects []ResourceGroupGetResponseScopeObject` A list of scope objects for additional context. - `Key string` This is a combination of pre-defined resource name and identifier (like Zone ID etc.) - `Meta ResourceGroupGetResponseMeta` Attributes associated to the resource group. - `Key string` - `Value string` - `Name string` Name of the resource group. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/iam" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) resourceGroup, err := client.IAM.ResourceGroups.Get( context.TODO(), "023e105f4ecef8ad9ca31a8372d0c353", iam.ResourceGroupGetParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", resourceGroup.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "6d7f2f5f5b1d4a0e9081fdc98d432fd1", "scope": [ { "key": "com.cloudflare.api.account.eb78d65290b24279ba6f44721b3ea3c4", "objects": [ { "key": "com.cloudflare.api.account.zone.23f8d65290b24279ba6f44721b3eaad5" } ] } ], "meta": { "key": "key", "value": "value" }, "name": "com.cloudflare.api.account.eb78d65290b24279ba6f44721b3ea3c4" } } ``` ## Create Resource Group `client.IAM.ResourceGroups.New(ctx, params) (*ResourceGroupNewResponse, error)` **post** `/accounts/{account_id}/iam/resource_groups` Create a new Resource Group under the specified account. ### Parameters - `params ResourceGroupNewParams` - `AccountID param.Field[string]` Path param: Account identifier tag. - `Name param.Field[string]` Body param: Name of the resource group - `Scope param.Field[ResourceGroupNewParamsScope]` Body param: A scope is a combination of scope objects which provides additional context. - `Key string` This is a combination of pre-defined resource name and identifier (like Account ID etc.) - `Objects []ResourceGroupNewParamsScopeObject` A list of scope objects for additional context. The number of Scope objects should not be zero. - `Key string` This is a combination of pre-defined resource name and identifier (like Zone ID etc.) ### Returns - `type ResourceGroupNewResponse struct{…}` A group of scoped resources. - `ID string` Identifier of the resource group. - `Scope []ResourceGroupNewResponseScope` The scope associated to the resource group - `Key string` This is a combination of pre-defined resource name and identifier (like Account ID etc.) - `Objects []ResourceGroupNewResponseScopeObject` A list of scope objects for additional context. - `Key string` This is a combination of pre-defined resource name and identifier (like Zone ID etc.) - `Meta ResourceGroupNewResponseMeta` Attributes associated to the resource group. - `Key string` - `Value string` - `Name string` Name of the resource group. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/iam" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) resourceGroup, err := client.IAM.ResourceGroups.New(context.TODO(), iam.ResourceGroupNewParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), Name: cloudflare.F("NewResourceGroup"), Scope: cloudflare.F(iam.ResourceGroupNewParamsScope{ Key: cloudflare.F("com.cloudflare.api.account.eb78d65290b24279ba6f44721b3ea3c4"), Objects: cloudflare.F([]iam.ResourceGroupNewParamsScopeObject{iam.ResourceGroupNewParamsScopeObject{ Key: cloudflare.F("com.cloudflare.api.account.zone.23f8d65290b24279ba6f44721b3eaad5"), }}), }), }) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", resourceGroup.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "6d7f2f5f5b1d4a0e9081fdc98d432fd1", "scope": [ { "key": "com.cloudflare.api.account.eb78d65290b24279ba6f44721b3ea3c4", "objects": [ { "key": "com.cloudflare.api.account.zone.23f8d65290b24279ba6f44721b3eaad5" } ] } ], "meta": { "key": "key", "value": "value" }, "name": "com.cloudflare.api.account.eb78d65290b24279ba6f44721b3ea3c4" } } ``` ## Update Resource Group `client.IAM.ResourceGroups.Update(ctx, resourceGroupID, params) (*ResourceGroupUpdateResponse, error)` **put** `/accounts/{account_id}/iam/resource_groups/{resource_group_id}` Modify an existing resource group. ### Parameters - `resourceGroupID string` Resource Group identifier tag. - `params ResourceGroupUpdateParams` - `AccountID param.Field[string]` Path param: Account identifier tag. - `Name param.Field[string]` Body param: Name of the resource group - `Scope param.Field[ResourceGroupUpdateParamsScope]` Body param: A scope is a combination of scope objects which provides additional context. - `Key string` This is a combination of pre-defined resource name and identifier (like Account ID etc.) - `Objects []ResourceGroupUpdateParamsScopeObject` A list of scope objects for additional context. The number of Scope objects should not be zero. - `Key string` This is a combination of pre-defined resource name and identifier (like Zone ID etc.) ### Returns - `type ResourceGroupUpdateResponse struct{…}` A group of scoped resources. - `ID string` Identifier of the resource group. - `Scope []ResourceGroupUpdateResponseScope` The scope associated to the resource group - `Key string` This is a combination of pre-defined resource name and identifier (like Account ID etc.) - `Objects []ResourceGroupUpdateResponseScopeObject` A list of scope objects for additional context. - `Key string` This is a combination of pre-defined resource name and identifier (like Zone ID etc.) - `Meta ResourceGroupUpdateResponseMeta` Attributes associated to the resource group. - `Key string` - `Value string` - `Name string` Name of the resource group. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/iam" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) resourceGroup, err := client.IAM.ResourceGroups.Update( context.TODO(), "023e105f4ecef8ad9ca31a8372d0c353", iam.ResourceGroupUpdateParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", resourceGroup.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "6d7f2f5f5b1d4a0e9081fdc98d432fd1", "scope": [ { "key": "com.cloudflare.api.account.eb78d65290b24279ba6f44721b3ea3c4", "objects": [ { "key": "com.cloudflare.api.account.zone.23f8d65290b24279ba6f44721b3eaad5" } ] } ], "meta": { "key": "key", "value": "value" }, "name": "com.cloudflare.api.account.eb78d65290b24279ba6f44721b3ea3c4" } } ``` ## Remove Resource Group `client.IAM.ResourceGroups.Delete(ctx, resourceGroupID, body) (*ResourceGroupDeleteResponse, error)` **delete** `/accounts/{account_id}/iam/resource_groups/{resource_group_id}` Remove a resource group from an account. ### Parameters - `resourceGroupID string` Resource Group identifier tag. - `body ResourceGroupDeleteParams` - `AccountID param.Field[string]` Account identifier tag. ### Returns - `type ResourceGroupDeleteResponse struct{…}` - `ID string` Identifier ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/iam" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIToken("Sn3lZJTBX6kkg7OdcBUAxOO963GEIyGQqnFTOFYY"), ) resourceGroup, err := client.IAM.ResourceGroups.Delete( context.TODO(), "023e105f4ecef8ad9ca31a8372d0c353", iam.ResourceGroupDeleteParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", resourceGroup.ID) } ``` #### Response ```json { "errors": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "messages": [ { "code": 1000, "message": "message", "documentation_url": "documentation_url", "source": { "pointer": "pointer" } } ], "success": true, "result": { "id": "023e105f4ecef8ad9ca31a8372d0c353" } } ```