github.com/anthropics/anthropic-sdk-go@v1.70.1/betaorganizationworkspacemember.go (about) 1 // File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details. 2 3 package anthropic 4 5 import ( 6 "context" 7 "errors" 8 "fmt" 9 "net/http" 10 "net/url" 11 "slices" 12 13 "github.com/anthropics/anthropic-sdk-go/internal/apijson" 14 "github.com/anthropics/anthropic-sdk-go/internal/apiquery" 15 "github.com/anthropics/anthropic-sdk-go/internal/requestconfig" 16 "github.com/anthropics/anthropic-sdk-go/option" 17 "github.com/anthropics/anthropic-sdk-go/packages/pagination" 18 "github.com/anthropics/anthropic-sdk-go/packages/param" 19 "github.com/anthropics/anthropic-sdk-go/packages/respjson" 20 "github.com/anthropics/anthropic-sdk-go/shared/constant" 21 ) 22 23 // BetaOrganizationWorkspaceMemberService contains methods and other services that 24 // help with interacting with the anthropic API. 25 // 26 // Note, unlike clients, this service does not read variables from the environment 27 // automatically. You should not instantiate this service directly, and instead use 28 // the [NewBetaOrganizationWorkspaceMemberService] method instead. 29 type BetaOrganizationWorkspaceMemberService struct { 30 Options []option.RequestOption 31 } 32 33 // NewBetaOrganizationWorkspaceMemberService generates a new service that applies 34 // the given options to each request. These options are applied after the parent 35 // client's options (if there is one), and before any request-specific options. 36 func NewBetaOrganizationWorkspaceMemberService(opts ...option.RequestOption) (r BetaOrganizationWorkspaceMemberService) { 37 r = BetaOrganizationWorkspaceMemberService{} 38 r.Options = opts 39 return 40 } 41 42 // Get Workspace Member 43 func (r *BetaOrganizationWorkspaceMemberService) Get(ctx context.Context, userID string, query BetaOrganizationWorkspaceMemberGetParams, opts ...option.RequestOption) (res *BetaWorkspaceMember, err error) { 44 opts = slices.Concat(r.Options, opts) 45 if query.WorkspaceID == "" { 46 err = errors.New("missing required workspace_id parameter") 47 return nil, err 48 } 49 if userID == "" { 50 err = errors.New("missing required user_id parameter") 51 return nil, err 52 } 53 path := fmt.Sprintf("v1/organizations/workspaces/%s/members/%s?beta=true", query.WorkspaceID, userID) 54 err = requestconfig.ExecuteNewRequest(ctx, http.MethodGet, path, nil, &res, opts...) 55 return res, err 56 } 57 58 // Update Workspace Member 59 func (r *BetaOrganizationWorkspaceMemberService) Update(ctx context.Context, userID string, params BetaOrganizationWorkspaceMemberUpdateParams, opts ...option.RequestOption) (res *BetaWorkspaceMember, err error) { 60 opts = slices.Concat(r.Options, opts) 61 if params.WorkspaceID == "" { 62 err = errors.New("missing required workspace_id parameter") 63 return nil, err 64 } 65 if userID == "" { 66 err = errors.New("missing required user_id parameter") 67 return nil, err 68 } 69 path := fmt.Sprintf("v1/organizations/workspaces/%s/members/%s?beta=true", params.WorkspaceID, userID) 70 err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, params, &res, opts...) 71 return res, err 72 } 73 74 // List Workspace Members 75 func (r *BetaOrganizationWorkspaceMemberService) List(ctx context.Context, workspaceID string, query BetaOrganizationWorkspaceMemberListParams, opts ...option.RequestOption) (res *pagination.Page[BetaWorkspaceMember], err error) { 76 var raw *http.Response 77 opts = slices.Concat(r.Options, opts) 78 opts = append([]option.RequestOption{option.WithResponseInto(&raw)}, opts...) 79 if workspaceID == "" { 80 err = errors.New("missing required workspace_id parameter") 81 return nil, err 82 } 83 path := fmt.Sprintf("v1/organizations/workspaces/%s/members?beta=true", workspaceID) 84 cfg, err := requestconfig.NewRequestConfig(ctx, http.MethodGet, path, query, &res, opts...) 85 if err != nil { 86 return nil, err 87 } 88 err = cfg.Execute() 89 if err != nil { 90 return nil, err 91 } 92 res.SetPageConfig(cfg, raw) 93 return res, nil 94 } 95 96 // List Workspace Members 97 func (r *BetaOrganizationWorkspaceMemberService) ListAutoPaging(ctx context.Context, workspaceID string, query BetaOrganizationWorkspaceMemberListParams, opts ...option.RequestOption) *pagination.PageAutoPager[BetaWorkspaceMember] { 98 return pagination.NewPageAutoPager(r.List(ctx, workspaceID, query, opts...)) 99 } 100 101 // Create Workspace Member 102 func (r *BetaOrganizationWorkspaceMemberService) Add(ctx context.Context, workspaceID string, body BetaOrganizationWorkspaceMemberAddParams, opts ...option.RequestOption) (res *BetaWorkspaceMember, err error) { 103 opts = slices.Concat(r.Options, opts) 104 if workspaceID == "" { 105 err = errors.New("missing required workspace_id parameter") 106 return nil, err 107 } 108 path := fmt.Sprintf("v1/organizations/workspaces/%s/members?beta=true", workspaceID) 109 err = requestconfig.ExecuteNewRequest(ctx, http.MethodPost, path, body, &res, opts...) 110 return res, err 111 } 112 113 // Delete Workspace Member 114 func (r *BetaOrganizationWorkspaceMemberService) Remove(ctx context.Context, userID string, body BetaOrganizationWorkspaceMemberRemoveParams, opts ...option.RequestOption) (res *BetaOrganizationWorkspaceMemberRemoveResponse, err error) { 115 opts = slices.Concat(r.Options, opts) 116 if body.WorkspaceID == "" { 117 err = errors.New("missing required workspace_id parameter") 118 return nil, err 119 } 120 if userID == "" { 121 err = errors.New("missing required user_id parameter") 122 return nil, err 123 } 124 path := fmt.Sprintf("v1/organizations/workspaces/%s/members/%s?beta=true", body.WorkspaceID, userID) 125 err = requestconfig.ExecuteNewRequest(ctx, http.MethodDelete, path, nil, &res, opts...) 126 return res, err 127 } 128 129 type BetaOrganizationWorkspaceMemberRemoveResponse struct { 130 // Deleted object type. 131 // 132 // For Workspace Members, this is always `"workspace_member_deleted"`. 133 Type constant.WorkspaceMemberDeleted `json:"type" default:"workspace_member_deleted"` 134 // ID of the User. 135 UserID string `json:"user_id" api:"required"` 136 // ID of the Workspace. 137 WorkspaceID string `json:"workspace_id" api:"required"` 138 // JSON contains metadata for fields, check presence with [respjson.Field.Valid]. 139 JSON struct { 140 Type respjson.Field 141 UserID respjson.Field 142 WorkspaceID respjson.Field 143 ExtraFields map[string]respjson.Field 144 raw string 145 } `json:"-"` 146 } 147 148 // Returns the unmodified JSON received from the API 149 func (r BetaOrganizationWorkspaceMemberRemoveResponse) RawJSON() string { return r.JSON.raw } 150 func (r *BetaOrganizationWorkspaceMemberRemoveResponse) UnmarshalJSON(data []byte) error { 151 return apijson.UnmarshalRoot(data, r) 152 } 153 154 type BetaOrganizationWorkspaceMemberGetParams struct { 155 // ID of the Workspace. 156 WorkspaceID string `path:"workspace_id" api:"required" json:"-"` 157 paramObj 158 } 159 160 type BetaOrganizationWorkspaceMemberUpdateParams struct { 161 // ID of the Workspace. 162 WorkspaceID string `path:"workspace_id" api:"required" json:"-"` 163 // New workspace role for the User. 164 // 165 // Any of "workspace_admin", "workspace_billing", "workspace_developer", 166 // "workspace_restricted_developer", "workspace_user". 167 WorkspaceRole BetaWorkspaceRole `json:"workspace_role,omitzero" api:"required"` 168 paramObj 169 } 170 171 func (r BetaOrganizationWorkspaceMemberUpdateParams) MarshalJSON() (data []byte, err error) { 172 type shadow BetaOrganizationWorkspaceMemberUpdateParams 173 return param.MarshalObject(r, (*shadow)(&r)) 174 } 175 func (r *BetaOrganizationWorkspaceMemberUpdateParams) UnmarshalJSON(data []byte) error { 176 return apijson.UnmarshalRoot(data, r) 177 } 178 179 type BetaOrganizationWorkspaceMemberListParams struct { 180 // ID of the object to use as a cursor for pagination. When provided, returns the 181 // page of results immediately after this object. 182 AfterID param.Opt[string] `query:"after_id,omitzero" json:"-"` 183 // ID of the object to use as a cursor for pagination. When provided, returns the 184 // page of results immediately before this object. 185 BeforeID param.Opt[string] `query:"before_id,omitzero" json:"-"` 186 // Number of items to return per page. 187 // 188 // Defaults to `20`. Ranges from `1` to `1000`. 189 Limit param.Opt[int64] `query:"limit,omitzero" json:"-"` 190 paramObj 191 } 192 193 // URLQuery serializes [BetaOrganizationWorkspaceMemberListParams]'s query 194 // parameters as `url.Values`. 195 func (r BetaOrganizationWorkspaceMemberListParams) URLQuery() (v url.Values, err error) { 196 return apiquery.MarshalWithSettings(r, apiquery.QuerySettings{ 197 ArrayFormat: apiquery.ArrayQueryFormatBrackets, 198 NestedFormat: apiquery.NestedQueryFormatBrackets, 199 }) 200 } 201 202 type BetaOrganizationWorkspaceMemberAddParams struct { 203 // ID of the User. 204 UserID string `json:"user_id" api:"required"` 205 // Role of the new Workspace Member. Cannot be `workspace_billing`. 206 // 207 // Any of "workspace_admin", "workspace_developer", 208 // "workspace_restricted_developer", "workspace_user". 209 WorkspaceRole BetaNoBillingWorkspaceRole `json:"workspace_role,omitzero" api:"required"` 210 paramObj 211 } 212 213 func (r BetaOrganizationWorkspaceMemberAddParams) MarshalJSON() (data []byte, err error) { 214 type shadow BetaOrganizationWorkspaceMemberAddParams 215 return param.MarshalObject(r, (*shadow)(&r)) 216 } 217 func (r *BetaOrganizationWorkspaceMemberAddParams) UnmarshalJSON(data []byte) error { 218 return apijson.UnmarshalRoot(data, r) 219 } 220 221 type BetaOrganizationWorkspaceMemberRemoveParams struct { 222 // ID of the Workspace. 223 WorkspaceID string `path:"workspace_id" api:"required" json:"-"` 224 paramObj 225 }