diff --git a/accounts/member.go b/accounts/member.go
index b0469201780..c87849e4c3e 100644
--- a/accounts/member.go
+++ b/accounts/member.go
@@ -15,6 +15,7 @@ import (
"github.com/cloudflare/cloudflare-go/v2/internal/requestconfig"
"github.com/cloudflare/cloudflare-go/v2/internal/shared"
"github.com/cloudflare/cloudflare-go/v2/option"
+ "github.com/cloudflare/cloudflare-go/v2/user"
)
// MemberService contains methods and other services that help with interacting
@@ -243,8 +244,6 @@ func (r memberUserJSON) RawJSON() string {
return r.raw
}
-type MemberRoles []string
-
type MemberWithInviteCode struct {
// Membership identifier tag.
ID string `json:"id,required"`
@@ -393,7 +392,7 @@ type MemberListResponse struct {
// Member Name.
Name string `json:"name,required,nullable"`
// Roles assigned to this Member.
- Roles []Role `json:"roles,required"`
+ Roles []MemberListResponseRole `json:"roles,required"`
// A member's status in the organization.
Status MemberListResponseStatus `json:"status,required"`
JSON memberListResponseJSON `json:"-"`
@@ -419,6 +418,37 @@ func (r memberListResponseJSON) RawJSON() string {
return r.raw
}
+type MemberListResponseRole struct {
+ // Role identifier tag.
+ ID string `json:"id,required"`
+ // Description of role's permissions.
+ Description string `json:"description,required"`
+ // Role Name.
+ Name string `json:"name,required"`
+ // Access permissions for this User.
+ Permissions []user.Permission `json:"permissions,required"`
+ JSON memberListResponseRoleJSON `json:"-"`
+}
+
+// memberListResponseRoleJSON contains the JSON metadata for the struct
+// [MemberListResponseRole]
+type memberListResponseRoleJSON struct {
+ ID apijson.Field
+ Description apijson.Field
+ Name apijson.Field
+ Permissions apijson.Field
+ raw string
+ ExtraFields map[string]apijson.Field
+}
+
+func (r *MemberListResponseRole) UnmarshalJSON(data []byte) (err error) {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+func (r memberListResponseRoleJSON) RawJSON() string {
+ return r.raw
+}
+
// A member's status in the organization.
type MemberListResponseStatus string
diff --git a/accounts/role.go b/accounts/role.go
index c19a1652af4..b37b0faa5ee 100644
--- a/accounts/role.go
+++ b/accounts/role.go
@@ -34,7 +34,7 @@ func NewRoleService(opts ...option.RequestOption) (r *RoleService) {
}
// Get all available roles for an account.
-func (r *RoleService) List(ctx context.Context, query RoleListParams, opts ...option.RequestOption) (res *pagination.SinglePage[Role], err error) {
+func (r *RoleService) List(ctx context.Context, query RoleListParams, opts ...option.RequestOption) (res *pagination.SinglePage[RoleListResponse], err error) {
var raw *http.Response
opts = append(r.Options, opts...)
opts = append([]option.RequestOption{option.WithResponseInto(&raw)}, opts...)
@@ -52,7 +52,7 @@ func (r *RoleService) List(ctx context.Context, query RoleListParams, opts ...op
}
// Get all available roles for an account.
-func (r *RoleService) ListAutoPaging(ctx context.Context, query RoleListParams, opts ...option.RequestOption) *pagination.SinglePageAutoPager[Role] {
+func (r *RoleService) ListAutoPaging(ctx context.Context, query RoleListParams, opts ...option.RequestOption) *pagination.SinglePageAutoPager[RoleListResponse] {
return pagination.NewSinglePageAutoPager(r.List(ctx, query, opts...))
}
@@ -100,7 +100,7 @@ func (r PermissionGrantParam) MarshalJSON() (data []byte, err error) {
return apijson.MarshalRoot(r)
}
-type Role struct {
+type RoleListResponse struct {
// Role identifier tag.
ID string `json:"id,required"`
// Description of role's permissions.
@@ -108,12 +108,13 @@ type Role struct {
// Role Name.
Name string `json:"name,required"`
// Access permissions for this User.
- Permissions []user.Permission `json:"permissions,required"`
- JSON roleJSON `json:"-"`
+ Permissions []user.Permission `json:"permissions,required"`
+ JSON roleListResponseJSON `json:"-"`
}
-// roleJSON contains the JSON metadata for the struct [Role]
-type roleJSON struct {
+// roleListResponseJSON contains the JSON metadata for the struct
+// [RoleListResponse]
+type roleListResponseJSON struct {
ID apijson.Field
Description apijson.Field
Name apijson.Field
@@ -122,11 +123,11 @@ type roleJSON struct {
ExtraFields map[string]apijson.Field
}
-func (r *Role) UnmarshalJSON(data []byte) (err error) {
+func (r *RoleListResponse) UnmarshalJSON(data []byte) (err error) {
return apijson.UnmarshalRoot(data, r)
}
-func (r roleJSON) RawJSON() string {
+func (r roleListResponseJSON) RawJSON() string {
return r.raw
}
diff --git a/api.md b/api.md
index 764eb992396..de059edea49 100644
--- a/api.md
+++ b/api.md
@@ -29,7 +29,7 @@ Methods:
Response Types:
- accounts.Member
-- accounts.MemberRoles
+- accounts.MemberRole
- accounts.MemberWithInviteCode
- accounts.MemberListResponse
- accounts.MemberDeleteResponse
@@ -51,11 +51,11 @@ Params Types:
Response Types:
- accounts.PermissionGrant
-- accounts.Role
+- accounts.RoleListResponse
Methods:
-- client.Accounts.Roles.List(ctx context.Context, query accounts.RoleListParams) (pagination.SinglePage[accounts.Role], error)
+- client.Accounts.Roles.List(ctx context.Context, query accounts.RoleListParams) (pagination.SinglePage[accounts.RoleListResponse], error)
- client.Accounts.Roles.Get(ctx context.Context, roleID interface{}, query accounts.RoleGetParams) (shared.UnnamedSchemaRef9444735ca60712dbcf8afd832eb5716aUnion, error)
# OriginCACertificates
diff --git a/memberships/membership.go b/memberships/membership.go
index 9cf2a3f474e..90067c4061a 100644
--- a/memberships/membership.go
+++ b/memberships/membership.go
@@ -109,7 +109,7 @@ type Membership struct {
// All access permissions for the user at the account.
Permissions MembershipPermissions `json:"permissions"`
// List of role names for the user at the account.
- Roles accounts.MemberRoles `json:"roles"`
+ Roles accounts.MemberRole `json:"roles"`
// Status of this membership.
Status MembershipStatus `json:"status"`
JSON membershipJSON `json:"-"`
diff --git a/user/invite.go b/user/invite.go
index ea9489112e7..b9c284dc4f1 100644
--- a/user/invite.go
+++ b/user/invite.go
@@ -8,7 +8,6 @@ import (
"net/http"
"time"
- "github.com/cloudflare/cloudflare-go/v2/accounts"
"github.com/cloudflare/cloudflare-go/v2/internal/apijson"
"github.com/cloudflare/cloudflare-go/v2/internal/pagination"
"github.com/cloudflare/cloudflare-go/v2/internal/param"
@@ -101,7 +100,7 @@ type Invite struct {
// Organization name.
OrganizationName string `json:"organization_name"`
// Roles to be assigned to this user.
- Roles []accounts.Role `json:"roles"`
+ Roles []InviteRole `json:"roles"`
// Current status of the invitation.
Status InviteStatus `json:"status"`
JSON inviteJSON `json:"-"`
@@ -131,6 +130,36 @@ func (r inviteJSON) RawJSON() string {
return r.raw
}
+type InviteRole struct {
+ // Role identifier tag.
+ ID string `json:"id,required"`
+ // Description of role's permissions.
+ Description string `json:"description,required"`
+ // Role Name.
+ Name string `json:"name,required"`
+ // Access permissions for this User.
+ Permissions []Permission `json:"permissions,required"`
+ JSON inviteRoleJSON `json:"-"`
+}
+
+// inviteRoleJSON contains the JSON metadata for the struct [InviteRole]
+type inviteRoleJSON struct {
+ ID apijson.Field
+ Description apijson.Field
+ Name apijson.Field
+ Permissions apijson.Field
+ raw string
+ ExtraFields map[string]apijson.Field
+}
+
+func (r *InviteRole) UnmarshalJSON(data []byte) (err error) {
+ return apijson.UnmarshalRoot(data, r)
+}
+
+func (r inviteRoleJSON) RawJSON() string {
+ return r.raw
+}
+
// Current status of the invitation.
type InviteStatus string