# Memberships ## List Memberships `client.Memberships.List(ctx, query) (*V4PagePaginationArray[Membership], error)` **get** `/memberships` List memberships of accounts the user can access. ### Parameters - `query MembershipListParams` - `Account param.Field[MembershipListParamsAccount]` - `Name string` Account name - `Direction param.Field[MembershipListParamsDirection]` Direction to order memberships. - `const MembershipListParamsDirectionAsc MembershipListParamsDirection = "asc"` - `const MembershipListParamsDirectionDesc MembershipListParamsDirection = "desc"` - `Name param.Field[string]` Account name - `Order param.Field[MembershipListParamsOrder]` Field to order memberships by. - `const MembershipListParamsOrderID MembershipListParamsOrder = "id"` - `const MembershipListParamsOrderAccountName MembershipListParamsOrder = "account.name"` - `const MembershipListParamsOrderStatus MembershipListParamsOrder = "status"` - `Page param.Field[float64]` Page number of paginated results. - `PerPage param.Field[float64]` Number of memberships per page. - `Status param.Field[MembershipListParamsStatus]` Status of this membership. - `const MembershipListParamsStatusAccepted MembershipListParamsStatus = "accepted"` - `const MembershipListParamsStatusPending MembershipListParamsStatus = "pending"` - `const MembershipListParamsStatusRejected MembershipListParamsStatus = "rejected"` ### Returns - `type Membership struct{…}` - `ID string` Membership identifier tag. - `Account Account` - `ID string` Identifier - `Name string` Account name - `Type AccountType` - `const AccountTypeStandard AccountType = "standard"` - `const AccountTypeEnterprise AccountType = "enterprise"` - `CreatedOn Time` Timestamp for the creation of the account - `ManagedBy AccountManagedBy` Parent container details - `ParentOrgID string` ID of the parent Organization, if one exists - `ParentOrgName string` Name of the parent Organization, if one exists - `Settings AccountSettings` Account settings - `AbuseContactEmail string` Sets an abuse contact email to notify for abuse reports. - `EnforceTwofactor bool` Indicates whether membership in this account requires that Two-Factor Authentication is enabled - `APIAccessEnabled bool` Enterprise only. Indicates whether or not API access is enabled specifically for this user on a given account. - `Permissions MembershipPermissions` All access permissions for the user at the account. - `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` - `Roles []string` List of role names the membership has for this account. - `Status MembershipStatus` Status of this membership. - `const MembershipStatusAccepted MembershipStatus = "accepted"` - `const MembershipStatusPending MembershipStatus = "pending"` - `const MembershipStatusRejected MembershipStatus = "rejected"` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/memberships" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"), option.WithAPIEmail("user@example.com"), ) page, err := client.Memberships.List(context.TODO(), memberships.MembershipListParams{ }) 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": "4536bcfad5faccb111b47003c79917fa", "account": { "id": "023e105f4ecef8ad9ca31a8372d0c353", "name": "Demo Account", "type": "standard", "created_on": "2014-03-01T12:21:02.0000Z", "managed_by": { "parent_org_id": "4536bcfad5faccb111b47003c79917fa", "parent_org_name": "Demo Parent Organization" }, "settings": { "abuse_contact_email": "abuse_contact_email", "enforce_twofactor": true } }, "api_access_enabled": true, "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 } }, "roles": [ "Account Administrator" ], "status": "accepted" } ], "result_info": { "count": 1, "page": 1, "per_page": 20, "total_count": 2000 } } ``` ## Membership Details `client.Memberships.Get(ctx, membershipID) (*MembershipGetResponse, error)` **get** `/memberships/{membership_id}` Get a specific membership. ### Parameters - `membershipID string` Membership identifier tag. ### Returns - `type MembershipGetResponse struct{…}` - `ID string` Membership identifier tag. - `Account Account` - `ID string` Identifier - `Name string` Account name - `Type AccountType` - `const AccountTypeStandard AccountType = "standard"` - `const AccountTypeEnterprise AccountType = "enterprise"` - `CreatedOn Time` Timestamp for the creation of the account - `ManagedBy AccountManagedBy` Parent container details - `ParentOrgID string` ID of the parent Organization, if one exists - `ParentOrgName string` Name of the parent Organization, if one exists - `Settings AccountSettings` Account settings - `AbuseContactEmail string` Sets an abuse contact email to notify for abuse reports. - `EnforceTwofactor bool` Indicates whether membership in this account requires that Two-Factor Authentication is enabled - `APIAccessEnabled bool` Enterprise only. Indicates whether or not API access is enabled specifically for this user on a given account. - `Permissions MembershipGetResponsePermissions` All access permissions for the user at the account. - `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` - `Policies []MembershipGetResponsePolicy` Access policy for the membership - `ID string` Policy identifier. - `Access MembershipGetResponsePoliciesAccess` Allow or deny operations against the resources. - `const MembershipGetResponsePoliciesAccessAllow MembershipGetResponsePoliciesAccess = "allow"` - `const MembershipGetResponsePoliciesAccessDeny MembershipGetResponsePoliciesAccess = "deny"` - `PermissionGroups []MembershipGetResponsePoliciesPermissionGroup` A set of permission groups that are specified to the policy. - `ID string` Identifier of the permission group. - `Meta MembershipGetResponsePoliciesPermissionGroupsMeta` Attributes associated to the permission group. - `Key string` - `Value string` - `Name string` Name of the permission group. - `ResourceGroups []MembershipGetResponsePoliciesResourceGroup` A list of resource groups that the policy applies to. - `ID string` Identifier of the resource group. - `Scope []MembershipGetResponsePoliciesResourceGroupsScope` 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 []MembershipGetResponsePoliciesResourceGroupsScopeObject` 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 MembershipGetResponsePoliciesResourceGroupsMeta` Attributes associated to the resource group. - `Key string` - `Value string` - `Name string` Name of the resource group. - `Roles []string` List of role names the membership has for this account. - `Status MembershipGetResponseStatus` Status of this membership. - `const MembershipGetResponseStatusAccepted MembershipGetResponseStatus = "accepted"` - `const MembershipGetResponseStatusPending MembershipGetResponseStatus = "pending"` - `const MembershipGetResponseStatusRejected MembershipGetResponseStatus = "rejected"` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"), option.WithAPIEmail("user@example.com"), ) membership, err := client.Memberships.Get(context.TODO(), "4536bcfad5faccb111b47003c79917fa") if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", membership.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": "4536bcfad5faccb111b47003c79917fa", "account": { "id": "023e105f4ecef8ad9ca31a8372d0c353", "name": "Demo Account", "type": "standard", "created_on": "2014-03-01T12:21:02.0000Z", "managed_by": { "parent_org_id": "4536bcfad5faccb111b47003c79917fa", "parent_org_name": "Demo Parent Organization" }, "settings": { "abuse_contact_email": "abuse_contact_email", "enforce_twofactor": true } }, "api_access_enabled": true, "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 } }, "policies": [ { "id": "f267e341f3dd4697bd3b9f71dd96247f", "access": "allow", "permission_groups": [ { "id": "c8fed203ed3043cba015a93ad1616f1f", "meta": { "key": "key", "value": "value" }, "name": "Zone Read" }, { "id": "82e64a83756745bbbb1c9c2701bf816b", "meta": { "key": "key", "value": "value" }, "name": "Magic Network Monitoring" } ], "resource_groups": [ { "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" } ] } ], "roles": [ "Account Administrator" ], "status": "accepted" } } ``` ## Update Membership `client.Memberships.Update(ctx, membershipID, body) (*MembershipUpdateResponse, error)` **put** `/memberships/{membership_id}` Accept or reject this account invitation. ### Parameters - `membershipID string` Membership identifier tag. - `body MembershipUpdateParams` - `Status param.Field[MembershipUpdateParamsStatus]` Whether to accept or reject this account invitation. - `const MembershipUpdateParamsStatusAccepted MembershipUpdateParamsStatus = "accepted"` - `const MembershipUpdateParamsStatusRejected MembershipUpdateParamsStatus = "rejected"` ### Returns - `type MembershipUpdateResponse struct{…}` - `ID string` Membership identifier tag. - `Account Account` - `ID string` Identifier - `Name string` Account name - `Type AccountType` - `const AccountTypeStandard AccountType = "standard"` - `const AccountTypeEnterprise AccountType = "enterprise"` - `CreatedOn Time` Timestamp for the creation of the account - `ManagedBy AccountManagedBy` Parent container details - `ParentOrgID string` ID of the parent Organization, if one exists - `ParentOrgName string` Name of the parent Organization, if one exists - `Settings AccountSettings` Account settings - `AbuseContactEmail string` Sets an abuse contact email to notify for abuse reports. - `EnforceTwofactor bool` Indicates whether membership in this account requires that Two-Factor Authentication is enabled - `APIAccessEnabled bool` Enterprise only. Indicates whether or not API access is enabled specifically for this user on a given account. - `Permissions MembershipUpdateResponsePermissions` All access permissions for the user at the account. - `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` - `Policies []MembershipUpdateResponsePolicy` Access policy for the membership - `ID string` Policy identifier. - `Access MembershipUpdateResponsePoliciesAccess` Allow or deny operations against the resources. - `const MembershipUpdateResponsePoliciesAccessAllow MembershipUpdateResponsePoliciesAccess = "allow"` - `const MembershipUpdateResponsePoliciesAccessDeny MembershipUpdateResponsePoliciesAccess = "deny"` - `PermissionGroups []MembershipUpdateResponsePoliciesPermissionGroup` A set of permission groups that are specified to the policy. - `ID string` Identifier of the permission group. - `Meta MembershipUpdateResponsePoliciesPermissionGroupsMeta` Attributes associated to the permission group. - `Key string` - `Value string` - `Name string` Name of the permission group. - `ResourceGroups []MembershipUpdateResponsePoliciesResourceGroup` A list of resource groups that the policy applies to. - `ID string` Identifier of the resource group. - `Scope []MembershipUpdateResponsePoliciesResourceGroupsScope` 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 []MembershipUpdateResponsePoliciesResourceGroupsScopeObject` 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 MembershipUpdateResponsePoliciesResourceGroupsMeta` Attributes associated to the resource group. - `Key string` - `Value string` - `Name string` Name of the resource group. - `Roles []string` List of role names the membership has for this account. - `Status MembershipUpdateResponseStatus` Status of this membership. - `const MembershipUpdateResponseStatusAccepted MembershipUpdateResponseStatus = "accepted"` - `const MembershipUpdateResponseStatusPending MembershipUpdateResponseStatus = "pending"` - `const MembershipUpdateResponseStatusRejected MembershipUpdateResponseStatus = "rejected"` ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/memberships" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"), option.WithAPIEmail("user@example.com"), ) membership, err := client.Memberships.Update( context.TODO(), "4536bcfad5faccb111b47003c79917fa", memberships.MembershipUpdateParams{ Status: cloudflare.F(memberships.MembershipUpdateParamsStatusAccepted), }, ) if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", membership.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": "4536bcfad5faccb111b47003c79917fa", "account": { "id": "023e105f4ecef8ad9ca31a8372d0c353", "name": "Demo Account", "type": "standard", "created_on": "2014-03-01T12:21:02.0000Z", "managed_by": { "parent_org_id": "4536bcfad5faccb111b47003c79917fa", "parent_org_name": "Demo Parent Organization" }, "settings": { "abuse_contact_email": "abuse_contact_email", "enforce_twofactor": true } }, "api_access_enabled": true, "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 } }, "policies": [ { "id": "f267e341f3dd4697bd3b9f71dd96247f", "access": "allow", "permission_groups": [ { "id": "c8fed203ed3043cba015a93ad1616f1f", "meta": { "key": "key", "value": "value" }, "name": "Zone Read" }, { "id": "82e64a83756745bbbb1c9c2701bf816b", "meta": { "key": "key", "value": "value" }, "name": "Magic Network Monitoring" } ], "resource_groups": [ { "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" } ] } ], "roles": [ "Account Administrator" ], "status": "accepted" } } ``` ## Delete Membership `client.Memberships.Delete(ctx, membershipID) (*MembershipDeleteResponse, error)` **delete** `/memberships/{membership_id}` Remove the associated member from an account. ### Parameters - `membershipID string` Membership identifier tag. ### Returns - `type MembershipDeleteResponse struct{…}` - `ID string` Membership identifier tag. ### Example ```go package main import ( "context" "fmt" "github.com/cloudflare/cloudflare-go" "github.com/cloudflare/cloudflare-go/option" ) func main() { client := cloudflare.NewClient( option.WithAPIKey("144c9defac04969c7bfad8efaa8ea194"), option.WithAPIEmail("user@example.com"), ) membership, err := client.Memberships.Delete(context.TODO(), "4536bcfad5faccb111b47003c79917fa") if err != nil { panic(err.Error()) } fmt.Printf("%+v\n", membership.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": "4536bcfad5faccb111b47003c79917fa" } } ``` ## Domain Types ### Membership - `type Membership struct{…}` - `ID string` Membership identifier tag. - `Account Account` - `ID string` Identifier - `Name string` Account name - `Type AccountType` - `const AccountTypeStandard AccountType = "standard"` - `const AccountTypeEnterprise AccountType = "enterprise"` - `CreatedOn Time` Timestamp for the creation of the account - `ManagedBy AccountManagedBy` Parent container details - `ParentOrgID string` ID of the parent Organization, if one exists - `ParentOrgName string` Name of the parent Organization, if one exists - `Settings AccountSettings` Account settings - `AbuseContactEmail string` Sets an abuse contact email to notify for abuse reports. - `EnforceTwofactor bool` Indicates whether membership in this account requires that Two-Factor Authentication is enabled - `APIAccessEnabled bool` Enterprise only. Indicates whether or not API access is enabled specifically for this user on a given account. - `Permissions MembershipPermissions` All access permissions for the user at the account. - `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` - `Roles []string` List of role names the membership has for this account. - `Status MembershipStatus` Status of this membership. - `const MembershipStatusAccepted MembershipStatus = "accepted"` - `const MembershipStatusPending MembershipStatus = "pending"` - `const MembershipStatusRejected MembershipStatus = "rejected"`