@anthropic-ai/sdk
Version:
The official TypeScript library for the Anthropic API
242 lines (224 loc) • 6.71 kB
text/typescript
import { APIResource } from '../../../core/resource';
import * as WorkspacesAPI from './workspaces';
import { WorkspaceMembersPage } from './workspaces';
import { APIPromise } from '../../../core/api-promise';
import { Page, type PageParams, PagePromise } from '../../../core/pagination';
import { RequestOptions } from '../../../internal/request-options';
import { startApiCallSpan } from '../../../internal/tracing';
import { path } from '../../../internal/utils/path';
export class Members extends APIResource {
/**
* Get Workspace Member
*
* @example
* ```ts
* const workspaceMember =
* await client.organization.workspaces.members.retrieve(
* 'user_id',
* { workspace_id: 'workspace_id' },
* );
* ```
*/
retrieve(
userID: string,
params: MemberRetrieveParams,
options?: RequestOptions,
): APIPromise<WorkspacesAPI.WorkspaceMember> {
const { workspace_id } = params;
return this._client.get(path`/v1/organizations/workspaces/${workspace_id}/members/${userID}`, {
...options,
__span: startApiCallSpan(this._client, 'anthropic.organization.workspaces.members.retrieve', options, {
route: '/v1/organizations/workspaces/{workspace_id}/members/{user_id}',
attributes: {
'anthropic.organization.workspace.id': workspace_id,
'anthropic.organization.workspace.member.id': userID,
},
}),
});
}
/**
* Update Workspace Member
*
* @example
* ```ts
* const workspaceMember =
* await client.organization.workspaces.members.update(
* 'user_id',
* {
* workspace_id: 'workspace_id',
* workspace_role: 'workspace_admin',
* },
* );
* ```
*/
update(
userID: string,
params: MemberUpdateParams,
options?: RequestOptions,
): APIPromise<WorkspacesAPI.WorkspaceMember> {
const { workspace_id, ...body } = params;
return this._client.post(path`/v1/organizations/workspaces/${workspace_id}/members/${userID}`, {
body,
...options,
__span: startApiCallSpan(this._client, 'anthropic.organization.workspaces.members.update', options, {
route: '/v1/organizations/workspaces/{workspace_id}/members/{user_id}',
attributes: {
'anthropic.organization.workspace.id': workspace_id,
'anthropic.organization.workspace.member.id': userID,
},
}),
});
}
/**
* List Workspace Members
*
* @example
* ```ts
* // Automatically fetches more pages as needed.
* for await (const workspaceMember of client.organization.workspaces.members.list(
* 'workspace_id',
* )) {
* // ...
* }
* ```
*/
list(
workspaceID: string,
query: MemberListParams | null | undefined = {},
options?: RequestOptions,
): PagePromise<WorkspaceMembersPage, WorkspacesAPI.WorkspaceMember> {
return this._client.getAPIList(
path`/v1/organizations/workspaces/${workspaceID}/members`,
Page<WorkspacesAPI.WorkspaceMember>,
{
query,
...options,
__span: startApiCallSpan(this._client, 'anthropic.organization.workspaces.members.list', options, {
route: '/v1/organizations/workspaces/{workspace_id}/members',
queryParams: ['after_id', 'before_id', 'limit'],
attributes: { 'anthropic.organization.workspace.id': workspaceID },
}),
},
);
}
/**
* Create Workspace Member
*
* @example
* ```ts
* const workspaceMember =
* await client.organization.workspaces.members.add(
* 'workspace_id',
* {
* user_id: 'user_01WCz1FkmYMm4gnmykNKUu3Q',
* workspace_role: 'workspace_admin',
* },
* );
* ```
*/
add(
workspaceID: string,
body: MemberAddParams,
options?: RequestOptions,
): APIPromise<WorkspacesAPI.WorkspaceMember> {
return this._client.post(path`/v1/organizations/workspaces/${workspaceID}/members`, {
body,
...options,
__span: startApiCallSpan(this._client, 'anthropic.organization.workspaces.members.add', options, {
route: '/v1/organizations/workspaces/{workspace_id}/members',
attributes: { 'anthropic.organization.workspace.id': workspaceID },
createdIDAttribute: 'anthropic.organization.workspace.member.id',
createdIDField: 'user_id',
}),
});
}
/**
* Delete Workspace Member
*
* @example
* ```ts
* const member =
* await client.organization.workspaces.members.remove(
* 'user_id',
* { workspace_id: 'workspace_id' },
* );
* ```
*/
remove(
userID: string,
params: MemberRemoveParams,
options?: RequestOptions,
): APIPromise<MemberRemoveResponse> {
const { workspace_id } = params;
return this._client.delete(path`/v1/organizations/workspaces/${workspace_id}/members/${userID}`, {
...options,
__span: startApiCallSpan(this._client, 'anthropic.organization.workspaces.members.remove', options, {
route: '/v1/organizations/workspaces/{workspace_id}/members/{user_id}',
attributes: {
'anthropic.organization.workspace.id': workspace_id,
'anthropic.organization.workspace.member.id': userID,
},
}),
});
}
}
export interface MemberRemoveResponse {
/**
* Deleted object type.
*
* For Workspace Members, this is always `"workspace_member_deleted"`.
*/
type: 'workspace_member_deleted';
/**
* ID of the User.
*/
user_id: string;
/**
* ID of the Workspace.
*/
workspace_id: string;
}
export interface MemberRetrieveParams {
/**
* ID of the Workspace.
*/
workspace_id: string;
}
export interface MemberUpdateParams {
/**
* Path param: ID of the Workspace.
*/
workspace_id: string;
/**
* Body param: New workspace role for the User.
*/
workspace_role: WorkspacesAPI.WorkspaceRole;
}
export interface MemberListParams extends PageParams {}
export interface MemberAddParams {
/**
* ID of the User.
*/
user_id: string;
/**
* Role of the new Workspace Member. Cannot be `workspace_billing`.
*/
workspace_role: WorkspacesAPI.NoBillingWorkspaceRole;
}
export interface MemberRemoveParams {
/**
* ID of the Workspace.
*/
workspace_id: string;
}
export declare namespace Members {
export {
type MemberRemoveResponse as MemberRemoveResponse,
type MemberRetrieveParams as MemberRetrieveParams,
type MemberUpdateParams as MemberUpdateParams,
type MemberListParams as MemberListParams,
type MemberAddParams as MemberAddParams,
type MemberRemoveParams as MemberRemoveParams,
};
}
export { type WorkspaceMembersPage };