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