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  }