# Roles ## List Roles `client.Accounts.Roles.List(ctx, params) (*V4PagePaginationArray[Role], error)` **get** `/accounts/{account_id}/roles` Get all available roles for an account. ### Parameters - `params RoleListParams` - `AccountID param.Field[string]` Path param: Account identifier tag. - `Page param.Field[float64]` Query param: Page number of paginated results. - `PerPage param.Field[float64]` Query param: Number of roles per page. ### Returns - `type Role struct{…}` - `ID string` Role identifier tag. - `Description string` Description of role's permissions. - `Name string` Role name. - `Permissions RolePermissions` - `Analytics PermissionGrant` - `Read bool` - `Write bool` - `Billing PermissionGrant` - `CachePurge PermissionGrant` - `DNS PermissionGrant` - `DNSRecords PermissionGrant` - `LB PermissionGrant` - `Logs PermissionGrant` - `Organization PermissionGrant` - `SSL PermissionGrant` - `WAF PermissionGrant` - `ZoneSettings PermissionGrant` - `Zones PermissionGrant` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/accounts" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"), option.WithAPIEmail("user@example.com"), ) page, err := client.Accounts.Roles.List(context.TODO(), accounts.RoleListParams{ 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": "3536bcfad5faccb999b47003c79917fb", "description": "Administrative access to the entire Account", "name": "Account Administrator", "permissions": { "analytics": { "read": true, "write": false }, "billing": { "read": true, "write": false }, "cache_purge": { "read": true, "write": false }, "dns": { "read": true, "write": false }, "dns_records": { "read": true, "write": false }, "lb": { "read": true, "write": false }, "logs": { "read": true, "write": false }, "organization": { "read": true, "write": false }, "ssl": { "read": true, "write": false }, "waf": { "read": true, "write": false }, "zone_settings": { "read": true, "write": false }, "zones": { "read": true, "write": true } } } ], "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000 } } ``` ## Role Details `client.Accounts.Roles.Get(ctx, roleID, query) (*Role, error)` **get** `/accounts/{account_id}/roles/{role_id}` Get information about a specific role for an account. ### Parameters - `roleID string` Role identifier tag. - `query RoleGetParams` - `AccountID param.Field[string]` Account identifier tag. ### Returns - `type Role struct{…}` - `ID string` Role identifier tag. - `Description string` Description of role's permissions. - `Name string` Role name. - `Permissions RolePermissions` - `Analytics PermissionGrant` - `Read bool` - `Write bool` - `Billing PermissionGrant` - `CachePurge PermissionGrant` - `DNS PermissionGrant` - `DNSRecords PermissionGrant` - `LB PermissionGrant` - `Logs PermissionGrant` - `Organization PermissionGrant` - `SSL PermissionGrant` - `WAF PermissionGrant` - `ZoneSettings PermissionGrant` - `Zones PermissionGrant` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/accounts" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"), option.WithAPIEmail("user@example.com"), ) role, err := client.Accounts.Roles.Get( context.TODO(), "3536bcfad5faccb999b47003c79917fb", accounts.RoleGetParams{ AccountID: cloudflare.F("023e105f4ecef8ad9ca31a8372d0c353"), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", role.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": "3536bcfad5faccb999b47003c79917fb", "description": "Administrative access to the entire Account", "name": "Account Administrator", "permissions": { "analytics": { "read": true, "write": false }, "billing": { "read": true, "write": false }, "cache_purge": { "read": true, "write": false }, "dns": { "read": true, "write": false }, "dns_records": { "read": true, "write": false }, "lb": { "read": true, "write": false }, "logs": { "read": true, "write": false }, "organization": { "read": true, "write": false }, "ssl": { "read": true, "write": false }, "waf": { "read": true, "write": false }, "zone_settings": { "read": true, "write": false }, "zones": { "read": true, "write": true } } } } ```