box-node-sdk
Version:
Official SDK for Box Platform APIs
1,451 lines • 70.1 kB
text/typescript
import { serializeClassificationTemplate } from '../schemas/classificationTemplate';
import { deserializeClassificationTemplate } from '../schemas/classificationTemplate';
import { serializeClientError } from '../schemas/clientError';
import { deserializeClientError } from '../schemas/clientError';
import { ResponseFormat } from '../networking/fetchOptions';
import { ClassificationTemplate } from '../schemas/classificationTemplate';
import { ClientError } from '../schemas/clientError';
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 { 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 AddClassificationOptionals {
readonly headers: AddClassificationHeaders = new AddClassificationHeaders({});
readonly cancellationToken?: CancellationToken = void 0;
constructor(
fields: Omit<AddClassificationOptionals, 'headers' | 'cancellationToken'> &
Partial<
Pick<AddClassificationOptionals, 'headers' | 'cancellationToken'>
>,
) {
if (fields.headers !== undefined) {
this.headers = fields.headers;
}
if (fields.cancellationToken !== undefined) {
this.cancellationToken = fields.cancellationToken;
}
}
}
export interface AddClassificationOptionalsInput {
readonly headers?: AddClassificationHeaders;
readonly cancellationToken?: CancellationToken;
}
export class UpdateClassificationOptionals {
readonly headers: UpdateClassificationHeaders =
new UpdateClassificationHeaders({});
readonly cancellationToken?: CancellationToken = void 0;
constructor(
fields: Omit<
UpdateClassificationOptionals,
'headers' | 'cancellationToken'
> &
Partial<
Pick<UpdateClassificationOptionals, 'headers' | 'cancellationToken'>
>,
) {
if (fields.headers !== undefined) {
this.headers = fields.headers;
}
if (fields.cancellationToken !== undefined) {
this.cancellationToken = fields.cancellationToken;
}
}
}
export interface UpdateClassificationOptionalsInput {
readonly headers?: UpdateClassificationHeaders;
readonly cancellationToken?: CancellationToken;
}
export class CreateClassificationTemplateOptionals {
readonly headers: CreateClassificationTemplateHeaders =
new CreateClassificationTemplateHeaders({});
readonly cancellationToken?: CancellationToken = void 0;
constructor(
fields: Omit<
CreateClassificationTemplateOptionals,
'headers' | 'cancellationToken'
> &
Partial<
Pick<
CreateClassificationTemplateOptionals,
'headers' | 'cancellationToken'
>
>,
) {
if (fields.headers !== undefined) {
this.headers = fields.headers;
}
if (fields.cancellationToken !== undefined) {
this.cancellationToken = fields.cancellationToken;
}
}
}
export interface CreateClassificationTemplateOptionalsInput {
readonly headers?: CreateClassificationTemplateHeaders;
readonly cancellationToken?: CancellationToken;
}
export class GetClassificationTemplateHeaders {
/**
* Extra headers that will be included in the HTTP request. */
readonly extraHeaders?: {
readonly [key: string]: undefined | string;
} = {};
constructor(
fields: Omit<GetClassificationTemplateHeaders, 'extraHeaders'> &
Partial<Pick<GetClassificationTemplateHeaders, 'extraHeaders'>>,
) {
if (fields.extraHeaders !== undefined) {
this.extraHeaders = fields.extraHeaders;
}
}
}
export interface GetClassificationTemplateHeadersInput {
/**
* Extra headers that will be included in the HTTP request. */
readonly extraHeaders?: {
readonly [key: string]: undefined | string;
};
}
export type AddClassificationRequestBodyOpField = 'addEnumOption' | string;
export type AddClassificationRequestBodyFieldKeyField =
| 'Box__Security__Classification__Key'
| string;
export interface AddClassificationRequestBodyDataStaticConfigClassificationField {
/**
* A longer description of the classification. */
readonly classificationDefinition?: string;
/**
* An internal Box identifier used to assign a color to
* a classification label.
*
* Mapping between a `colorID` and a color may change
* without notice. Currently, the color mappings are as
* follows.
*
* * `0`: Yellow.
* * `1`: Orange.
* * `2`: Watermelon red.
* * `3`: Purple rain.
* * `4`: Light blue.
* * `5`: Dark blue.
* * `6`: Light green.
* * `7`: Gray. */
readonly colorId?: number;
readonly rawData?: SerializedData;
}
export interface AddClassificationRequestBodyDataStaticConfigField {
/**
* Additional details for the classification. */
readonly classification?: AddClassificationRequestBodyDataStaticConfigClassificationField;
readonly rawData?: SerializedData;
}
export interface AddClassificationRequestBodyDataField {
/**
* The label of the classification as shown in the web and
* mobile interfaces. This is the only field required to
* add a classification. */
readonly key: string;
/**
* A static configuration for the classification. */
readonly staticConfig?: AddClassificationRequestBodyDataStaticConfigField;
readonly rawData?: SerializedData;
}
export class AddClassificationRequestBody {
/**
* The type of change to perform on the classification
* object. */
readonly op: AddClassificationRequestBodyOpField =
'addEnumOption' as AddClassificationRequestBodyOpField;
/**
* Defines classifications
* available in the enterprise. */
readonly fieldKey: AddClassificationRequestBodyFieldKeyField =
'Box__Security__Classification__Key' as AddClassificationRequestBodyFieldKeyField;
/**
* The details of the classification to add. */
readonly data!: AddClassificationRequestBodyDataField;
readonly rawData?: SerializedData;
constructor(
fields: Omit<AddClassificationRequestBody, 'op' | 'fieldKey'> &
Partial<Pick<AddClassificationRequestBody, 'op' | 'fieldKey'>>,
) {
if (fields.op !== undefined) {
this.op = fields.op;
}
if (fields.fieldKey !== undefined) {
this.fieldKey = fields.fieldKey;
}
if (fields.data !== undefined) {
this.data = fields.data;
}
if (fields.rawData !== undefined) {
this.rawData = fields.rawData;
}
}
}
export interface AddClassificationRequestBodyInput {
/**
* The type of change to perform on the classification
* object. */
readonly op?: AddClassificationRequestBodyOpField;
/**
* Defines classifications
* available in the enterprise. */
readonly fieldKey?: AddClassificationRequestBodyFieldKeyField;
/**
* The details of the classification to add. */
readonly data: AddClassificationRequestBodyDataField;
readonly rawData?: SerializedData;
}
export class AddClassificationHeaders {
/**
* Extra headers that will be included in the HTTP request. */
readonly extraHeaders?: {
readonly [key: string]: undefined | string;
} = {};
constructor(
fields: Omit<AddClassificationHeaders, 'extraHeaders'> &
Partial<Pick<AddClassificationHeaders, 'extraHeaders'>>,
) {
if (fields.extraHeaders !== undefined) {
this.extraHeaders = fields.extraHeaders;
}
}
}
export interface AddClassificationHeadersInput {
/**
* Extra headers that will be included in the HTTP request. */
readonly extraHeaders?: {
readonly [key: string]: undefined | string;
};
}
export type UpdateClassificationRequestBodyOpField = 'editEnumOption' | string;
export type UpdateClassificationRequestBodyFieldKeyField =
| 'Box__Security__Classification__Key'
| string;
export interface UpdateClassificationRequestBodyDataStaticConfigClassificationField {
/**
* A longer description of the classification. */
readonly classificationDefinition?: string;
/**
* An internal Box identifier used to assign a color to
* a classification label.
*
* Mapping between a `colorID` and a color may change
* without notice. Currently, the color mappings are as
* follows.
*
* * `0`: Yellow.
* * `1`: Orange.
* * `2`: Watermelon red.
* * `3`: Purple rain.
* * `4`: Light blue.
* * `5`: Dark blue.
* * `6`: Light green.
* * `7`: Gray. */
readonly colorId?: number;
readonly rawData?: SerializedData;
}
export interface UpdateClassificationRequestBodyDataStaticConfigField {
/**
* Additional details for the classification. */
readonly classification?: UpdateClassificationRequestBodyDataStaticConfigClassificationField;
readonly rawData?: SerializedData;
}
export interface UpdateClassificationRequestBodyDataField {
/**
* A new label for the classification, as it will be
* shown in the web and mobile interfaces. */
readonly key: string;
/**
* A static configuration for the classification. */
readonly staticConfig?: UpdateClassificationRequestBodyDataStaticConfigField;
readonly rawData?: SerializedData;
}
export class UpdateClassificationRequestBody {
/**
* The type of change to perform on the classification
* object. */
readonly op: UpdateClassificationRequestBodyOpField =
'editEnumOption' as UpdateClassificationRequestBodyOpField;
/**
* Defines classifications
* available in the enterprise. */
readonly fieldKey: UpdateClassificationRequestBodyFieldKeyField =
'Box__Security__Classification__Key' as UpdateClassificationRequestBodyFieldKeyField;
/**
* The original label of the classification to change. */
readonly enumOptionKey!: string;
/**
* The details of the updated classification. */
readonly data!: UpdateClassificationRequestBodyDataField;
readonly rawData?: SerializedData;
constructor(
fields: Omit<UpdateClassificationRequestBody, 'op' | 'fieldKey'> &
Partial<Pick<UpdateClassificationRequestBody, 'op' | 'fieldKey'>>,
) {
if (fields.op !== undefined) {
this.op = fields.op;
}
if (fields.fieldKey !== undefined) {
this.fieldKey = fields.fieldKey;
}
if (fields.enumOptionKey !== undefined) {
this.enumOptionKey = fields.enumOptionKey;
}
if (fields.data !== undefined) {
this.data = fields.data;
}
if (fields.rawData !== undefined) {
this.rawData = fields.rawData;
}
}
}
export interface UpdateClassificationRequestBodyInput {
/**
* The type of change to perform on the classification
* object. */
readonly op?: UpdateClassificationRequestBodyOpField;
/**
* Defines classifications
* available in the enterprise. */
readonly fieldKey?: UpdateClassificationRequestBodyFieldKeyField;
/**
* The original label of the classification to change. */
readonly enumOptionKey: string;
/**
* The details of the updated classification. */
readonly data: UpdateClassificationRequestBodyDataField;
readonly rawData?: SerializedData;
}
export class UpdateClassificationHeaders {
/**
* Extra headers that will be included in the HTTP request. */
readonly extraHeaders?: {
readonly [key: string]: undefined | string;
} = {};
constructor(
fields: Omit<UpdateClassificationHeaders, 'extraHeaders'> &
Partial<Pick<UpdateClassificationHeaders, 'extraHeaders'>>,
) {
if (fields.extraHeaders !== undefined) {
this.extraHeaders = fields.extraHeaders;
}
}
}
export interface UpdateClassificationHeadersInput {
/**
* Extra headers that will be included in the HTTP request. */
readonly extraHeaders?: {
readonly [key: string]: undefined | string;
};
}
export type CreateClassificationTemplateRequestBodyScopeField =
| 'enterprise'
| string;
export type CreateClassificationTemplateRequestBodyTemplateKeyField =
| 'securityClassification-6VMVochwUWo'
| string;
export type CreateClassificationTemplateRequestBodyDisplayNameField =
| 'Classification'
| string;
export type CreateClassificationTemplateRequestBodyFieldsTypeField = 'enum';
export type CreateClassificationTemplateRequestBodyFieldsKeyField =
| 'Box__Security__Classification__Key'
| string;
export type CreateClassificationTemplateRequestBodyFieldsDisplayNameField =
| 'Classification'
| string;
export interface CreateClassificationTemplateRequestBodyFieldsOptionsStaticConfigClassificationField {
/**
* A longer description of the classification. */
readonly classificationDefinition?: string;
/**
* An identifier used to assign a color to
* a classification label.
*
* Mapping between a `colorID` and a color may
* change without notice. Currently, the color
* mappings are as follows.
*
* * `0`: Yellow.
* * `1`: Orange.
* * `2`: Watermelon red.
* * `3`: Purple rain.
* * `4`: Light blue.
* * `5`: Dark blue.
* * `6`: Light green.
* * `7`: Gray. */
readonly colorId?: number;
readonly rawData?: SerializedData;
}
export interface CreateClassificationTemplateRequestBodyFieldsOptionsStaticConfigField {
/**
* Additional information about the classification. */
readonly classification?: CreateClassificationTemplateRequestBodyFieldsOptionsStaticConfigClassificationField;
readonly rawData?: SerializedData;
}
export interface CreateClassificationTemplateRequestBodyFieldsOptionsField {
/**
* The display name and key this classification. This
* will be show in the Box UI. */
readonly key: string;
/**
* Additional information about the classification. */
readonly staticConfig?: CreateClassificationTemplateRequestBodyFieldsOptionsStaticConfigField;
readonly rawData?: SerializedData;
}
export class CreateClassificationTemplateRequestBodyFieldsField {
/**
* The type of the field
* that is always enum. */
readonly type: CreateClassificationTemplateRequestBodyFieldsTypeField =
'enum' as CreateClassificationTemplateRequestBodyFieldsTypeField;
/**
* Defines classifications
* available in the enterprise. */
readonly key: CreateClassificationTemplateRequestBodyFieldsKeyField =
'Box__Security__Classification__Key' as CreateClassificationTemplateRequestBodyFieldsKeyField;
/**
* A display name for the classification. */
readonly displayName: CreateClassificationTemplateRequestBodyFieldsDisplayNameField =
'Classification' as CreateClassificationTemplateRequestBodyFieldsDisplayNameField;
/**
* Determines if the classification
* template is
* hidden or available on
* web and mobile
* devices. */
readonly hidden?: boolean;
/**
* The actual list of classifications that are present on
* this template. */
readonly options!: readonly CreateClassificationTemplateRequestBodyFieldsOptionsField[];
readonly rawData?: SerializedData;
constructor(
fields: Omit<
CreateClassificationTemplateRequestBodyFieldsField,
'type' | 'key' | 'displayName'
> &
Partial<
Pick<
CreateClassificationTemplateRequestBodyFieldsField,
'type' | 'key' | 'displayName'
>
>,
) {
if (fields.type !== undefined) {
this.type = fields.type;
}
if (fields.key !== undefined) {
this.key = fields.key;
}
if (fields.displayName !== undefined) {
this.displayName = fields.displayName;
}
if (fields.hidden !== undefined) {
this.hidden = fields.hidden;
}
if (fields.options !== undefined) {
this.options = fields.options;
}
if (fields.rawData !== undefined) {
this.rawData = fields.rawData;
}
}
}
export interface CreateClassificationTemplateRequestBodyFieldsFieldInput {
/**
* The type of the field
* that is always enum. */
readonly type?: CreateClassificationTemplateRequestBodyFieldsTypeField;
/**
* Defines classifications
* available in the enterprise. */
readonly key?: CreateClassificationTemplateRequestBodyFieldsKeyField;
/**
* A display name for the classification. */
readonly displayName?: CreateClassificationTemplateRequestBodyFieldsDisplayNameField;
/**
* Determines if the classification
* template is
* hidden or available on
* web and mobile
* devices. */
readonly hidden?: boolean;
/**
* The actual list of classifications that are present on
* this template. */
readonly options: readonly CreateClassificationTemplateRequestBodyFieldsOptionsField[];
readonly rawData?: SerializedData;
}
export class CreateClassificationTemplateRequestBody {
/**
* The scope in which to create the classifications. This should
* be `enterprise` or `enterprise_{id}` where `id` is the unique
* ID of the enterprise. */
readonly scope: CreateClassificationTemplateRequestBodyScopeField =
'enterprise' as CreateClassificationTemplateRequestBodyScopeField;
/**
* Defines the list of metadata templates. */
readonly templateKey: CreateClassificationTemplateRequestBodyTemplateKeyField =
'securityClassification-6VMVochwUWo' as CreateClassificationTemplateRequestBodyTemplateKeyField;
/**
* The name of the
* template as shown in web and mobile interfaces. */
readonly displayName: CreateClassificationTemplateRequestBodyDisplayNameField =
'Classification' as CreateClassificationTemplateRequestBodyDisplayNameField;
/**
* Determines if the classification template is
* hidden or available on web and mobile
* devices. */
readonly hidden?: boolean;
/**
* Determines if classifications are
* copied along when the file or folder is
* copied. */
readonly copyInstanceOnItemCopy?: boolean;
/**
* The classification template requires exactly
* one field, which holds
* all the valid classification values. */
readonly fields!: readonly CreateClassificationTemplateRequestBodyFieldsField[];
readonly rawData?: SerializedData;
constructor(
fields: Omit<
CreateClassificationTemplateRequestBody,
'scope' | 'templateKey' | 'displayName'
> &
Partial<
Pick<
CreateClassificationTemplateRequestBody,
'scope' | 'templateKey' | 'displayName'
>
>,
) {
if (fields.scope !== undefined) {
this.scope = fields.scope;
}
if (fields.templateKey !== undefined) {
this.templateKey = fields.templateKey;
}
if (fields.displayName !== undefined) {
this.displayName = fields.displayName;
}
if (fields.hidden !== undefined) {
this.hidden = fields.hidden;
}
if (fields.copyInstanceOnItemCopy !== undefined) {
this.copyInstanceOnItemCopy = fields.copyInstanceOnItemCopy;
}
if (fields.fields !== undefined) {
this.fields = fields.fields;
}
if (fields.rawData !== undefined) {
this.rawData = fields.rawData;
}
}
}
export interface CreateClassificationTemplateRequestBodyInput {
/**
* The scope in which to create the classifications. This should
* be `enterprise` or `enterprise_{id}` where `id` is the unique
* ID of the enterprise. */
readonly scope?: CreateClassificationTemplateRequestBodyScopeField;
/**
* Defines the list of metadata templates. */
readonly templateKey?: CreateClassificationTemplateRequestBodyTemplateKeyField;
/**
* The name of the
* template as shown in web and mobile interfaces. */
readonly displayName?: CreateClassificationTemplateRequestBodyDisplayNameField;
/**
* Determines if the classification template is
* hidden or available on web and mobile
* devices. */
readonly hidden?: boolean;
/**
* Determines if classifications are
* copied along when the file or folder is
* copied. */
readonly copyInstanceOnItemCopy?: boolean;
/**
* The classification template requires exactly
* one field, which holds
* all the valid classification values. */
readonly fields: readonly CreateClassificationTemplateRequestBodyFieldsField[];
readonly rawData?: SerializedData;
}
export class CreateClassificationTemplateHeaders {
/**
* Extra headers that will be included in the HTTP request. */
readonly extraHeaders?: {
readonly [key: string]: undefined | string;
} = {};
constructor(
fields: Omit<CreateClassificationTemplateHeaders, 'extraHeaders'> &
Partial<Pick<CreateClassificationTemplateHeaders, 'extraHeaders'>>,
) {
if (fields.extraHeaders !== undefined) {
this.extraHeaders = fields.extraHeaders;
}
}
}
export interface CreateClassificationTemplateHeadersInput {
/**
* Extra headers that will be included in the HTTP request. */
readonly extraHeaders?: {
readonly [key: string]: undefined | string;
};
}
export class ClassificationsManager {
readonly auth?: Authentication;
readonly networkSession: NetworkSession = new NetworkSession({});
constructor(
fields: Omit<
ClassificationsManager,
| 'networkSession'
| 'getClassificationTemplate'
| 'addClassification'
| 'updateClassification'
| 'createClassificationTemplate'
> &
Partial<Pick<ClassificationsManager, 'networkSession'>>,
) {
if (fields.auth !== undefined) {
this.auth = fields.auth;
}
if (fields.networkSession !== undefined) {
this.networkSession = fields.networkSession;
}
}
/**
* Retrieves the classification metadata template and lists all the
* classifications available to this enterprise.
*
* This API can also be called by including the enterprise ID in the
* URL explicitly, for example
* `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`.
* @param {GetClassificationTemplateHeadersInput} headersInput Headers of getClassificationTemplate method
* @param {CancellationToken} cancellationToken Token used for request cancellation.
* @returns {Promise<ClassificationTemplate>}
*/
async getClassificationTemplate(
headersInput: GetClassificationTemplateHeadersInput = new GetClassificationTemplateHeaders(
{},
),
cancellationToken?: CancellationToken,
): Promise<ClassificationTemplate> {
const headers: GetClassificationTemplateHeaders =
new GetClassificationTemplateHeaders({
extraHeaders: headersInput.extraHeaders,
});
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/metadata_templates/enterprise/securityClassification-6VMVochwUWo/schema',
) as string,
method: 'GET',
headers: headersMap,
responseFormat: 'json' as ResponseFormat,
auth: this.auth,
networkSession: this.networkSession,
cancellationToken: cancellationToken,
}),
);
return {
...deserializeClassificationTemplate(response.data!),
rawData: response.data!,
};
}
/**
* Adds one or more new classifications to the list of classifications
* available to the enterprise.
*
* This API can also be called by including the enterprise ID in the
* URL explicitly, for example
* `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`.
* @param {readonly AddClassificationRequestBody[]} requestBody Request body of addClassification method
* @param {AddClassificationOptionalsInput} optionalsInput
* @returns {Promise<ClassificationTemplate>}
*/
async addClassification(
requestBody: readonly AddClassificationRequestBody[],
optionalsInput: AddClassificationOptionalsInput = {},
): Promise<ClassificationTemplate> {
const optionals: AddClassificationOptionals =
new AddClassificationOptionals({
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/metadata_templates/enterprise/securityClassification-6VMVochwUWo/schema#add',
) as string,
method: 'PUT',
headers: headersMap,
data: requestBody.map(
serializeAddClassificationRequestBody,
) as readonly any[],
contentType: 'application/json',
responseFormat: 'json' as ResponseFormat,
auth: this.auth,
networkSession: this.networkSession,
cancellationToken: cancellationToken,
}),
);
return {
...deserializeClassificationTemplate(response.data!),
rawData: response.data!,
};
}
/**
* Updates the labels and descriptions of one or more classifications
* available to the enterprise.
*
* This API can also be called by including the enterprise ID in the
* URL explicitly, for example
* `/metadata_templates/enterprise_12345/securityClassification-6VMVochwUWo/schema`.
* @param {readonly UpdateClassificationRequestBody[]} requestBody Request body of updateClassification method
* @param {UpdateClassificationOptionalsInput} optionalsInput
* @returns {Promise<ClassificationTemplate>}
*/
async updateClassification(
requestBody: readonly UpdateClassificationRequestBody[],
optionalsInput: UpdateClassificationOptionalsInput = {},
): Promise<ClassificationTemplate> {
const optionals: UpdateClassificationOptionals =
new UpdateClassificationOptionals({
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/metadata_templates/enterprise/securityClassification-6VMVochwUWo/schema#update',
) as string,
method: 'PUT',
headers: headersMap,
data: requestBody.map(
serializeUpdateClassificationRequestBody,
) as readonly any[],
contentType: 'application/json-patch+json',
responseFormat: 'json' as ResponseFormat,
auth: this.auth,
networkSession: this.networkSession,
cancellationToken: cancellationToken,
}),
);
return {
...deserializeClassificationTemplate(response.data!),
rawData: response.data!,
};
}
/**
* When an enterprise does not yet have any classifications, this API call
* initializes the classification template with an initial set of
* classifications.
*
* If an enterprise already has a classification, the template will already
* exist and instead an API call should be made to add additional
* classifications.
* @param {CreateClassificationTemplateRequestBodyInput} requestBodyInput Request body of createClassificationTemplate method
* @param {CreateClassificationTemplateOptionalsInput} optionalsInput
* @returns {Promise<ClassificationTemplate>}
*/
async createClassificationTemplate(
requestBodyInput: CreateClassificationTemplateRequestBodyInput,
optionalsInput: CreateClassificationTemplateOptionalsInput = {},
): Promise<ClassificationTemplate> {
const requestBody: CreateClassificationTemplateRequestBody =
new CreateClassificationTemplateRequestBody({
scope: requestBodyInput.scope,
templateKey: requestBodyInput.templateKey,
displayName: requestBodyInput.displayName,
hidden: requestBodyInput.hidden,
copyInstanceOnItemCopy: requestBodyInput.copyInstanceOnItemCopy,
fields: requestBodyInput.fields,
});
const optionals: CreateClassificationTemplateOptionals =
new CreateClassificationTemplateOptionals({
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/metadata_templates/schema#classifications',
) as string,
method: 'POST',
headers: headersMap,
data: serializeCreateClassificationTemplateRequestBody(requestBody),
contentType: 'application/json',
responseFormat: 'json' as ResponseFormat,
auth: this.auth,
networkSession: this.networkSession,
cancellationToken: cancellationToken,
}),
);
return {
...deserializeClassificationTemplate(response.data!),
rawData: response.data!,
};
}
}
export interface ClassificationsManagerInput {
readonly auth?: Authentication;
readonly networkSession?: NetworkSession;
}
export function serializeAddClassificationRequestBodyOpField(
val: AddClassificationRequestBodyOpField,
): SerializedData {
return val;
}
export function deserializeAddClassificationRequestBodyOpField(
val: SerializedData,
): AddClassificationRequestBodyOpField {
if (val == 'addEnumOption') {
return val;
}
if (sdIsString(val)) {
return val;
}
throw new BoxSdkError({
message: "Can't deserialize AddClassificationRequestBodyOpField",
});
}
export function serializeAddClassificationRequestBodyFieldKeyField(
val: AddClassificationRequestBodyFieldKeyField,
): SerializedData {
return val;
}
export function deserializeAddClassificationRequestBodyFieldKeyField(
val: SerializedData,
): AddClassificationRequestBodyFieldKeyField {
if (val == 'Box__Security__Classification__Key') {
return val;
}
if (sdIsString(val)) {
return val;
}
throw new BoxSdkError({
message: "Can't deserialize AddClassificationRequestBodyFieldKeyField",
});
}
export function serializeAddClassificationRequestBodyDataStaticConfigClassificationField(
val: AddClassificationRequestBodyDataStaticConfigClassificationField,
): SerializedData {
return {
['classificationDefinition']: val.classificationDefinition,
['colorID']: val.colorId,
};
}
export function deserializeAddClassificationRequestBodyDataStaticConfigClassificationField(
val: SerializedData,
): AddClassificationRequestBodyDataStaticConfigClassificationField {
if (!sdIsMap(val)) {
throw new BoxSdkError({
message:
'Expecting a map for "AddClassificationRequestBodyDataStaticConfigClassificationField"',
});
}
if (
!(val.classificationDefinition == void 0) &&
!sdIsString(val.classificationDefinition)
) {
throw new BoxSdkError({
message:
'Expecting string for "classificationDefinition" of type "AddClassificationRequestBodyDataStaticConfigClassificationField"',
});
}
const classificationDefinition: undefined | string =
val.classificationDefinition == void 0
? void 0
: val.classificationDefinition;
if (!(val.colorID == void 0) && !sdIsNumber(val.colorID)) {
throw new BoxSdkError({
message:
'Expecting number for "colorID" of type "AddClassificationRequestBodyDataStaticConfigClassificationField"',
});
}
const colorId: undefined | number =
val.colorID == void 0 ? void 0 : val.colorID;
return {
classificationDefinition: classificationDefinition,
colorId: colorId,
} satisfies AddClassificationRequestBodyDataStaticConfigClassificationField;
}
export function serializeAddClassificationRequestBodyDataStaticConfigField(
val: AddClassificationRequestBodyDataStaticConfigField,
): SerializedData {
return {
['classification']:
val.classification == void 0
? val.classification
: serializeAddClassificationRequestBodyDataStaticConfigClassificationField(
val.classification,
),
};
}
export function deserializeAddClassificationRequestBodyDataStaticConfigField(
val: SerializedData,
): AddClassificationRequestBodyDataStaticConfigField {
if (!sdIsMap(val)) {
throw new BoxSdkError({
message:
'Expecting a map for "AddClassificationRequestBodyDataStaticConfigField"',
});
}
const classification:
| undefined
| AddClassificationRequestBodyDataStaticConfigClassificationField =
val.classification == void 0
? void 0
: deserializeAddClassificationRequestBodyDataStaticConfigClassificationField(
val.classification,
);
return {
classification: classification,
} satisfies AddClassificationRequestBodyDataStaticConfigField;
}
export function serializeAddClassificationRequestBodyDataField(
val: AddClassificationRequestBodyDataField,
): SerializedData {
return {
['key']: val.key,
['staticConfig']:
val.staticConfig == void 0
? val.staticConfig
: serializeAddClassificationRequestBodyDataStaticConfigField(
val.staticConfig,
),
};
}
export function deserializeAddClassificationRequestBodyDataField(
val: SerializedData,
): AddClassificationRequestBodyDataField {
if (!sdIsMap(val)) {
throw new BoxSdkError({
message: 'Expecting a map for "AddClassificationRequestBodyDataField"',
});
}
if (val.key == void 0) {
throw new BoxSdkError({
message:
'Expecting "key" of type "AddClassificationRequestBodyDataField" to be defined',
});
}
if (!sdIsString(val.key)) {
throw new BoxSdkError({
message:
'Expecting string for "key" of type "AddClassificationRequestBodyDataField"',
});
}
const key: string = val.key;
const staticConfig:
| undefined
| AddClassificationRequestBodyDataStaticConfigField =
val.staticConfig == void 0
? void 0
: deserializeAddClassificationRequestBodyDataStaticConfigField(
val.staticConfig,
);
return {
key: key,
staticConfig: staticConfig,
} satisfies AddClassificationRequestBodyDataField;
}
export function serializeAddClassificationRequestBody(
val: AddClassificationRequestBody,
): SerializedData {
return {
['op']: serializeAddClassificationRequestBodyOpField(val.op),
['fieldKey']: serializeAddClassificationRequestBodyFieldKeyField(
val.fieldKey,
),
['data']: serializeAddClassificationRequestBodyDataField(val.data),
};
}
export function deserializeAddClassificationRequestBody(
val: SerializedData,
): AddClassificationRequestBody {
if (!sdIsMap(val)) {
throw new BoxSdkError({
message: 'Expecting a map for "AddClassificationRequestBody"',
});
}
if (val.op == void 0) {
throw new BoxSdkError({
message:
'Expecting "op" of type "AddClassificationRequestBody" to be defined',
});
}
const op: AddClassificationRequestBodyOpField =
deserializeAddClassificationRequestBodyOpField(val.op);
if (val.fieldKey == void 0) {
throw new BoxSdkError({
message:
'Expecting "fieldKey" of type "AddClassificationRequestBody" to be defined',
});
}
const fieldKey: AddClassificationRequestBodyFieldKeyField =
deserializeAddClassificationRequestBodyFieldKeyField(val.fieldKey);
if (val.data == void 0) {
throw new BoxSdkError({
message:
'Expecting "data" of type "AddClassificationRequestBody" to be defined',
});
}
const data: AddClassificationRequestBodyDataField =
deserializeAddClassificationRequestBodyDataField(val.data);
return {
op: op,
fieldKey: fieldKey,
data: data,
} satisfies AddClassificationRequestBody;
}
export function serializeAddClassificationRequestBodyInput(
val: AddClassificationRequestBodyInput,
): SerializedData {
return {
['op']:
val.op == void 0
? val.op
: serializeAddClassificationRequestBodyOpField(val.op),
['fieldKey']:
val.fieldKey == void 0
? val.fieldKey
: serializeAddClassificationRequestBodyFieldKeyField(val.fieldKey),
['data']: serializeAddClassificationRequestBodyDataField(val.data),
};
}
export function deserializeAddClassificationRequestBodyInput(
val: SerializedData,
): AddClassificationRequestBodyInput {
if (!sdIsMap(val)) {
throw new BoxSdkError({
message: 'Expecting a map for "AddClassificationRequestBodyInput"',
});
}
const op: undefined | AddClassificationRequestBodyOpField =
val.op == void 0
? void 0
: deserializeAddClassificationRequestBodyOpField(val.op);
const fieldKey: undefined | AddClassificationRequestBodyFieldKeyField =
val.fieldKey == void 0
? void 0
: deserializeAddClassificationRequestBodyFieldKeyField(val.fieldKey);
if (val.data == void 0) {
throw new BoxSdkError({
message:
'Expecting "data" of type "AddClassificationRequestBodyInput" to be defined',
});
}
const data: AddClassificationRequestBodyDataField =
deserializeAddClassificationRequestBodyDataField(val.data);
return {
op: op,
fieldKey: fieldKey,
data: data,
} satisfies AddClassificationRequestBodyInput;
}
export function serializeUpdateClassificationRequestBodyOpField(
val: UpdateClassificationRequestBodyOpField,
): SerializedData {
return val;
}
export function deserializeUpdateClassificationRequestBodyOpField(
val: SerializedData,
): UpdateClassificationRequestBodyOpField {
if (val == 'editEnumOption') {
return val;
}
if (sdIsString(val)) {
return val;
}
throw new BoxSdkError({
message: "Can't deserialize UpdateClassificationRequestBodyOpField",
});
}
export function serializeUpdateClassificationRequestBodyFieldKeyField(
val: UpdateClassificationRequestBodyFieldKeyField,
): SerializedData {
return val;
}
export function deserializeUpdateClassificationRequestBodyFieldKeyField(
val: SerializedData,
): UpdateClassificationRequestBodyFieldKeyField {
if (val == 'Box__Security__Classification__Key') {
return val;
}
if (sdIsString(val)) {
return val;
}
throw new BoxSdkError({
message: "Can't deserialize UpdateClassificationRequestBodyFieldKeyField",
});
}
export function serializeUpdateClassificationRequestBodyDataStaticConfigClassificationField(
val: UpdateClassificationRequestBodyDataStaticConfigClassificationField,
): SerializedData {
return {
['classificationDefinition']: val.classificationDefinition,
['colorID']: val.colorId,
};
}
export function deserializeUpdateClassificationRequestBodyDataStaticConfigClassificationField(
val: SerializedData,
): UpdateClassificationRequestBodyDataStaticConfigClassificationField {
if (!sdIsMap(val)) {
throw new BoxSdkError({
message:
'Expecting a map for "UpdateClassificationRequestBodyDataStaticConfigClassificationField"',
});
}
if (
!(val.classificationDefinition == void 0) &&
!sdIsString(val.classificationDefinition)
) {
throw new BoxSdkError({
message:
'Expecting string for "classificationDefinition" of type "UpdateClassificationRequestBodyDataStaticConfigClassificationField"',
});
}
const classificationDefinition: undefined | string =
val.classificationDefinition == void 0
? void 0
: val.classificationDefinition;
if (!(val.colorID == void 0) && !sdIsNumber(val.colorID)) {
throw new BoxSdkError({
message:
'Expecting number for "colorID" of type "UpdateClassificationRequestBodyDataStaticConfigClassificationField"',
});
}
const colorId: undefined | number =
val.colorID == void 0 ? void 0 : val.colorID;
return {
classificationDefinition: classificationDefinition,
colorId: colorId,
} satisfies UpdateClassificationRequestBodyDataStaticConfigClassificationField;
}
export function serializeUpdateClassificationRequestBodyDataStaticConfigField(
val: UpdateClassificationRequestBodyDataStaticConfigField,
): SerializedData {
return {
['classification']:
val.classification == void 0
? val.classification
: serializeUpdateClassificationRequestBodyDataStaticConfigClassificationField(
val.classification,
),
};
}
export function deserializeUpdateClassificationRequestBodyDataStaticConfigField(
val: SerializedData,
): UpdateClassificationRequestBodyDataStaticConfigField {
if (!sdIsMap(val)) {
throw new BoxSdkError({
message:
'Expecting a map for "UpdateClassificationRequestBodyDataStaticConfigField"',
});
}
const classification:
| undefined
| UpdateClassificationRequestBodyDataStaticConfigClassificationField =
val.classification == void 0
? void 0
: deserializeUpdateClassificationRequestBodyDataStaticConfigClassificationField(
val.classification,
);
return {
classification: classification,
} satisfies UpdateClassificationRequestBodyDataStaticConfigField;
}
export function serializeUpdateClassificationRequestBodyDataField(
val: UpdateClassificationRequestBodyDataField,
): SerializedData {
return {
['key']: val.key,
['staticConfig']:
val.staticConfig == void 0
? val.staticConfig
: serializeUpdateClassificationRequestBodyDataStaticConfigField(
val.staticConfig,
),
};
}
export function deserializeUpdateClassificationRequestBodyDataField(
val: SerializedData,
): UpdateClassificationRequestBodyDataField {
if (!sdIsMap(val)) {
throw new BoxSdkError({
message: 'Expecting a map for "UpdateClassificationRequestBodyDataField"',
});
}
if (val.key == void 0) {
throw new BoxSdkError({
message:
'Expecting "key" of type "UpdateClassificationRequestBodyDataField" to be defined',
});
}
if (!sdIsString(val.key)) {
throw new BoxSdkError({
message:
'Expecting string for "key" of type "UpdateClassificationRequestBodyDataField"',
});
}
const key: string = val.key;
const staticConfig:
| undefined
| UpdateClassificationRequestBodyDataStaticConfigField =
val.staticConfig == void 0
? void 0
: deserializeUpdateClassificationRequestBodyDataStaticConfigField(
val.staticConfig,
);
return {
key: key,
staticConfig: staticConfig,
} satisfies UpdateClassificationRequestBodyDataField;
}
export function serializeUpdateClassificationRequestBody(
val: UpdateClassificationRequestBody,
): SerializedData {
return {
['op']: serializeUpdateClassificationRequestBodyOpField(val.op),
['fieldKey']: serializeUpdateClassificationRequestBodyFieldKeyField(
val.fieldKey,
),
['enumOptionKey']: val.enumOptionKey,
['data']: serializeUpdateClassificationRequestBodyDataField(val.data),
};
}
export function deserializeUpdateClassificationRequestBody(
val: SerializedData,
): UpdateClassificationRequestBody {
if (!sdIsMap(val)) {
throw new BoxSdkError({
message: 'Expecting a map for "UpdateClassificationRequestBody"',
});
}
if (val.op == void 0) {
throw new BoxSdkError({
message:
'Expecting "op" of type "UpdateClassificationRequestBody" to be defined',
});
}
const op: UpdateClassificationRequestBodyOpField =
deserializeUpdateClassificationRequestBodyOpField(val.op);
if (val.fieldKey == void 0) {
throw new BoxSdkError({
message:
'Expecting "fieldKey" of type "UpdateClassificationRequestBody" to be defined',
});
}
const fieldKey: UpdateClassificationRequestBodyFieldKeyField =
deserializeUpdateClassificationRequestBodyFieldKeyField(val.fieldKey);
if (val.enumOptionKey == void 0) {
throw new BoxSdkError({
message:
'Expecting "enumOptionKey" of type "UpdateClassificationRequestBody" to be defined',
});
}
if (!sdIsString(val.enumOptionKey)) {
throw new BoxSdkError({
message:
'Expecting string for "enumOptionKey" of type "UpdateClassificationRequestBody"',
});
}
const enumOptionKey: string = val.enumOptionKey;
if (val.data == void 0) {
throw new BoxSdkError({
message:
'Expecting "data" of type "UpdateClassificationRequestBody" to be defined',
});
}
const data: UpdateClassificationRequestBodyDataField =
deserializeUpdateClassificationRequestBodyDataField(val.data);
return {
op: op,
fieldKey: fieldKey,
enumOptionKey: enumOptionKey,
data: data,
} satisfies UpdateClassificationRequestBody;
}
export function serializeUpdateClassificationRequestBodyInput(
val: UpdateClassificationRequestBodyInput,
): SerializedData {
return {
['op']:
val.op == void 0
? val.op
: serializeUpdateClassificationRequestBodyOpField(val.op),
['fieldKey']:
val.fieldKey == void 0
? val.fieldKey
: serializeUpdateClassificationRequestBodyFieldKeyField(val.fieldKey),
['enumOptionKey']: val.enumOptionKey,
['data']: serializeUpdateClassificationRequestBodyDataField(val.data),
};
}
export function deserializeUpdateClassificationRequestBodyInput(
val: SerializedData,
): UpdateClassificationRequestBodyInput {
if (!sdIsMap(val)) {
throw new BoxSdkError({
message: 'Expecting a map for "UpdateClassificationRequestBodyInput"',
});
}
const op: undefined | UpdateClassificationRequestBodyOpField =
val.op == void 0
? void 0
: deserializeUpdateClassificationRequestBodyOpField(val.op);
const fieldKey: undefined | UpdateClassificationRequestBodyFieldKeyField =
val.fieldKey == void 0
? void 0
: deserializeUpdateClassificationRequestBodyFieldKeyField(val.fieldKey);
if (val.enumOptionKey == void 0) {
throw new BoxSdkError({
message:
'Expecting "enumOptionKey" of type "UpdateClassificationRequestBodyInput" to be defined',
});
}
if (!sdIsString(val.enumOptionKey)) {
throw new BoxSdkError({
message:
'Expecting string for "enumOptionKey" of type "UpdateClassificationRequestBodyInput"',
});
}
const enumOptionKey: string = val.enumOptionKey;
if (val.data == void 0) {
throw new BoxSdkError({
message:
'Expecting "data" of type "UpdateClassificationRequestBodyInput" to be defined',
});
}
const data: UpdateClassificationRequestBodyDataField =
deserializeUpdateClassificationRequestBodyDataField(val.data);
return {
op: op,
fieldKey: fieldKey,
enumOptionKey: enumOptionKey,
data: data,
} satisfies UpdateClassificationRequestBodyInput;
}
export function serializeCreateClassificationTemplateRequestBodyScopeField(
val: CreateClassificationTemplateRequestBodyScopeField,
): SerializedData {
return val;
}
export function deserializeCreateClassificationTemplateRequestBodyScopeField(
val: SerializedData,
): CreateClassificationTemplateRequestBodyScopeField {
if (val == 'enterprise') {
return val;
}
if (sdIsString(val)) {
return val;
}
throw new BoxSdkError({
message:
"Can't deserialize CreateClassificationTemplateRequestBodyScopeField",
});
}
export function serializeCreateClassificationTemplateRequestBodyTemplateKeyField(
val: CreateClassificationTemplateRequestBodyTemplateKeyField,
): SerializedData {
return val;
}
export function deserializeCreateClassificationTemplateRequestBodyTemplateKeyField(
val: SerializedData,
): CreateClassificationTemplateRequestBodyTemplateKeyField {
if (val == 'securityClassification-6VMVochwUWo') {
return val;
}
if (sdIsString(val)) {
return val;
}
throw new BoxSdkError({
message:
"Can't deserialize CreateClassificationTemplateRequestBodyTemplateKeyField",
});
}
export function serializeCreateClassificationTemplateRequestBodyDisplayNameField(
val: CreateClassificationTemplateRequestBodyDisplayNameField,
): SerializedData {
return val;
}
export function deserializeCreateClassificationTemplateRequestBodyDisplayNameField(
val: SerializedData,
): CreateClassificationTemplateRequestBodyDisplayNameField {
if (val == 'Classification') {
return val;
}
if (sdIsString(val)) {
return val;
}
throw new BoxSdkError({
message:
"Can't deserialize CreateClassificationTemplateRequestBodyDisplayNameField",
});
}
export function serializeCreateClassificationTemplateRequestBodyFieldsTypeField(
val: CreateClassificationTemplateRequestBodyFieldsTypeField,
): SerializedData {
return val;
}
export function deserializeCreateClassificationTemplateRequestBodyFieldsTypeField(
val: SerializedData,
): CreateClassificationTemplateRequestBodyFieldsTypeField {
if (val == 'enum') {
return val;
}
throw new BoxSdkError({
message:
"Can't deserialize CreateClassificationTemplateRequestBodyFieldsTypeField",
});
}
export function serializeCreateClassificationTemplateRequestBodyFieldsKeyField(
val: CreateClassificationTemplateRequestBodyFieldsKeyField,
): SerializedData {
return val;
}
export function