box-node-sdk
Version:
Official SDK for Box Platform APIs
1,029 lines (1,028 loc) • 38.8 kB
text/typescript
import { serializeIntegrationMappings } from '../schemas/integrationMappings';
import { deserializeIntegrationMappings } from '../schemas/integrationMappings';
import { serializeClientError } from '../schemas/clientError';
import { deserializeClientError } from '../schemas/clientError';
import { serializeIntegrationMapping } from '../schemas/integrationMapping';
import { deserializeIntegrationMapping } from '../schemas/integrationMapping';
import { serializeIntegrationMappingSlackCreateRequest } from '../schemas/integrationMappingSlackCreateRequest';
import { deserializeIntegrationMappingSlackCreateRequest } from '../schemas/integrationMappingSlackCreateRequest';
import { serializeIntegrationMappingBoxItemSlack } from '../schemas/integrationMappingBoxItemSlack';
import { deserializeIntegrationMappingBoxItemSlack } from '../schemas/integrationMappingBoxItemSlack';
import { serializeIntegrationMappingSlackOptions } from '../schemas/integrationMappingSlackOptions';
import { deserializeIntegrationMappingSlackOptions } from '../schemas/integrationMappingSlackOptions';
import { serializeIntegrationMappingsTeams } from '../schemas/integrationMappingsTeams';
import { deserializeIntegrationMappingsTeams } from '../schemas/integrationMappingsTeams';
import { serializeIntegrationMappingTeams } from '../schemas/integrationMappingTeams';
import { deserializeIntegrationMappingTeams } from '../schemas/integrationMappingTeams';
import { serializeIntegrationMappingTeamsCreateRequest } from '../schemas/integrationMappingTeamsCreateRequest';
import { deserializeIntegrationMappingTeamsCreateRequest } from '../schemas/integrationMappingTeamsCreateRequest';
import { serializeFolderReference } from '../schemas/folderReference';
import { deserializeFolderReference } from '../schemas/folderReference';
import { ResponseFormat } from '../networking/fetchOptions';
import { IntegrationMappings } from '../schemas/integrationMappings';
import { ClientError } from '../schemas/clientError';
import { IntegrationMapping } from '../schemas/integrationMapping';
import { IntegrationMappingSlackCreateRequest } from '../schemas/integrationMappingSlackCreateRequest';
import { IntegrationMappingBoxItemSlack } from '../schemas/integrationMappingBoxItemSlack';
import { IntegrationMappingSlackOptions } from '../schemas/integrationMappingSlackOptions';
import { IntegrationMappingsTeams } from '../schemas/integrationMappingsTeams';
import { IntegrationMappingTeams } from '../schemas/integrationMappingTeams';
import { IntegrationMappingTeamsCreateRequest } from '../schemas/integrationMappingTeamsCreateRequest';
import { FolderReference } from '../schemas/folderReference';
import { BoxSdkError } from '../box/errors';
import { Authentication } from '../networking/auth';
import { NetworkSession } from '../networking/network';
import { FetchOptions } from '../networking/fetchOptions';
import { FetchResponse } from '../networking/fetchResponse';
import { prepareParams } from '../internal/utils';
import { toString } from '../internal/utils';
import { ByteStream } from '../internal/utils';
import { CancellationToken } from '../internal/utils';
import { sdToJson } from '../serialization/json';
import { SerializedData } from '../serialization/json';
import { sdIsEmpty } from '../serialization/json';
import { sdIsBoolean } from '../serialization/json';
import { sdIsNumber } from '../serialization/json';
import { sdIsString } from '../serialization/json';
import { sdIsList } from '../serialization/json';
import { sdIsMap } from '../serialization/json';
export class CreateSlackIntegrationMappingOptionals {
readonly headers: CreateSlackIntegrationMappingHeaders =
new CreateSlackIntegrationMappingHeaders({});
readonly cancellationToken?: CancellationToken = void 0;
constructor(
fields: Omit<
CreateSlackIntegrationMappingOptionals,
'headers' | 'cancellationToken'
> &
Partial<
Pick<
CreateSlackIntegrationMappingOptionals,
'headers' | 'cancellationToken'
>
>,
) {
if (fields.headers !== undefined) {
this.headers = fields.headers;
}
if (fields.cancellationToken !== undefined) {
this.cancellationToken = fields.cancellationToken;
}
}
}
export interface CreateSlackIntegrationMappingOptionalsInput {
readonly headers?: CreateSlackIntegrationMappingHeaders;
readonly cancellationToken?: CancellationToken;
}
export class UpdateSlackIntegrationMappingByIdOptionals {
readonly requestBody: UpdateSlackIntegrationMappingByIdRequestBody =
{} satisfies UpdateSlackIntegrationMappingByIdRequestBody;
readonly headers: UpdateSlackIntegrationMappingByIdHeaders =
new UpdateSlackIntegrationMappingByIdHeaders({});
readonly cancellationToken?: CancellationToken = void 0;
constructor(
fields: Omit<
UpdateSlackIntegrationMappingByIdOptionals,
'requestBody' | 'headers' | 'cancellationToken'
> &
Partial<
Pick<
UpdateSlackIntegrationMappingByIdOptionals,
'requestBody' | 'headers' | 'cancellationToken'
>
>,
) {
if (fields.requestBody !== undefined) {
this.requestBody = fields.requestBody;
}
if (fields.headers !== undefined) {
this.headers = fields.headers;
}
if (fields.cancellationToken !== undefined) {
this.cancellationToken = fields.cancellationToken;
}
}
}
export interface UpdateSlackIntegrationMappingByIdOptionalsInput {
readonly requestBody?: UpdateSlackIntegrationMappingByIdRequestBody;
readonly headers?: UpdateSlackIntegrationMappingByIdHeaders;
readonly cancellationToken?: CancellationToken;
}
export class DeleteSlackIntegrationMappingByIdOptionals {
readonly headers: DeleteSlackIntegrationMappingByIdHeaders =
new DeleteSlackIntegrationMappingByIdHeaders({});
readonly cancellationToken?: CancellationToken = void 0;
constructor(
fields: Omit<
DeleteSlackIntegrationMappingByIdOptionals,
'headers' | 'cancellationToken'
> &
Partial<
Pick<
DeleteSlackIntegrationMappingByIdOptionals,
'headers' | 'cancellationToken'
>
>,
) {
if (fields.headers !== undefined) {
this.headers = fields.headers;
}
if (fields.cancellationToken !== undefined) {
this.cancellationToken = fields.cancellationToken;
}
}
}
export interface DeleteSlackIntegrationMappingByIdOptionalsInput {
readonly headers?: DeleteSlackIntegrationMappingByIdHeaders;
readonly cancellationToken?: CancellationToken;
}
export class CreateTeamsIntegrationMappingOptionals {
readonly headers: CreateTeamsIntegrationMappingHeaders =
new CreateTeamsIntegrationMappingHeaders({});
readonly cancellationToken?: CancellationToken = void 0;
constructor(
fields: Omit<
CreateTeamsIntegrationMappingOptionals,
'headers' | 'cancellationToken'
> &
Partial<
Pick<
CreateTeamsIntegrationMappingOptionals,
'headers' | 'cancellationToken'
>
>,
) {
if (fields.headers !== undefined) {
this.headers = fields.headers;
}
if (fields.cancellationToken !== undefined) {
this.cancellationToken = fields.cancellationToken;
}
}
}
export interface CreateTeamsIntegrationMappingOptionalsInput {
readonly headers?: CreateTeamsIntegrationMappingHeaders;
readonly cancellationToken?: CancellationToken;
}
export class UpdateTeamsIntegrationMappingByIdOptionals {
readonly requestBody: UpdateTeamsIntegrationMappingByIdRequestBody =
{} satisfies UpdateTeamsIntegrationMappingByIdRequestBody;
readonly headers: UpdateTeamsIntegrationMappingByIdHeaders =
new UpdateTeamsIntegrationMappingByIdHeaders({});
readonly cancellationToken?: CancellationToken = void 0;
constructor(
fields: Omit<
UpdateTeamsIntegrationMappingByIdOptionals,
'requestBody' | 'headers' | 'cancellationToken'
> &
Partial<
Pick<
UpdateTeamsIntegrationMappingByIdOptionals,
'requestBody' | 'headers' | 'cancellationToken'
>
>,
) {
if (fields.requestBody !== undefined) {
this.requestBody = fields.requestBody;
}
if (fields.headers !== undefined) {
this.headers = fields.headers;
}
if (fields.cancellationToken !== undefined) {
this.cancellationToken = fields.cancellationToken;
}
}
}
export interface UpdateTeamsIntegrationMappingByIdOptionalsInput {
readonly requestBody?: UpdateTeamsIntegrationMappingByIdRequestBody;
readonly headers?: UpdateTeamsIntegrationMappingByIdHeaders;
readonly cancellationToken?: CancellationToken;
}
export class DeleteTeamsIntegrationMappingByIdOptionals {
readonly headers: DeleteTeamsIntegrationMappingByIdHeaders =
new DeleteTeamsIntegrationMappingByIdHeaders({});
readonly cancellationToken?: CancellationToken = void 0;
constructor(
fields: Omit<
DeleteTeamsIntegrationMappingByIdOptionals,
'headers' | 'cancellationToken'
> &
Partial<
Pick<
DeleteTeamsIntegrationMappingByIdOptionals,
'headers' | 'cancellationToken'
>
>,
) {
if (fields.headers !== undefined) {
this.headers = fields.headers;
}
if (fields.cancellationToken !== undefined) {
this.cancellationToken = fields.cancellationToken;
}
}
}
export interface DeleteTeamsIntegrationMappingByIdOptionalsInput {
readonly headers?: DeleteTeamsIntegrationMappingByIdHeaders;
readonly cancellationToken?: CancellationToken;
}
export type GetSlackIntegrationMappingQueryParamsPartnerItemTypeField =
| 'channel'
| string;
export type GetSlackIntegrationMappingQueryParamsBoxItemTypeField =
| 'folder'
| string;
export interface GetSlackIntegrationMappingQueryParams {
/**
* Defines the position marker at which to begin returning results. This is
* used when paginating using marker-based pagination.
*
* This requires `usemarker` to be set to `true`. */
readonly marker?: string;
/**
* The maximum number of items to return per page. */
readonly limit?: number;
/**
* Mapped item type, for which the mapping should be returned. */
readonly partnerItemType?: GetSlackIntegrationMappingQueryParamsPartnerItemTypeField;
/**
* ID of the mapped item,
* for which the mapping should be returned. */
readonly partnerItemId?: string;
/**
* Box item ID, for which the mappings should be returned. */
readonly boxItemId?: string;
/**
* Box item type, for
* which the mappings should be returned. */
readonly boxItemType?: GetSlackIntegrationMappingQueryParamsBoxItemTypeField;
/**
* Whether the mapping has been manually created. */
readonly isManuallyCreated?: boolean;
}
export class GetSlackIntegrationMappingHeaders {
/**
* Extra headers that will be included in the HTTP request. */
readonly extraHeaders?: {
readonly [key: string]: undefined | string;
} = {};
constructor(
fields: Omit<GetSlackIntegrationMappingHeaders, 'extraHeaders'> &
Partial<Pick<GetSlackIntegrationMappingHeaders, 'extraHeaders'>>,
) {
if (fields.extraHeaders !== undefined) {
this.extraHeaders = fields.extraHeaders;
}
}
}
export interface GetSlackIntegrationMappingHeadersInput {
/**
* Extra headers that will be included in the HTTP request. */
readonly extraHeaders?: {
readonly [key: string]: undefined | string;
};
}
export class CreateSlackIntegrationMappingHeaders {
/**
* Extra headers that will be included in the HTTP request. */
readonly extraHeaders?: {
readonly [key: string]: undefined | string;
} = {};
constructor(
fields: Omit<CreateSlackIntegrationMappingHeaders, 'extraHeaders'> &
Partial<Pick<CreateSlackIntegrationMappingHeaders, 'extraHeaders'>>,
) {
if (fields.extraHeaders !== undefined) {
this.extraHeaders = fields.extraHeaders;
}
}
}
export interface CreateSlackIntegrationMappingHeadersInput {
/**
* Extra headers that will be included in the HTTP request. */
readonly extraHeaders?: {
readonly [key: string]: undefined | string;
};
}
export interface UpdateSlackIntegrationMappingByIdRequestBody {
readonly boxItem?: IntegrationMappingBoxItemSlack;
readonly options?: IntegrationMappingSlackOptions;
readonly rawData?: SerializedData;
}
export class UpdateSlackIntegrationMappingByIdHeaders {
/**
* Extra headers that will be included in the HTTP request. */
readonly extraHeaders?: {
readonly [key: string]: undefined | string;
} = {};
constructor(
fields: Omit<UpdateSlackIntegrationMappingByIdHeaders, 'extraHeaders'> &
Partial<Pick<UpdateSlackIntegrationMappingByIdHeaders, 'extraHeaders'>>,
) {
if (fields.extraHeaders !== undefined) {
this.extraHeaders = fields.extraHeaders;
}
}
}
export interface UpdateSlackIntegrationMappingByIdHeadersInput {
/**
* Extra headers that will be included in the HTTP request. */
readonly extraHeaders?: {
readonly [key: string]: undefined | string;
};
}
export class DeleteSlackIntegrationMappingByIdHeaders {
/**
* Extra headers that will be included in the HTTP request. */
readonly extraHeaders?: {
readonly [key: string]: undefined | string;
} = {};
constructor(
fields: Omit<DeleteSlackIntegrationMappingByIdHeaders, 'extraHeaders'> &
Partial<Pick<DeleteSlackIntegrationMappingByIdHeaders, 'extraHeaders'>>,
) {
if (fields.extraHeaders !== undefined) {
this.extraHeaders = fields.extraHeaders;
}
}
}
export interface DeleteSlackIntegrationMappingByIdHeadersInput {
/**
* Extra headers that will be included in the HTTP request. */
readonly extraHeaders?: {
readonly [key: string]: undefined | string;
};
}
export type GetTeamsIntegrationMappingQueryParamsPartnerItemTypeField =
| 'channel'
| 'team'
| string;
export type GetTeamsIntegrationMappingQueryParamsBoxItemTypeField =
| 'folder'
| string;
export interface GetTeamsIntegrationMappingQueryParams {
/**
* Mapped item type, for which the mapping should be returned. */
readonly partnerItemType?: GetTeamsIntegrationMappingQueryParamsPartnerItemTypeField;
/**
* ID of the mapped item,
* for which the mapping should be returned. */
readonly partnerItemId?: string;
/**
* Box item ID, for which the mappings should be returned. */
readonly boxItemId?: string;
/**
* Box item type, for
* which the mappings should be returned. */
readonly boxItemType?: GetTeamsIntegrationMappingQueryParamsBoxItemTypeField;
}
export class GetTeamsIntegrationMappingHeaders {
/**
* Extra headers that will be included in the HTTP request. */
readonly extraHeaders?: {
readonly [key: string]: undefined | string;
} = {};
constructor(
fields: Omit<GetTeamsIntegrationMappingHeaders, 'extraHeaders'> &
Partial<Pick<GetTeamsIntegrationMappingHeaders, 'extraHeaders'>>,
) {
if (fields.extraHeaders !== undefined) {
this.extraHeaders = fields.extraHeaders;
}
}
}
export interface GetTeamsIntegrationMappingHeadersInput {
/**
* Extra headers that will be included in the HTTP request. */
readonly extraHeaders?: {
readonly [key: string]: undefined | string;
};
}
export class CreateTeamsIntegrationMappingHeaders {
/**
* Extra headers that will be included in the HTTP request. */
readonly extraHeaders?: {
readonly [key: string]: undefined | string;
} = {};
constructor(
fields: Omit<CreateTeamsIntegrationMappingHeaders, 'extraHeaders'> &
Partial<Pick<CreateTeamsIntegrationMappingHeaders, 'extraHeaders'>>,
) {
if (fields.extraHeaders !== undefined) {
this.extraHeaders = fields.extraHeaders;
}
}
}
export interface CreateTeamsIntegrationMappingHeadersInput {
/**
* Extra headers that will be included in the HTTP request. */
readonly extraHeaders?: {
readonly [key: string]: undefined | string;
};
}
export interface UpdateTeamsIntegrationMappingByIdRequestBody {
readonly boxItem?: FolderReference;
readonly rawData?: SerializedData;
}
export class UpdateTeamsIntegrationMappingByIdHeaders {
/**
* Extra headers that will be included in the HTTP request. */
readonly extraHeaders?: {
readonly [key: string]: undefined | string;
} = {};
constructor(
fields: Omit<UpdateTeamsIntegrationMappingByIdHeaders, 'extraHeaders'> &
Partial<Pick<UpdateTeamsIntegrationMappingByIdHeaders, 'extraHeaders'>>,
) {
if (fields.extraHeaders !== undefined) {
this.extraHeaders = fields.extraHeaders;
}
}
}
export interface UpdateTeamsIntegrationMappingByIdHeadersInput {
/**
* Extra headers that will be included in the HTTP request. */
readonly extraHeaders?: {
readonly [key: string]: undefined | string;
};
}
export class DeleteTeamsIntegrationMappingByIdHeaders {
/**
* Extra headers that will be included in the HTTP request. */
readonly extraHeaders?: {
readonly [key: string]: undefined | string;
} = {};
constructor(
fields: Omit<DeleteTeamsIntegrationMappingByIdHeaders, 'extraHeaders'> &
Partial<Pick<DeleteTeamsIntegrationMappingByIdHeaders, 'extraHeaders'>>,
) {
if (fields.extraHeaders !== undefined) {
this.extraHeaders = fields.extraHeaders;
}
}
}
export interface DeleteTeamsIntegrationMappingByIdHeadersInput {
/**
* Extra headers that will be included in the HTTP request. */
readonly extraHeaders?: {
readonly [key: string]: undefined | string;
};
}
export class IntegrationMappingsManager {
readonly auth?: Authentication;
readonly networkSession: NetworkSession = new NetworkSession({});
constructor(
fields: Omit<
IntegrationMappingsManager,
| 'networkSession'
| 'getSlackIntegrationMapping'
| 'createSlackIntegrationMapping'
| 'updateSlackIntegrationMappingById'
| 'deleteSlackIntegrationMappingById'
| 'getTeamsIntegrationMapping'
| 'createTeamsIntegrationMapping'
| 'updateTeamsIntegrationMappingById'
| 'deleteTeamsIntegrationMappingById'
> &
Partial<Pick<IntegrationMappingsManager, 'networkSession'>>,
) {
if (fields.auth !== undefined) {
this.auth = fields.auth;
}
if (fields.networkSession !== undefined) {
this.networkSession = fields.networkSession;
}
}
/**
* Lists [Slack integration mappings](https://support.box.com/hc/en-us/articles/4415585987859-Box-as-the-Content-Layer-for-Slack) in a users' enterprise.
*
* You need Admin or Co-Admin role to
* use this endpoint.
* @param {GetSlackIntegrationMappingQueryParams} queryParams Query parameters of getSlackIntegrationMapping method
* @param {GetSlackIntegrationMappingHeadersInput} headersInput Headers of getSlackIntegrationMapping method
* @param {CancellationToken} cancellationToken Token used for request cancellation.
* @returns {Promise<IntegrationMappings>}
*/
async getSlackIntegrationMapping(
queryParams: GetSlackIntegrationMappingQueryParams = {} satisfies GetSlackIntegrationMappingQueryParams,
headersInput: GetSlackIntegrationMappingHeadersInput = new GetSlackIntegrationMappingHeaders(
{},
),
cancellationToken?: CancellationToken,
): Promise<IntegrationMappings> {
const headers: GetSlackIntegrationMappingHeaders =
new GetSlackIntegrationMappingHeaders({
extraHeaders: headersInput.extraHeaders,
});
const queryParamsMap: {
readonly [key: string]: string;
} = prepareParams({
['marker']: toString(queryParams.marker) as string,
['limit']: toString(queryParams.limit) as string,
['partner_item_type']: toString(queryParams.partnerItemType) as string,
['partner_item_id']: toString(queryParams.partnerItemId) as string,
['box_item_id']: toString(queryParams.boxItemId) as string,
['box_item_type']: toString(queryParams.boxItemType) as string,
['is_manually_created']: toString(
queryParams.isManuallyCreated,
) as string,
});
const headersMap: {
readonly [key: string]: string;
} = prepareParams({ ...{}, ...headers.extraHeaders });
const response: FetchResponse =
await this.networkSession.networkClient.fetch(
new FetchOptions({
url: ''.concat(
this.networkSession.baseUrls.baseUrl,
'/2.0/integration_mappings/slack',
) as string,
method: 'GET',
params: queryParamsMap,
headers: headersMap,
responseFormat: 'json' as ResponseFormat,
auth: this.auth,
networkSession: this.networkSession,
cancellationToken: cancellationToken,
}),
);
return {
...deserializeIntegrationMappings(response.data!),
rawData: response.data!,
};
}
/**
* Creates a [Slack integration mapping](https://support.box.com/hc/en-us/articles/4415585987859-Box-as-the-Content-Layer-for-Slack)
* by mapping a Slack channel to a Box item.
*
* You need Admin or Co-Admin role to
* use this endpoint.
* @param {IntegrationMappingSlackCreateRequest} requestBody Request body of createSlackIntegrationMapping method
* @param {CreateSlackIntegrationMappingOptionalsInput} optionalsInput
* @returns {Promise<IntegrationMapping>}
*/
async createSlackIntegrationMapping(
requestBody: IntegrationMappingSlackCreateRequest,
optionalsInput: CreateSlackIntegrationMappingOptionalsInput = {},
): Promise<IntegrationMapping> {
const optionals: CreateSlackIntegrationMappingOptionals =
new CreateSlackIntegrationMappingOptionals({
headers: optionalsInput.headers,
cancellationToken: optionalsInput.cancellationToken,
});
const headers: any = optionals.headers;
const cancellationToken: any = optionals.cancellationToken;
const headersMap: {
readonly [key: string]: string;
} = prepareParams({ ...{}, ...headers.extraHeaders });
const response: FetchResponse =
await this.networkSession.networkClient.fetch(
new FetchOptions({
url: ''.concat(
this.networkSession.baseUrls.baseUrl,
'/2.0/integration_mappings/slack',
) as string,
method: 'POST',
headers: headersMap,
data: serializeIntegrationMappingSlackCreateRequest(requestBody),
contentType: 'application/json',
responseFormat: 'json' as ResponseFormat,
auth: this.auth,
networkSession: this.networkSession,
cancellationToken: cancellationToken,
}),
);
return {
...deserializeIntegrationMapping(response.data!),
rawData: response.data!,
};
}
/**
* Updates a [Slack integration mapping](https://support.box.com/hc/en-us/articles/4415585987859-Box-as-the-Content-Layer-for-Slack).
* Supports updating the Box folder ID and options.
*
* You need Admin or Co-Admin role to
* use this endpoint.
* @param {string} integrationMappingId An ID of an integration mapping.
Example: "11235432"
* @param {UpdateSlackIntegrationMappingByIdOptionalsInput} optionalsInput
* @returns {Promise<IntegrationMapping>}
*/
async updateSlackIntegrationMappingById(
integrationMappingId: string,
optionalsInput: UpdateSlackIntegrationMappingByIdOptionalsInput = {},
): Promise<IntegrationMapping> {
const optionals: UpdateSlackIntegrationMappingByIdOptionals =
new UpdateSlackIntegrationMappingByIdOptionals({
requestBody: optionalsInput.requestBody,
headers: optionalsInput.headers,
cancellationToken: optionalsInput.cancellationToken,
});
const requestBody: any = optionals.requestBody;
const headers: any = optionals.headers;
const cancellationToken: any = optionals.cancellationToken;
const headersMap: {
readonly [key: string]: string;
} = prepareParams({ ...{}, ...headers.extraHeaders });
const response: FetchResponse =
await this.networkSession.networkClient.fetch(
new FetchOptions({
url: ''.concat(
this.networkSession.baseUrls.baseUrl,
'/2.0/integration_mappings/slack/',
(toString(integrationMappingId) as string)!,
) as string,
method: 'PUT',
headers: headersMap,
data: serializeUpdateSlackIntegrationMappingByIdRequestBody(
requestBody,
),
contentType: 'application/json',
responseFormat: 'json' as ResponseFormat,
auth: this.auth,
networkSession: this.networkSession,
cancellationToken: cancellationToken,
}),
);
return {
...deserializeIntegrationMapping(response.data!),
rawData: response.data!,
};
}
/**
* Deletes a [Slack integration mapping](https://support.box.com/hc/en-us/articles/4415585987859-Box-as-the-Content-Layer-for-Slack).
*
*
* You need Admin or Co-Admin role to
* use this endpoint.
* @param {string} integrationMappingId An ID of an integration mapping.
Example: "11235432"
* @param {DeleteSlackIntegrationMappingByIdOptionalsInput} optionalsInput
* @returns {Promise<undefined>}
*/
async deleteSlackIntegrationMappingById(
integrationMappingId: string,
optionalsInput: DeleteSlackIntegrationMappingByIdOptionalsInput = {},
): Promise<undefined> {
const optionals: DeleteSlackIntegrationMappingByIdOptionals =
new DeleteSlackIntegrationMappingByIdOptionals({
headers: optionalsInput.headers,
cancellationToken: optionalsInput.cancellationToken,
});
const headers: any = optionals.headers;
const cancellationToken: any = optionals.cancellationToken;
const headersMap: {
readonly [key: string]: string;
} = prepareParams({ ...{}, ...headers.extraHeaders });
const response: FetchResponse =
await this.networkSession.networkClient.fetch(
new FetchOptions({
url: ''.concat(
this.networkSession.baseUrls.baseUrl,
'/2.0/integration_mappings/slack/',
(toString(integrationMappingId) as string)!,
) as string,
method: 'DELETE',
headers: headersMap,
responseFormat: 'no_content' as ResponseFormat,
auth: this.auth,
networkSession: this.networkSession,
cancellationToken: cancellationToken,
}),
);
return void 0;
}
/**
* Lists [Teams integration mappings](https://support.box.com/hc/en-us/articles/360044681474-Using-Box-for-Teams) in a users' enterprise.
* You need Admin or Co-Admin role to
* use this endpoint.
* @param {GetTeamsIntegrationMappingQueryParams} queryParams Query parameters of getTeamsIntegrationMapping method
* @param {GetTeamsIntegrationMappingHeadersInput} headersInput Headers of getTeamsIntegrationMapping method
* @param {CancellationToken} cancellationToken Token used for request cancellation.
* @returns {Promise<IntegrationMappingsTeams>}
*/
async getTeamsIntegrationMapping(
queryParams: GetTeamsIntegrationMappingQueryParams = {} satisfies GetTeamsIntegrationMappingQueryParams,
headersInput: GetTeamsIntegrationMappingHeadersInput = new GetTeamsIntegrationMappingHeaders(
{},
),
cancellationToken?: CancellationToken,
): Promise<IntegrationMappingsTeams> {
const headers: GetTeamsIntegrationMappingHeaders =
new GetTeamsIntegrationMappingHeaders({
extraHeaders: headersInput.extraHeaders,
});
const queryParamsMap: {
readonly [key: string]: string;
} = prepareParams({
['partner_item_type']: toString(queryParams.partnerItemType) as string,
['partner_item_id']: toString(queryParams.partnerItemId) as string,
['box_item_id']: toString(queryParams.boxItemId) as string,
['box_item_type']: toString(queryParams.boxItemType) as string,
});
const headersMap: {
readonly [key: string]: string;
} = prepareParams({ ...{}, ...headers.extraHeaders });
const response: FetchResponse =
await this.networkSession.networkClient.fetch(
new FetchOptions({
url: ''.concat(
this.networkSession.baseUrls.baseUrl,
'/2.0/integration_mappings/teams',
) as string,
method: 'GET',
params: queryParamsMap,
headers: headersMap,
responseFormat: 'json' as ResponseFormat,
auth: this.auth,
networkSession: this.networkSession,
cancellationToken: cancellationToken,
}),
);
return {
...deserializeIntegrationMappingsTeams(response.data!),
rawData: response.data!,
};
}
/**
* Creates a [Teams integration mapping](https://support.box.com/hc/en-us/articles/360044681474-Using-Box-for-Teams)
* by mapping a Teams channel to a Box item.
* You need Admin or Co-Admin role to
* use this endpoint.
* @param {IntegrationMappingTeamsCreateRequest} requestBody Request body of createTeamsIntegrationMapping method
* @param {CreateTeamsIntegrationMappingOptionalsInput} optionalsInput
* @returns {Promise<IntegrationMappingTeams>}
*/
async createTeamsIntegrationMapping(
requestBody: IntegrationMappingTeamsCreateRequest,
optionalsInput: CreateTeamsIntegrationMappingOptionalsInput = {},
): Promise<IntegrationMappingTeams> {
const optionals: CreateTeamsIntegrationMappingOptionals =
new CreateTeamsIntegrationMappingOptionals({
headers: optionalsInput.headers,
cancellationToken: optionalsInput.cancellationToken,
});
const headers: any = optionals.headers;
const cancellationToken: any = optionals.cancellationToken;
const headersMap: {
readonly [key: string]: string;
} = prepareParams({ ...{}, ...headers.extraHeaders });
const response: FetchResponse =
await this.networkSession.networkClient.fetch(
new FetchOptions({
url: ''.concat(
this.networkSession.baseUrls.baseUrl,
'/2.0/integration_mappings/teams',
) as string,
method: 'POST',
headers: headersMap,
data: serializeIntegrationMappingTeamsCreateRequest(requestBody),
contentType: 'application/json',
responseFormat: 'json' as ResponseFormat,
auth: this.auth,
networkSession: this.networkSession,
cancellationToken: cancellationToken,
}),
);
return {
...deserializeIntegrationMappingTeams(response.data!),
rawData: response.data!,
};
}
/**
* Updates a [Teams integration mapping](https://support.box.com/hc/en-us/articles/360044681474-Using-Box-for-Teams).
* Supports updating the Box folder ID and options.
* You need Admin or Co-Admin role to
* use this endpoint.
* @param {string} integrationMappingId An ID of an integration mapping.
Example: "11235432"
* @param {UpdateTeamsIntegrationMappingByIdOptionalsInput} optionalsInput
* @returns {Promise<IntegrationMappingTeams>}
*/
async updateTeamsIntegrationMappingById(
integrationMappingId: string,
optionalsInput: UpdateTeamsIntegrationMappingByIdOptionalsInput = {},
): Promise<IntegrationMappingTeams> {
const optionals: UpdateTeamsIntegrationMappingByIdOptionals =
new UpdateTeamsIntegrationMappingByIdOptionals({
requestBody: optionalsInput.requestBody,
headers: optionalsInput.headers,
cancellationToken: optionalsInput.cancellationToken,
});
const requestBody: any = optionals.requestBody;
const headers: any = optionals.headers;
const cancellationToken: any = optionals.cancellationToken;
const headersMap: {
readonly [key: string]: string;
} = prepareParams({ ...{}, ...headers.extraHeaders });
const response: FetchResponse =
await this.networkSession.networkClient.fetch(
new FetchOptions({
url: ''.concat(
this.networkSession.baseUrls.baseUrl,
'/2.0/integration_mappings/teams/',
(toString(integrationMappingId) as string)!,
) as string,
method: 'PUT',
headers: headersMap,
data: serializeUpdateTeamsIntegrationMappingByIdRequestBody(
requestBody,
),
contentType: 'application/json',
responseFormat: 'json' as ResponseFormat,
auth: this.auth,
networkSession: this.networkSession,
cancellationToken: cancellationToken,
}),
);
return {
...deserializeIntegrationMappingTeams(response.data!),
rawData: response.data!,
};
}
/**
* Deletes a [Teams integration mapping](https://support.box.com/hc/en-us/articles/360044681474-Using-Box-for-Teams).
* You need Admin or Co-Admin role to
* use this endpoint.
* @param {string} integrationMappingId An ID of an integration mapping.
Example: "11235432"
* @param {DeleteTeamsIntegrationMappingByIdOptionalsInput} optionalsInput
* @returns {Promise<undefined>}
*/
async deleteTeamsIntegrationMappingById(
integrationMappingId: string,
optionalsInput: DeleteTeamsIntegrationMappingByIdOptionalsInput = {},
): Promise<undefined> {
const optionals: DeleteTeamsIntegrationMappingByIdOptionals =
new DeleteTeamsIntegrationMappingByIdOptionals({
headers: optionalsInput.headers,
cancellationToken: optionalsInput.cancellationToken,
});
const headers: any = optionals.headers;
const cancellationToken: any = optionals.cancellationToken;
const headersMap: {
readonly [key: string]: string;
} = prepareParams({ ...{}, ...headers.extraHeaders });
const response: FetchResponse =
await this.networkSession.networkClient.fetch(
new FetchOptions({
url: ''.concat(
this.networkSession.baseUrls.baseUrl,
'/2.0/integration_mappings/teams/',
(toString(integrationMappingId) as string)!,
) as string,
method: 'DELETE',
headers: headersMap,
responseFormat: 'no_content' as ResponseFormat,
auth: this.auth,
networkSession: this.networkSession,
cancellationToken: cancellationToken,
}),
);
return void 0;
}
}
export interface IntegrationMappingsManagerInput {
readonly auth?: Authentication;
readonly networkSession?: NetworkSession;
}
export function serializeGetSlackIntegrationMappingQueryParamsPartnerItemTypeField(
val: GetSlackIntegrationMappingQueryParamsPartnerItemTypeField,
): SerializedData {
return val;
}
export function deserializeGetSlackIntegrationMappingQueryParamsPartnerItemTypeField(
val: SerializedData,
): GetSlackIntegrationMappingQueryParamsPartnerItemTypeField {
if (val == 'channel') {
return val;
}
if (sdIsString(val)) {
return val;
}
throw new BoxSdkError({
message:
"Can't deserialize GetSlackIntegrationMappingQueryParamsPartnerItemTypeField",
});
}
export function serializeGetSlackIntegrationMappingQueryParamsBoxItemTypeField(
val: GetSlackIntegrationMappingQueryParamsBoxItemTypeField,
): SerializedData {
return val;
}
export function deserializeGetSlackIntegrationMappingQueryParamsBoxItemTypeField(
val: SerializedData,
): GetSlackIntegrationMappingQueryParamsBoxItemTypeField {
if (val == 'folder') {
return val;
}
if (sdIsString(val)) {
return val;
}
throw new BoxSdkError({
message:
"Can't deserialize GetSlackIntegrationMappingQueryParamsBoxItemTypeField",
});
}
export function serializeUpdateSlackIntegrationMappingByIdRequestBody(
val: UpdateSlackIntegrationMappingByIdRequestBody,
): SerializedData {
return {
['box_item']:
val.boxItem == void 0
? val.boxItem
: serializeIntegrationMappingBoxItemSlack(val.boxItem),
['options']:
val.options == void 0
? val.options
: serializeIntegrationMappingSlackOptions(val.options),
};
}
export function deserializeUpdateSlackIntegrationMappingByIdRequestBody(
val: SerializedData,
): UpdateSlackIntegrationMappingByIdRequestBody {
if (!sdIsMap(val)) {
throw new BoxSdkError({
message:
'Expecting a map for "UpdateSlackIntegrationMappingByIdRequestBody"',
});
}
const boxItem: undefined | IntegrationMappingBoxItemSlack =
val.box_item == void 0
? void 0
: deserializeIntegrationMappingBoxItemSlack(val.box_item);
const options: undefined | IntegrationMappingSlackOptions =
val.options == void 0
? void 0
: deserializeIntegrationMappingSlackOptions(val.options);
return {
boxItem: boxItem,
options: options,
} satisfies UpdateSlackIntegrationMappingByIdRequestBody;
}
export function serializeGetTeamsIntegrationMappingQueryParamsPartnerItemTypeField(
val: GetTeamsIntegrationMappingQueryParamsPartnerItemTypeField,
): SerializedData {
return val;
}
export function deserializeGetTeamsIntegrationMappingQueryParamsPartnerItemTypeField(
val: SerializedData,
): GetTeamsIntegrationMappingQueryParamsPartnerItemTypeField {
if (val == 'channel') {
return val;
}
if (val == 'team') {
return val;
}
if (sdIsString(val)) {
return val;
}
throw new BoxSdkError({
message:
"Can't deserialize GetTeamsIntegrationMappingQueryParamsPartnerItemTypeField",
});
}
export function serializeGetTeamsIntegrationMappingQueryParamsBoxItemTypeField(
val: GetTeamsIntegrationMappingQueryParamsBoxItemTypeField,
): SerializedData {
return val;
}
export function deserializeGetTeamsIntegrationMappingQueryParamsBoxItemTypeField(
val: SerializedData,
): GetTeamsIntegrationMappingQueryParamsBoxItemTypeField {
if (val == 'folder') {
return val;
}
if (sdIsString(val)) {
return val;
}
throw new BoxSdkError({
message:
"Can't deserialize GetTeamsIntegrationMappingQueryParamsBoxItemTypeField",
});
}
export function serializeUpdateTeamsIntegrationMappingByIdRequestBody(
val: UpdateTeamsIntegrationMappingByIdRequestBody,
): SerializedData {
return {
['box_item']:
val.boxItem == void 0
? val.boxItem
: serializeFolderReference(val.boxItem),
};
}
export function deserializeUpdateTeamsIntegrationMappingByIdRequestBody(
val: SerializedData,
): UpdateTeamsIntegrationMappingByIdRequestBody {
if (!sdIsMap(val)) {
throw new BoxSdkError({
message:
'Expecting a map for "UpdateTeamsIntegrationMappingByIdRequestBody"',
});
}
const boxItem: undefined | FolderReference =
val.box_item == void 0 ? void 0 : deserializeFolderReference(val.box_item);
return {
boxItem: boxItem,
} satisfies UpdateTeamsIntegrationMappingByIdRequestBody;
}