UNPKG

box-node-sdk

Version:

Official SDK for Box Platform APIs

1,451 lines 70.1 kB
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