-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmembers.ts
More file actions
151 lines (132 loc) · 3.46 KB
/
members.ts
File metadata and controls
151 lines (132 loc) · 3.46 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
// File generated from our OpenAPI spec by Stainless. See CONTRIBUTING.md for details.
import { APIResource } from '../core/resource';
import { APIPromise } from '../core/api-promise';
import { EntriesCursor, type EntriesCursorParams, PagePromise } from '../core/pagination';
import { buildHeaders } from '../internal/headers';
import { RequestOptions } from '../internal/request-options';
import { path } from '../internal/utils/path';
export class Members extends APIResource {
/**
* Returns a single member by their ID.
*
* @example
* ```ts
* const member = await client.members.retrieve(
* '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
* );
* ```
*/
retrieve(id: string, options?: RequestOptions): APIPromise<Member> {
return this._client.get(path`/v1/members/${id}`, options);
}
/**
* Returns a paginated list of members for the current account. Optionally filter
* by role.
*
* @example
* ```ts
* // Automatically fetches more pages as needed.
* for await (const member of client.members.list()) {
* // ...
* }
* ```
*/
list(
query: MemberListParams | null | undefined = {},
options?: RequestOptions,
): PagePromise<MembersEntriesCursor, Member> {
return this._client.getAPIList('/v1/members', EntriesCursor<Member>, { query, ...options });
}
/**
* Removes a member from the account.
*
* @example
* ```ts
* await client.members.delete(
* '182bd5e5-6e1a-4fe4-a799-aa6d9a6ab26e',
* );
* ```
*/
delete(id: string, options?: RequestOptions): APIPromise<void> {
return this._client.delete(path`/v1/members/${id}`, {
...options,
headers: buildHeaders([{ Accept: '*/*' }, options?.headers]),
});
}
}
export type MembersEntriesCursor = EntriesCursor<Member>;
/**
* A member of the account.
*/
export interface Member {
/**
* The unique identifier of the member.
*/
id: string;
/**
* The timestamp of when the member joined the account.
*/
created_at: string;
/**
* The member's role in the account.
*/
role: 'owner' | 'admin' | 'member' | 'production_only_member' | 'billing' | 'support';
/**
* The timestamp of when the member was last updated.
*/
updated_at: string;
/**
* Information about a user within the Knock dashboard. Not to be confused with an
* external user (recipient) of a workflow.
*/
user: MemberUser;
}
/**
* Information about a user within the Knock dashboard. Not to be confused with an
* external user (recipient) of a workflow.
*/
export interface MemberUser {
/**
* The user's unique identifier.
*/
id: string;
/**
* The timestamp of when the user was created.
*/
created_at: string;
/**
* The user's email address.
*/
email: string;
/**
* The timestamp of when the user was last updated.
*/
updated_at: string;
/**
* The URL of the user's avatar image.
*/
avatar_url?: string | null;
/**
* The user's display name.
*/
name?: string | null;
}
export interface MemberListParams extends EntriesCursorParams {
/**
* Filter members by email address (exact match).
*/
email?: string;
/**
* Filter members by role. One of: owner, admin, member, production_only_member,
* billing, support.
*/
role?: string;
}
export declare namespace Members {
export {
type Member as Member,
type MemberUser as MemberUser,
type MembersEntriesCursor as MembersEntriesCursor,
type MemberListParams as MemberListParams,
};
}