Skip to content

Commit 00f9975

Browse files
committed
docs: External User Deletion API (box/box-openapi#542)
1 parent aaaa25b commit 00f9975

10 files changed

+540
-7
lines changed

.codegen.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{ "engineHash": "47ff60c", "specHash": "5bf3652", "version": "1.17.0" }
1+
{ "engineHash": "47ff60c", "specHash": "a99f38b", "version": "1.17.0" }

docs/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@ the SDK are available by topic:
2323
- [Downloads](downloads.md)
2424
- [Email aliases](emailAliases.md)
2525
- [Events](events.md)
26+
- [External users](externalUsers.md)
2627
- [File classifications](fileClassifications.md)
2728
- [File metadata](fileMetadata.md)
2829
- [File requests](fileRequests.md)

docs/externalUsers.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
# ExternalUsersManager
2+
3+
- [Submit job to delete external users](#submit-job-to-delete-external-users)
4+
5+
## Submit job to delete external users
6+
7+
Delete external users from current user enterprise. This will remove each
8+
external user from all invited collaborations within the current enterprise.
9+
10+
This operation is performed by calling function `createExternalUserSubmitDeleteJobV2025R0`.
11+
12+
See the endpoint docs at
13+
[API Reference](https://developer.box.com/reference/v2025.0/post-external-users-submit-delete-job/).
14+
15+
_Currently we don't have an example for calling `createExternalUserSubmitDeleteJobV2025R0` in integration tests_
16+
17+
### Arguments
18+
19+
- requestBody `ExternalUsersSubmitDeleteJobRequestV2025R0`
20+
- Request body of createExternalUserSubmitDeleteJobV2025R0 method
21+
- optionalsInput `CreateExternalUserSubmitDeleteJobV2025R0OptionalsInput`
22+
23+
### Returns
24+
25+
This function returns a value of type `ExternalUsersSubmitDeleteJobResponseV2025R0`.

package-lock.json

Lines changed: 6 additions & 6 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/client.generated.ts

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,7 @@ import { HubCollaborationsManager } from './managers/hubCollaborations.generated
8181
import { HubItemsManager } from './managers/hubItems.generated.js';
8282
import { ShieldListsManager } from './managers/shieldLists.generated.js';
8383
import { ArchivesManager } from './managers/archives.generated.js';
84+
import { ExternalUsersManager } from './managers/externalUsers.generated.js';
8485
import { Authentication } from './networking/auth.generated.js';
8586
import { NetworkSession } from './networking/network.generated.js';
8687
import { BoxSdkError } from './box/errors.js';
@@ -181,6 +182,7 @@ export class BoxClient {
181182
readonly hubItems: HubItemsManager;
182183
readonly shieldLists: ShieldListsManager;
183184
readonly archives: ArchivesManager;
185+
readonly externalUsers: ExternalUsersManager;
184186
constructor(
185187
fields: Omit<
186188
BoxClient,
@@ -263,6 +265,7 @@ export class BoxClient {
263265
| 'hubItems'
264266
| 'shieldLists'
265267
| 'archives'
268+
| 'externalUsers'
266269
| 'networkSession'
267270
| 'makeRequest'
268271
| 'withAsUserHeader'
@@ -603,6 +606,10 @@ export class BoxClient {
603606
auth: this.auth,
604607
networkSession: this.networkSession,
605608
});
609+
this.externalUsers = new ExternalUsersManager({
610+
auth: this.auth,
611+
networkSession: this.networkSession,
612+
});
606613
}
607614
/**
608615
* Make a custom http request using the client authentication and network session.
Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,170 @@
1+
import { serializeExternalUsersSubmitDeleteJobResponseV2025R0 } from '../schemas/v2025R0/externalUsersSubmitDeleteJobResponseV2025R0.generated.js';
2+
import { deserializeExternalUsersSubmitDeleteJobResponseV2025R0 } from '../schemas/v2025R0/externalUsersSubmitDeleteJobResponseV2025R0.generated.js';
3+
import { serializeClientErrorV2025R0 } from '../schemas/v2025R0/clientErrorV2025R0.generated.js';
4+
import { deserializeClientErrorV2025R0 } from '../schemas/v2025R0/clientErrorV2025R0.generated.js';
5+
import { serializeBoxVersionHeaderV2025R0 } from '../parameters/v2025R0/boxVersionHeaderV2025R0.generated.js';
6+
import { deserializeBoxVersionHeaderV2025R0 } from '../parameters/v2025R0/boxVersionHeaderV2025R0.generated.js';
7+
import { serializeExternalUsersSubmitDeleteJobRequestV2025R0 } from '../schemas/v2025R0/externalUsersSubmitDeleteJobRequestV2025R0.generated.js';
8+
import { deserializeExternalUsersSubmitDeleteJobRequestV2025R0 } from '../schemas/v2025R0/externalUsersSubmitDeleteJobRequestV2025R0.generated.js';
9+
import { ResponseFormat } from '../networking/fetchOptions.generated.js';
10+
import { ExternalUsersSubmitDeleteJobResponseV2025R0 } from '../schemas/v2025R0/externalUsersSubmitDeleteJobResponseV2025R0.generated.js';
11+
import { ClientErrorV2025R0 } from '../schemas/v2025R0/clientErrorV2025R0.generated.js';
12+
import { BoxVersionHeaderV2025R0 } from '../parameters/v2025R0/boxVersionHeaderV2025R0.generated.js';
13+
import { ExternalUsersSubmitDeleteJobRequestV2025R0 } from '../schemas/v2025R0/externalUsersSubmitDeleteJobRequestV2025R0.generated.js';
14+
import { BoxSdkError } from '../box/errors.js';
15+
import { Authentication } from '../networking/auth.generated.js';
16+
import { NetworkSession } from '../networking/network.generated.js';
17+
import { FetchOptions } from '../networking/fetchOptions.generated.js';
18+
import { FetchResponse } from '../networking/fetchResponse.generated.js';
19+
import { prepareParams } from '../internal/utils.js';
20+
import { toString } from '../internal/utils.js';
21+
import { ByteStream } from '../internal/utils.js';
22+
import { CancellationToken } from '../internal/utils.js';
23+
import { sdToJson } from '../serialization/json.js';
24+
import { SerializedData } from '../serialization/json.js';
25+
import { sdIsEmpty } from '../serialization/json.js';
26+
import { sdIsBoolean } from '../serialization/json.js';
27+
import { sdIsNumber } from '../serialization/json.js';
28+
import { sdIsString } from '../serialization/json.js';
29+
import { sdIsList } from '../serialization/json.js';
30+
import { sdIsMap } from '../serialization/json.js';
31+
export class CreateExternalUserSubmitDeleteJobV2025R0Optionals {
32+
readonly headers: CreateExternalUserSubmitDeleteJobV2025R0Headers =
33+
new CreateExternalUserSubmitDeleteJobV2025R0Headers({});
34+
readonly cancellationToken?: CancellationToken = void 0;
35+
constructor(
36+
fields: Omit<
37+
CreateExternalUserSubmitDeleteJobV2025R0Optionals,
38+
'headers' | 'cancellationToken'
39+
> &
40+
Partial<
41+
Pick<
42+
CreateExternalUserSubmitDeleteJobV2025R0Optionals,
43+
'headers' | 'cancellationToken'
44+
>
45+
>,
46+
) {
47+
if (fields.headers !== undefined) {
48+
this.headers = fields.headers;
49+
}
50+
if (fields.cancellationToken !== undefined) {
51+
this.cancellationToken = fields.cancellationToken;
52+
}
53+
}
54+
}
55+
export interface CreateExternalUserSubmitDeleteJobV2025R0OptionalsInput {
56+
readonly headers?: CreateExternalUserSubmitDeleteJobV2025R0Headers;
57+
readonly cancellationToken?: undefined | CancellationToken;
58+
}
59+
export class CreateExternalUserSubmitDeleteJobV2025R0Headers {
60+
/**
61+
* Version header. */
62+
readonly boxVersion: BoxVersionHeaderV2025R0 =
63+
'2025.0' as BoxVersionHeaderV2025R0;
64+
/**
65+
* Extra headers that will be included in the HTTP request. */
66+
readonly extraHeaders?: {
67+
readonly [key: string]: undefined | string;
68+
} = {};
69+
constructor(
70+
fields: Omit<
71+
CreateExternalUserSubmitDeleteJobV2025R0Headers,
72+
'boxVersion' | 'extraHeaders'
73+
> &
74+
Partial<
75+
Pick<
76+
CreateExternalUserSubmitDeleteJobV2025R0Headers,
77+
'boxVersion' | 'extraHeaders'
78+
>
79+
>,
80+
) {
81+
if (fields.boxVersion !== undefined) {
82+
this.boxVersion = fields.boxVersion;
83+
}
84+
if (fields.extraHeaders !== undefined) {
85+
this.extraHeaders = fields.extraHeaders;
86+
}
87+
}
88+
}
89+
export interface CreateExternalUserSubmitDeleteJobV2025R0HeadersInput {
90+
/**
91+
* Version header. */
92+
readonly boxVersion?: BoxVersionHeaderV2025R0;
93+
/**
94+
* Extra headers that will be included in the HTTP request. */
95+
readonly extraHeaders?:
96+
| undefined
97+
| {
98+
readonly [key: string]: undefined | string;
99+
};
100+
}
101+
export class ExternalUsersManager {
102+
readonly auth?: Authentication;
103+
readonly networkSession: NetworkSession = new NetworkSession({});
104+
constructor(
105+
fields: Omit<
106+
ExternalUsersManager,
107+
'networkSession' | 'createExternalUserSubmitDeleteJobV2025R0'
108+
> &
109+
Partial<Pick<ExternalUsersManager, 'networkSession'>>,
110+
) {
111+
if (fields.auth !== undefined) {
112+
this.auth = fields.auth;
113+
}
114+
if (fields.networkSession !== undefined) {
115+
this.networkSession = fields.networkSession;
116+
}
117+
}
118+
/**
119+
* Delete external users from current user enterprise. This will remove each
120+
* external user from all invited collaborations within the current enterprise.
121+
* @param {ExternalUsersSubmitDeleteJobRequestV2025R0} requestBody Request body of createExternalUserSubmitDeleteJobV2025R0 method
122+
* @param {CreateExternalUserSubmitDeleteJobV2025R0OptionalsInput} optionalsInput
123+
* @returns {Promise<ExternalUsersSubmitDeleteJobResponseV2025R0>}
124+
*/
125+
async createExternalUserSubmitDeleteJobV2025R0(
126+
requestBody: ExternalUsersSubmitDeleteJobRequestV2025R0,
127+
optionalsInput: CreateExternalUserSubmitDeleteJobV2025R0OptionalsInput = {},
128+
): Promise<ExternalUsersSubmitDeleteJobResponseV2025R0> {
129+
const optionals: CreateExternalUserSubmitDeleteJobV2025R0Optionals =
130+
new CreateExternalUserSubmitDeleteJobV2025R0Optionals({
131+
headers: optionalsInput.headers,
132+
cancellationToken: optionalsInput.cancellationToken,
133+
});
134+
const headers: any = optionals.headers;
135+
const cancellationToken: any = optionals.cancellationToken;
136+
const headersMap: {
137+
readonly [key: string]: string;
138+
} = prepareParams({
139+
...{ ['box-version']: toString(headers.boxVersion) as string },
140+
...headers.extraHeaders,
141+
});
142+
const response: FetchResponse =
143+
await this.networkSession.networkClient.fetch(
144+
new FetchOptions({
145+
url: ''.concat(
146+
this.networkSession.baseUrls.baseUrl,
147+
'/2.0/external_users/submit_delete_job',
148+
) as string,
149+
method: 'POST',
150+
headers: headersMap,
151+
data: serializeExternalUsersSubmitDeleteJobRequestV2025R0(
152+
requestBody,
153+
),
154+
contentType: 'application/json',
155+
responseFormat: 'json' as ResponseFormat,
156+
auth: this.auth,
157+
networkSession: this.networkSession,
158+
cancellationToken: cancellationToken,
159+
}),
160+
);
161+
return {
162+
...deserializeExternalUsersSubmitDeleteJobResponseV2025R0(response.data!),
163+
rawData: response.data!,
164+
};
165+
}
166+
}
167+
export interface ExternalUsersManagerInput {
168+
readonly auth?: Authentication;
169+
readonly networkSession?: NetworkSession;
170+
}
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
import { BoxSdkError } from '../../box/errors.js';
2+
import { SerializedData } from '../../serialization/json.js';
3+
import { sdIsEmpty } from '../../serialization/json.js';
4+
import { sdIsBoolean } from '../../serialization/json.js';
5+
import { sdIsNumber } from '../../serialization/json.js';
6+
import { sdIsString } from '../../serialization/json.js';
7+
import { sdIsList } from '../../serialization/json.js';
8+
import { sdIsMap } from '../../serialization/json.js';
9+
export interface ExternalUserDeletionResultV2025R0 {
10+
/**
11+
* The ID of the external user. */
12+
readonly userId: string;
13+
/**
14+
* HTTP status code for a specific user's deletion request. */
15+
readonly status: number;
16+
/**
17+
* Deletion request status details. */
18+
readonly detail?: string;
19+
readonly rawData?: SerializedData;
20+
}
21+
export function serializeExternalUserDeletionResultV2025R0(
22+
val: ExternalUserDeletionResultV2025R0,
23+
): SerializedData {
24+
return {
25+
['user_id']: val.userId,
26+
['status']: val.status,
27+
['detail']: val.detail,
28+
};
29+
}
30+
export function deserializeExternalUserDeletionResultV2025R0(
31+
val: SerializedData,
32+
): ExternalUserDeletionResultV2025R0 {
33+
if (!sdIsMap(val)) {
34+
throw new BoxSdkError({
35+
message: 'Expecting a map for "ExternalUserDeletionResultV2025R0"',
36+
});
37+
}
38+
if (val.user_id == void 0) {
39+
throw new BoxSdkError({
40+
message:
41+
'Expecting "user_id" of type "ExternalUserDeletionResultV2025R0" to be defined',
42+
});
43+
}
44+
if (!sdIsString(val.user_id)) {
45+
throw new BoxSdkError({
46+
message:
47+
'Expecting string for "user_id" of type "ExternalUserDeletionResultV2025R0"',
48+
});
49+
}
50+
const userId: string = val.user_id;
51+
if (val.status == void 0) {
52+
throw new BoxSdkError({
53+
message:
54+
'Expecting "status" of type "ExternalUserDeletionResultV2025R0" to be defined',
55+
});
56+
}
57+
if (!sdIsNumber(val.status)) {
58+
throw new BoxSdkError({
59+
message:
60+
'Expecting number for "status" of type "ExternalUserDeletionResultV2025R0"',
61+
});
62+
}
63+
const status: number = val.status;
64+
if (!(val.detail == void 0) && !sdIsString(val.detail)) {
65+
throw new BoxSdkError({
66+
message:
67+
'Expecting string for "detail" of type "ExternalUserDeletionResultV2025R0"',
68+
});
69+
}
70+
const detail: undefined | string = val.detail == void 0 ? void 0 : val.detail;
71+
return {
72+
userId: userId,
73+
status: status,
74+
detail: detail,
75+
} satisfies ExternalUserDeletionResultV2025R0;
76+
}

0 commit comments

Comments
 (0)