UNPKG

box-node-sdk

Version:

Official SDK for Box Platform APIs

1,467 lines 57.2 kB
import { serializeFileBaseTypeField } from './fileBase'; import { deserializeFileBaseTypeField } from './fileBase'; import { serializeFileBase } from './fileBase'; import { deserializeFileBase } from './fileBase'; import { serializeFileVersionMini } from './fileVersionMini'; import { deserializeFileVersionMini } from './fileVersionMini'; import { serializeFileMini } from './fileMini'; import { deserializeFileMini } from './fileMini'; import { serializeFilePathCollectionField } from './file'; import { deserializeFilePathCollectionField } from './file'; import { serializeFileSharedLinkField } from './file'; import { deserializeFileSharedLinkField } from './file'; import { serializeFolderMini } from './folderMini'; import { deserializeFolderMini } from './folderMini'; import { serializeFileItemStatusField } from './file'; import { deserializeFileItemStatusField } from './file'; import { serializeFile } from './file'; import { deserializeFile } from './file'; import { serializeUserMini } from './userMini'; import { deserializeUserMini } from './userMini'; import { serializeResourceScope } from './resourceScope'; import { deserializeResourceScope } from './resourceScope'; import { serializeMetadataFull } from './metadataFull'; import { deserializeMetadataFull } from './metadataFull'; import { serializeDateTime } from '../internal/utils'; import { deserializeDateTime } from '../internal/utils'; import { FileBaseTypeField } from './fileBase'; import { FileBase } from './fileBase'; import { FileVersionMini } from './fileVersionMini'; import { FileMini } from './fileMini'; import { FilePathCollectionField } from './file'; import { FileSharedLinkField } from './file'; import { FolderMini } from './folderMini'; import { FileItemStatusField } from './file'; import { File } from './file'; import { UserMini } from './userMini'; import { ResourceScope } from './resourceScope'; import { MetadataFull } from './metadataFull'; import { BoxSdkError } from '../box/errors'; import { DateTime } 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 interface FileFullPermissionsField { /** * Specifies if the current user can delete this item. */ readonly canDelete: boolean; /** * Specifies if the current user can download this item. */ readonly canDownload: boolean; /** * Specifies if the current user can invite new * users to collaborate on this item, and if the user can * update the role of a user already collaborated on this * item. */ readonly canInviteCollaborator: boolean; /** * Specifies if the user can rename this item. */ readonly canRename: boolean; /** * Specifies if the user can change the access level of an * existing shared link on this item. */ readonly canSetShareAccess: boolean; /** * Specifies if the user can create a shared link for this item. */ readonly canShare: boolean; /** * Specifies if the user can place annotations on this file. */ readonly canAnnotate: boolean; /** * Specifies if the user can place comments on this file. */ readonly canComment: boolean; /** * Specifies if the user can preview this file. */ readonly canPreview: boolean; /** * Specifies if the user can upload a new version of this file. */ readonly canUpload: boolean; /** * Specifies if the user view all annotations placed on this file. */ readonly canViewAnnotationsAll: boolean; /** * Specifies if the user view annotations placed by themselves * on this file. */ readonly canViewAnnotationsSelf: boolean; readonly rawData?: SerializedData; } export type FileFullLockTypeField = 'lock'; export type FileFullLockAppTypeField = | 'gsuite' | 'office_wopi' | 'office_wopiplus' | 'other' | string; export interface FileFullLockField { /** * The unique identifier for this lock. */ readonly id?: string; /** * The value will always be `lock`. */ readonly type?: FileFullLockTypeField; readonly createdBy?: UserMini; /** * The time this lock was created at. */ readonly createdAt?: DateTime; /** * The time this lock is to expire at, which might be in the past. */ readonly expiredAt?: DateTime; /** * Whether or not the file can be downloaded while locked. */ readonly isDownloadPrevented?: boolean; /** * If the lock is managed by an application rather than a user, this * field identifies the type of the application that holds the lock. * This is an open enum and may be extended with additional values in * the future. */ readonly appType?: FileFullLockAppTypeField | null; readonly rawData?: SerializedData; } export type FileFullExpiringEmbedLinkTokenTypeField = 'bearer' | string; export interface FileFullExpiringEmbedLinkField { /** * The requested access token. */ readonly accessToken?: string; /** * The time in seconds by which this token will expire. */ readonly expiresIn?: number; /** * The type of access token returned. */ readonly tokenType?: FileFullExpiringEmbedLinkTokenTypeField; /** * The permissions that this access token permits, * providing a list of resources (files, folders, etc) * and the scopes permitted for each of those resources. */ readonly restrictedTo?: readonly ResourceScope[]; /** * The actual expiring embed URL for this file, constructed * from the file ID and access tokens specified in this object. */ readonly url?: string; readonly rawData?: SerializedData; } export interface FileFullWatermarkInfoField { /** * Specifies if this item has a watermark applied. */ readonly isWatermarked?: boolean; readonly rawData?: SerializedData; } export type FileFullAllowedInviteeRolesField = | 'editor' | 'viewer' | 'previewer' | 'uploader' | 'previewer uploader' | 'viewer uploader' | 'co-owner' | string; export interface FileFullMetadataField { readonly extraData?: { readonly [key: string]: { readonly [key: string]: MetadataFull; }; }; readonly rawData?: SerializedData; } export interface FileFullRepresentationsEntriesContentField { /** * The download URL that can be used to fetch the representation. * Make sure to make an authenticated API call to this endpoint. * * This URL is a template and will require the `{+asset_path}` to * be replaced by a path. In general, for unpaged representations * it can be replaced by an empty string. * * For paged representations, replace the `{+asset_path}` with the * page to request plus the extension for the file, for example * `1.pdf`. * * When requesting the download URL the following additional * query params can be passed along. * * * `set_content_disposition_type` - Sets the * `Content-Disposition` header in the API response with the * specified disposition type of either `inline` or `attachment`. * If not supplied, the `Content-Disposition` header is not * included in the response. * * * `set_content_disposition_filename` - Allows the application to * define the representation's file name used in the * `Content-Disposition` header. If not defined, the filename * is derived from the source file name in Box combined with the * extension of the representation. */ readonly urlTemplate?: string; readonly rawData?: SerializedData; } export interface FileFullRepresentationsEntriesInfoField { /** * The API URL that can be used to get more info on this file * representation. Make sure to make an authenticated API call * to this endpoint. */ readonly url?: string; readonly rawData?: SerializedData; } export interface FileFullRepresentationsEntriesPropertiesField { /** * The width by height size of this representation in pixels. */ readonly dimensions?: string; /** * Indicates if the representation is build up out of multiple * pages. */ readonly paged?: string; /** * Indicates if the representation can be used as a thumbnail of * the file. */ readonly thumb?: string; readonly rawData?: SerializedData; } export type FileFullRepresentationsEntriesStatusStateField = | 'success' | 'viewable' | 'pending' | 'none' | string; export interface FileFullRepresentationsEntriesStatusField { /** * The status of the representation. * * * `success` defines the representation as ready to be viewed. * * `viewable` defines a video to be ready for viewing. * * `pending` defines the representation as to be generated. Retry * this endpoint to re-check the status. * * `none` defines that the representation will be created when * requested. Request the URL defined in the `info` object to * trigger this generation. */ readonly state?: FileFullRepresentationsEntriesStatusStateField; readonly rawData?: SerializedData; } export interface FileFullRepresentationsEntriesField { /** * An object containing the URL that can be used to actually fetch * the representation. */ readonly content?: FileFullRepresentationsEntriesContentField; /** * An object containing the URL that can be used to fetch more info * on this representation. */ readonly info?: FileFullRepresentationsEntriesInfoField; /** * An object containing the size and type of this presentation. */ readonly properties?: FileFullRepresentationsEntriesPropertiesField; /** * Indicates the file type of the returned representation. */ readonly representation?: string; /** * An object containing the status of this representation. */ readonly status?: FileFullRepresentationsEntriesStatusField; readonly rawData?: SerializedData; } export interface FileFullRepresentationsField { /** * A list of files. */ readonly entries?: readonly FileFullRepresentationsEntriesField[]; readonly rawData?: SerializedData; } export interface FileFullClassificationField { /** * The name of the classification. */ readonly name?: string; /** * An explanation of the meaning of this classification. */ readonly definition?: string; /** * The color that is used to display the * classification label in a user-interface. Colors are defined by the admin * or co-admin who created the classification in the Box web app. */ readonly color?: string; readonly rawData?: SerializedData; } export type FileFullSharedLinkPermissionOptionsField = | 'can_preview' | 'can_download' | 'can_edit' | string; export class FileFull extends File { readonly versionNumber?: string; readonly commentCount?: number; readonly permissions?: FileFullPermissionsField; readonly tags?: readonly string[]; readonly lock?: FileFullLockField | null; readonly extension?: string; readonly isPackage?: boolean; readonly expiringEmbedLink?: FileFullExpiringEmbedLinkField; readonly watermarkInfo?: FileFullWatermarkInfoField; readonly isAccessibleViaSharedLink?: boolean; readonly allowedInviteeRoles?: readonly FileFullAllowedInviteeRolesField[]; readonly isExternallyOwned?: boolean; readonly hasCollaborations?: boolean; readonly metadata?: FileFullMetadataField; readonly expiresAt?: DateTime | null; readonly representations?: FileFullRepresentationsField; readonly classification?: FileFullClassificationField; readonly uploaderDisplayName?: string; readonly dispositionAt?: DateTime | null; readonly sharedLinkPermissionOptions?: | readonly FileFullSharedLinkPermissionOptionsField[] | null; readonly isAssociatedWithAppItem?: boolean; constructor(fields: FileFull) { super(fields); if (fields.versionNumber !== undefined) { this.versionNumber = fields.versionNumber; } if (fields.commentCount !== undefined) { this.commentCount = fields.commentCount; } if (fields.permissions !== undefined) { this.permissions = fields.permissions; } if (fields.tags !== undefined) { this.tags = fields.tags; } if (fields.lock !== undefined) { this.lock = fields.lock; } if (fields.extension !== undefined) { this.extension = fields.extension; } if (fields.isPackage !== undefined) { this.isPackage = fields.isPackage; } if (fields.expiringEmbedLink !== undefined) { this.expiringEmbedLink = fields.expiringEmbedLink; } if (fields.watermarkInfo !== undefined) { this.watermarkInfo = fields.watermarkInfo; } if (fields.isAccessibleViaSharedLink !== undefined) { this.isAccessibleViaSharedLink = fields.isAccessibleViaSharedLink; } if (fields.allowedInviteeRoles !== undefined) { this.allowedInviteeRoles = fields.allowedInviteeRoles; } if (fields.isExternallyOwned !== undefined) { this.isExternallyOwned = fields.isExternallyOwned; } if (fields.hasCollaborations !== undefined) { this.hasCollaborations = fields.hasCollaborations; } if (fields.metadata !== undefined) { this.metadata = fields.metadata; } if (fields.expiresAt !== undefined) { this.expiresAt = fields.expiresAt; } if (fields.representations !== undefined) { this.representations = fields.representations; } if (fields.classification !== undefined) { this.classification = fields.classification; } if (fields.uploaderDisplayName !== undefined) { this.uploaderDisplayName = fields.uploaderDisplayName; } if (fields.dispositionAt !== undefined) { this.dispositionAt = fields.dispositionAt; } if (fields.sharedLinkPermissionOptions !== undefined) { this.sharedLinkPermissionOptions = fields.sharedLinkPermissionOptions; } if (fields.isAssociatedWithAppItem !== undefined) { this.isAssociatedWithAppItem = fields.isAssociatedWithAppItem; } } } export function serializeFileFullPermissionsField( val: FileFullPermissionsField, ): SerializedData { return { ['can_delete']: val.canDelete, ['can_download']: val.canDownload, ['can_invite_collaborator']: val.canInviteCollaborator, ['can_rename']: val.canRename, ['can_set_share_access']: val.canSetShareAccess, ['can_share']: val.canShare, ['can_annotate']: val.canAnnotate, ['can_comment']: val.canComment, ['can_preview']: val.canPreview, ['can_upload']: val.canUpload, ['can_view_annotations_all']: val.canViewAnnotationsAll, ['can_view_annotations_self']: val.canViewAnnotationsSelf, }; } export function deserializeFileFullPermissionsField( val: SerializedData, ): FileFullPermissionsField { if (!sdIsMap(val)) { throw new BoxSdkError({ message: 'Expecting a map for "FileFullPermissionsField"', }); } if (val.can_delete == void 0) { throw new BoxSdkError({ message: 'Expecting "can_delete" of type "FileFullPermissionsField" to be defined', }); } if (!sdIsBoolean(val.can_delete)) { throw new BoxSdkError({ message: 'Expecting boolean for "can_delete" of type "FileFullPermissionsField"', }); } const canDelete: boolean = val.can_delete; if (val.can_download == void 0) { throw new BoxSdkError({ message: 'Expecting "can_download" of type "FileFullPermissionsField" to be defined', }); } if (!sdIsBoolean(val.can_download)) { throw new BoxSdkError({ message: 'Expecting boolean for "can_download" of type "FileFullPermissionsField"', }); } const canDownload: boolean = val.can_download; if (val.can_invite_collaborator == void 0) { throw new BoxSdkError({ message: 'Expecting "can_invite_collaborator" of type "FileFullPermissionsField" to be defined', }); } if (!sdIsBoolean(val.can_invite_collaborator)) { throw new BoxSdkError({ message: 'Expecting boolean for "can_invite_collaborator" of type "FileFullPermissionsField"', }); } const canInviteCollaborator: boolean = val.can_invite_collaborator; if (val.can_rename == void 0) { throw new BoxSdkError({ message: 'Expecting "can_rename" of type "FileFullPermissionsField" to be defined', }); } if (!sdIsBoolean(val.can_rename)) { throw new BoxSdkError({ message: 'Expecting boolean for "can_rename" of type "FileFullPermissionsField"', }); } const canRename: boolean = val.can_rename; if (val.can_set_share_access == void 0) { throw new BoxSdkError({ message: 'Expecting "can_set_share_access" of type "FileFullPermissionsField" to be defined', }); } if (!sdIsBoolean(val.can_set_share_access)) { throw new BoxSdkError({ message: 'Expecting boolean for "can_set_share_access" of type "FileFullPermissionsField"', }); } const canSetShareAccess: boolean = val.can_set_share_access; if (val.can_share == void 0) { throw new BoxSdkError({ message: 'Expecting "can_share" of type "FileFullPermissionsField" to be defined', }); } if (!sdIsBoolean(val.can_share)) { throw new BoxSdkError({ message: 'Expecting boolean for "can_share" of type "FileFullPermissionsField"', }); } const canShare: boolean = val.can_share; if (val.can_annotate == void 0) { throw new BoxSdkError({ message: 'Expecting "can_annotate" of type "FileFullPermissionsField" to be defined', }); } if (!sdIsBoolean(val.can_annotate)) { throw new BoxSdkError({ message: 'Expecting boolean for "can_annotate" of type "FileFullPermissionsField"', }); } const canAnnotate: boolean = val.can_annotate; if (val.can_comment == void 0) { throw new BoxSdkError({ message: 'Expecting "can_comment" of type "FileFullPermissionsField" to be defined', }); } if (!sdIsBoolean(val.can_comment)) { throw new BoxSdkError({ message: 'Expecting boolean for "can_comment" of type "FileFullPermissionsField"', }); } const canComment: boolean = val.can_comment; if (val.can_preview == void 0) { throw new BoxSdkError({ message: 'Expecting "can_preview" of type "FileFullPermissionsField" to be defined', }); } if (!sdIsBoolean(val.can_preview)) { throw new BoxSdkError({ message: 'Expecting boolean for "can_preview" of type "FileFullPermissionsField"', }); } const canPreview: boolean = val.can_preview; if (val.can_upload == void 0) { throw new BoxSdkError({ message: 'Expecting "can_upload" of type "FileFullPermissionsField" to be defined', }); } if (!sdIsBoolean(val.can_upload)) { throw new BoxSdkError({ message: 'Expecting boolean for "can_upload" of type "FileFullPermissionsField"', }); } const canUpload: boolean = val.can_upload; if (val.can_view_annotations_all == void 0) { throw new BoxSdkError({ message: 'Expecting "can_view_annotations_all" of type "FileFullPermissionsField" to be defined', }); } if (!sdIsBoolean(val.can_view_annotations_all)) { throw new BoxSdkError({ message: 'Expecting boolean for "can_view_annotations_all" of type "FileFullPermissionsField"', }); } const canViewAnnotationsAll: boolean = val.can_view_annotations_all; if (val.can_view_annotations_self == void 0) { throw new BoxSdkError({ message: 'Expecting "can_view_annotations_self" of type "FileFullPermissionsField" to be defined', }); } if (!sdIsBoolean(val.can_view_annotations_self)) { throw new BoxSdkError({ message: 'Expecting boolean for "can_view_annotations_self" of type "FileFullPermissionsField"', }); } const canViewAnnotationsSelf: boolean = val.can_view_annotations_self; return { canDelete: canDelete, canDownload: canDownload, canInviteCollaborator: canInviteCollaborator, canRename: canRename, canSetShareAccess: canSetShareAccess, canShare: canShare, canAnnotate: canAnnotate, canComment: canComment, canPreview: canPreview, canUpload: canUpload, canViewAnnotationsAll: canViewAnnotationsAll, canViewAnnotationsSelf: canViewAnnotationsSelf, } satisfies FileFullPermissionsField; } export function serializeFileFullLockTypeField( val: FileFullLockTypeField, ): SerializedData { return val; } export function deserializeFileFullLockTypeField( val: SerializedData, ): FileFullLockTypeField { if (val == 'lock') { return val; } throw new BoxSdkError({ message: "Can't deserialize FileFullLockTypeField" }); } export function serializeFileFullLockAppTypeField( val: FileFullLockAppTypeField, ): SerializedData { return val; } export function deserializeFileFullLockAppTypeField( val: SerializedData, ): FileFullLockAppTypeField { if (val == 'gsuite') { return val; } if (val == 'office_wopi') { return val; } if (val == 'office_wopiplus') { return val; } if (val == 'other') { return val; } if (sdIsString(val)) { return val; } throw new BoxSdkError({ message: "Can't deserialize FileFullLockAppTypeField", }); } export function serializeFileFullLockField( val: FileFullLockField, ): SerializedData { return { ['id']: val.id, ['type']: val.type == void 0 ? val.type : serializeFileFullLockTypeField(val.type), ['created_by']: val.createdBy == void 0 ? val.createdBy : serializeUserMini(val.createdBy), ['created_at']: val.createdAt == void 0 ? val.createdAt : serializeDateTime(val.createdAt), ['expired_at']: val.expiredAt == void 0 ? val.expiredAt : serializeDateTime(val.expiredAt), ['is_download_prevented']: val.isDownloadPrevented, ['app_type']: val.appType == void 0 ? val.appType : serializeFileFullLockAppTypeField(val.appType), }; } export function deserializeFileFullLockField( val: SerializedData, ): FileFullLockField { if (!sdIsMap(val)) { throw new BoxSdkError({ message: 'Expecting a map for "FileFullLockField"', }); } if (!(val.id == void 0) && !sdIsString(val.id)) { throw new BoxSdkError({ message: 'Expecting string for "id" of type "FileFullLockField"', }); } const id: undefined | string = val.id == void 0 ? void 0 : val.id; const type: undefined | FileFullLockTypeField = val.type == void 0 ? void 0 : deserializeFileFullLockTypeField(val.type); const createdBy: undefined | UserMini = val.created_by == void 0 ? void 0 : deserializeUserMini(val.created_by); if (!(val.created_at == void 0) && !sdIsString(val.created_at)) { throw new BoxSdkError({ message: 'Expecting string for "created_at" of type "FileFullLockField"', }); } const createdAt: undefined | DateTime = val.created_at == void 0 ? void 0 : deserializeDateTime(val.created_at); if (!(val.expired_at == void 0) && !sdIsString(val.expired_at)) { throw new BoxSdkError({ message: 'Expecting string for "expired_at" of type "FileFullLockField"', }); } const expiredAt: undefined | DateTime = val.expired_at == void 0 ? void 0 : deserializeDateTime(val.expired_at); if ( !(val.is_download_prevented == void 0) && !sdIsBoolean(val.is_download_prevented) ) { throw new BoxSdkError({ message: 'Expecting boolean for "is_download_prevented" of type "FileFullLockField"', }); } const isDownloadPrevented: undefined | boolean = val.is_download_prevented == void 0 ? void 0 : val.is_download_prevented; const appType: undefined | FileFullLockAppTypeField = val.app_type == void 0 ? void 0 : deserializeFileFullLockAppTypeField(val.app_type); return { id: id, type: type, createdBy: createdBy, createdAt: createdAt, expiredAt: expiredAt, isDownloadPrevented: isDownloadPrevented, appType: appType, } satisfies FileFullLockField; } export function serializeFileFullExpiringEmbedLinkTokenTypeField( val: FileFullExpiringEmbedLinkTokenTypeField, ): SerializedData { return val; } export function deserializeFileFullExpiringEmbedLinkTokenTypeField( val: SerializedData, ): FileFullExpiringEmbedLinkTokenTypeField { if (val == 'bearer') { return val; } if (sdIsString(val)) { return val; } throw new BoxSdkError({ message: "Can't deserialize FileFullExpiringEmbedLinkTokenTypeField", }); } export function serializeFileFullExpiringEmbedLinkField( val: FileFullExpiringEmbedLinkField, ): SerializedData { return { ['access_token']: val.accessToken, ['expires_in']: val.expiresIn, ['token_type']: val.tokenType == void 0 ? val.tokenType : serializeFileFullExpiringEmbedLinkTokenTypeField(val.tokenType), ['restricted_to']: val.restrictedTo == void 0 ? val.restrictedTo : (val.restrictedTo.map(function (item: ResourceScope): SerializedData { return serializeResourceScope(item); }) as readonly any[]), ['url']: val.url, }; } export function deserializeFileFullExpiringEmbedLinkField( val: SerializedData, ): FileFullExpiringEmbedLinkField { if (!sdIsMap(val)) { throw new BoxSdkError({ message: 'Expecting a map for "FileFullExpiringEmbedLinkField"', }); } if (!(val.access_token == void 0) && !sdIsString(val.access_token)) { throw new BoxSdkError({ message: 'Expecting string for "access_token" of type "FileFullExpiringEmbedLinkField"', }); } const accessToken: undefined | string = val.access_token == void 0 ? void 0 : val.access_token; if (!(val.expires_in == void 0) && !sdIsNumber(val.expires_in)) { throw new BoxSdkError({ message: 'Expecting number for "expires_in" of type "FileFullExpiringEmbedLinkField"', }); } const expiresIn: undefined | number = val.expires_in == void 0 ? void 0 : val.expires_in; const tokenType: undefined | FileFullExpiringEmbedLinkTokenTypeField = val.token_type == void 0 ? void 0 : deserializeFileFullExpiringEmbedLinkTokenTypeField(val.token_type); if (!(val.restricted_to == void 0) && !sdIsList(val.restricted_to)) { throw new BoxSdkError({ message: 'Expecting array for "restricted_to" of type "FileFullExpiringEmbedLinkField"', }); } const restrictedTo: undefined | readonly ResourceScope[] = val.restricted_to == void 0 ? void 0 : sdIsList(val.restricted_to) ? (val.restricted_to.map(function (itm: SerializedData): ResourceScope { return deserializeResourceScope(itm); }) as readonly any[]) : []; if (!(val.url == void 0) && !sdIsString(val.url)) { throw new BoxSdkError({ message: 'Expecting string for "url" of type "FileFullExpiringEmbedLinkField"', }); } const url: undefined | string = val.url == void 0 ? void 0 : val.url; return { accessToken: accessToken, expiresIn: expiresIn, tokenType: tokenType, restrictedTo: restrictedTo, url: url, } satisfies FileFullExpiringEmbedLinkField; } export function serializeFileFullWatermarkInfoField( val: FileFullWatermarkInfoField, ): SerializedData { return { ['is_watermarked']: val.isWatermarked }; } export function deserializeFileFullWatermarkInfoField( val: SerializedData, ): FileFullWatermarkInfoField { if (!sdIsMap(val)) { throw new BoxSdkError({ message: 'Expecting a map for "FileFullWatermarkInfoField"', }); } if (!(val.is_watermarked == void 0) && !sdIsBoolean(val.is_watermarked)) { throw new BoxSdkError({ message: 'Expecting boolean for "is_watermarked" of type "FileFullWatermarkInfoField"', }); } const isWatermarked: undefined | boolean = val.is_watermarked == void 0 ? void 0 : val.is_watermarked; return { isWatermarked: isWatermarked } satisfies FileFullWatermarkInfoField; } export function serializeFileFullAllowedInviteeRolesField( val: FileFullAllowedInviteeRolesField, ): SerializedData { return val; } export function deserializeFileFullAllowedInviteeRolesField( val: SerializedData, ): FileFullAllowedInviteeRolesField { if (val == 'editor') { return val; } if (val == 'viewer') { return val; } if (val == 'previewer') { return val; } if (val == 'uploader') { return val; } if (val == 'previewer uploader') { return val; } if (val == 'viewer uploader') { return val; } if (val == 'co-owner') { return val; } if (sdIsString(val)) { return val; } throw new BoxSdkError({ message: "Can't deserialize FileFullAllowedInviteeRolesField", }); } export function serializeFileFullMetadataField( val: FileFullMetadataField, ): SerializedData { return { ...{}, ...val.extraData }; } export function deserializeFileFullMetadataField( val: SerializedData, ): FileFullMetadataField { if (!sdIsMap(val)) { throw new BoxSdkError({ message: 'Expecting a map for "FileFullMetadataField"', }); } if (!(val == void 0) && !sdIsMap(val)) { throw new BoxSdkError({ message: 'Expecting object for "extraData" of type "FileFullMetadataField"', }); } const extraData: | undefined | { readonly [key: string]: { readonly [key: string]: MetadataFull; }; } = val == void 0 ? void 0 : sdIsMap(val) ? (Object.fromEntries( Object.entries(val).map(([k, v]: [string, any]) => [ k, (function (v: any): any { return sdIsMap(v) ? (Object.fromEntries( Object.entries(v).map(([k, v]: [string, any]) => [ k, deserializeMetadataFull(v), ]), ) as { readonly [key: string]: any; }) : {}; })(v), ]), ) as { readonly [key: string]: any; }) : {}; return { extraData: extraData } satisfies FileFullMetadataField; } export function serializeFileFullRepresentationsEntriesContentField( val: FileFullRepresentationsEntriesContentField, ): SerializedData { return { ['url_template']: val.urlTemplate }; } export function deserializeFileFullRepresentationsEntriesContentField( val: SerializedData, ): FileFullRepresentationsEntriesContentField { if (!sdIsMap(val)) { throw new BoxSdkError({ message: 'Expecting a map for "FileFullRepresentationsEntriesContentField"', }); } if (!(val.url_template == void 0) && !sdIsString(val.url_template)) { throw new BoxSdkError({ message: 'Expecting string for "url_template" of type "FileFullRepresentationsEntriesContentField"', }); } const urlTemplate: undefined | string = val.url_template == void 0 ? void 0 : val.url_template; return { urlTemplate: urlTemplate, } satisfies FileFullRepresentationsEntriesContentField; } export function serializeFileFullRepresentationsEntriesInfoField( val: FileFullRepresentationsEntriesInfoField, ): SerializedData { return { ['url']: val.url }; } export function deserializeFileFullRepresentationsEntriesInfoField( val: SerializedData, ): FileFullRepresentationsEntriesInfoField { if (!sdIsMap(val)) { throw new BoxSdkError({ message: 'Expecting a map for "FileFullRepresentationsEntriesInfoField"', }); } if (!(val.url == void 0) && !sdIsString(val.url)) { throw new BoxSdkError({ message: 'Expecting string for "url" of type "FileFullRepresentationsEntriesInfoField"', }); } const url: undefined | string = val.url == void 0 ? void 0 : val.url; return { url: url } satisfies FileFullRepresentationsEntriesInfoField; } export function serializeFileFullRepresentationsEntriesPropertiesField( val: FileFullRepresentationsEntriesPropertiesField, ): SerializedData { return { ['dimensions']: val.dimensions, ['paged']: val.paged, ['thumb']: val.thumb, }; } export function deserializeFileFullRepresentationsEntriesPropertiesField( val: SerializedData, ): FileFullRepresentationsEntriesPropertiesField { if (!sdIsMap(val)) { throw new BoxSdkError({ message: 'Expecting a map for "FileFullRepresentationsEntriesPropertiesField"', }); } if (!(val.dimensions == void 0) && !sdIsString(val.dimensions)) { throw new BoxSdkError({ message: 'Expecting string for "dimensions" of type "FileFullRepresentationsEntriesPropertiesField"', }); } const dimensions: undefined | string = val.dimensions == void 0 ? void 0 : val.dimensions; if (!(val.paged == void 0) && !sdIsString(val.paged)) { throw new BoxSdkError({ message: 'Expecting string for "paged" of type "FileFullRepresentationsEntriesPropertiesField"', }); } const paged: undefined | string = val.paged == void 0 ? void 0 : val.paged; if (!(val.thumb == void 0) && !sdIsString(val.thumb)) { throw new BoxSdkError({ message: 'Expecting string for "thumb" of type "FileFullRepresentationsEntriesPropertiesField"', }); } const thumb: undefined | string = val.thumb == void 0 ? void 0 : val.thumb; return { dimensions: dimensions, paged: paged, thumb: thumb, } satisfies FileFullRepresentationsEntriesPropertiesField; } export function serializeFileFullRepresentationsEntriesStatusStateField( val: FileFullRepresentationsEntriesStatusStateField, ): SerializedData { return val; } export function deserializeFileFullRepresentationsEntriesStatusStateField( val: SerializedData, ): FileFullRepresentationsEntriesStatusStateField { if (val == 'success') { return val; } if (val == 'viewable') { return val; } if (val == 'pending') { return val; } if (val == 'none') { return val; } if (sdIsString(val)) { return val; } throw new BoxSdkError({ message: "Can't deserialize FileFullRepresentationsEntriesStatusStateField", }); } export function serializeFileFullRepresentationsEntriesStatusField( val: FileFullRepresentationsEntriesStatusField, ): SerializedData { return { ['state']: val.state == void 0 ? val.state : serializeFileFullRepresentationsEntriesStatusStateField(val.state), }; } export function deserializeFileFullRepresentationsEntriesStatusField( val: SerializedData, ): FileFullRepresentationsEntriesStatusField { if (!sdIsMap(val)) { throw new BoxSdkError({ message: 'Expecting a map for "FileFullRepresentationsEntriesStatusField"', }); } const state: undefined | FileFullRepresentationsEntriesStatusStateField = val.state == void 0 ? void 0 : deserializeFileFullRepresentationsEntriesStatusStateField(val.state); return { state: state } satisfies FileFullRepresentationsEntriesStatusField; } export function serializeFileFullRepresentationsEntriesField( val: FileFullRepresentationsEntriesField, ): SerializedData { return { ['content']: val.content == void 0 ? val.content : serializeFileFullRepresentationsEntriesContentField(val.content), ['info']: val.info == void 0 ? val.info : serializeFileFullRepresentationsEntriesInfoField(val.info), ['properties']: val.properties == void 0 ? val.properties : serializeFileFullRepresentationsEntriesPropertiesField( val.properties, ), ['representation']: val.representation, ['status']: val.status == void 0 ? val.status : serializeFileFullRepresentationsEntriesStatusField(val.status), }; } export function deserializeFileFullRepresentationsEntriesField( val: SerializedData, ): FileFullRepresentationsEntriesField { if (!sdIsMap(val)) { throw new BoxSdkError({ message: 'Expecting a map for "FileFullRepresentationsEntriesField"', }); } const content: undefined | FileFullRepresentationsEntriesContentField = val.content == void 0 ? void 0 : deserializeFileFullRepresentationsEntriesContentField(val.content); const info: undefined | FileFullRepresentationsEntriesInfoField = val.info == void 0 ? void 0 : deserializeFileFullRepresentationsEntriesInfoField(val.info); const properties: undefined | FileFullRepresentationsEntriesPropertiesField = val.properties == void 0 ? void 0 : deserializeFileFullRepresentationsEntriesPropertiesField( val.properties, ); if (!(val.representation == void 0) && !sdIsString(val.representation)) { throw new BoxSdkError({ message: 'Expecting string for "representation" of type "FileFullRepresentationsEntriesField"', }); } const representation: undefined | string = val.representation == void 0 ? void 0 : val.representation; const status: undefined | FileFullRepresentationsEntriesStatusField = val.status == void 0 ? void 0 : deserializeFileFullRepresentationsEntriesStatusField(val.status); return { content: content, info: info, properties: properties, representation: representation, status: status, } satisfies FileFullRepresentationsEntriesField; } export function serializeFileFullRepresentationsField( val: FileFullRepresentationsField, ): SerializedData { return { ['entries']: val.entries == void 0 ? val.entries : (val.entries.map(function ( item: FileFullRepresentationsEntriesField, ): SerializedData { return serializeFileFullRepresentationsEntriesField(item); }) as readonly any[]), }; } export function deserializeFileFullRepresentationsField( val: SerializedData, ): FileFullRepresentationsField { if (!sdIsMap(val)) { throw new BoxSdkError({ message: 'Expecting a map for "FileFullRepresentationsField"', }); } if (!(val.entries == void 0) && !sdIsList(val.entries)) { throw new BoxSdkError({ message: 'Expecting array for "entries" of type "FileFullRepresentationsField"', }); } const entries: undefined | readonly FileFullRepresentationsEntriesField[] = val.entries == void 0 ? void 0 : sdIsList(val.entries) ? (val.entries.map(function ( itm: SerializedData, ): FileFullRepresentationsEntriesField { return deserializeFileFullRepresentationsEntriesField(itm); }) as readonly any[]) : []; return { entries: entries } satisfies FileFullRepresentationsField; } export function serializeFileFullClassificationField( val: FileFullClassificationField, ): SerializedData { return { ['name']: val.name, ['definition']: val.definition, ['color']: val.color, }; } export function deserializeFileFullClassificationField( val: SerializedData, ): FileFullClassificationField { if (!sdIsMap(val)) { throw new BoxSdkError({ message: 'Expecting a map for "FileFullClassificationField"', }); } if (!(val.name == void 0) && !sdIsString(val.name)) { throw new BoxSdkError({ message: 'Expecting string for "name" of type "FileFullClassificationField"', }); } const name: undefined | string = val.name == void 0 ? void 0 : val.name; if (!(val.definition == void 0) && !sdIsString(val.definition)) { throw new BoxSdkError({ message: 'Expecting string for "definition" of type "FileFullClassificationField"', }); } const definition: undefined | string = val.definition == void 0 ? void 0 : val.definition; if (!(val.color == void 0) && !sdIsString(val.color)) { throw new BoxSdkError({ message: 'Expecting string for "color" of type "FileFullClassificationField"', }); } const color: undefined | string = val.color == void 0 ? void 0 : val.color; return { name: name, definition: definition, color: color, } satisfies FileFullClassificationField; } export function serializeFileFullSharedLinkPermissionOptionsField( val: FileFullSharedLinkPermissionOptionsField, ): SerializedData { return val; } export function deserializeFileFullSharedLinkPermissionOptionsField( val: SerializedData, ): FileFullSharedLinkPermissionOptionsField { if (val == 'can_preview') { return val; } if (val == 'can_download') { return val; } if (val == 'can_edit') { return val; } if (sdIsString(val)) { return val; } throw new BoxSdkError({ message: "Can't deserialize FileFullSharedLinkPermissionOptionsField", }); } export function serializeFileFull(val: FileFull): SerializedData { const base: any = serializeFile(val); if (!sdIsMap(base)) { throw new BoxSdkError({ message: 'Expecting a map for "FileFull"' }); } return { ...base, ...{ ['version_number']: val.versionNumber, ['comment_count']: val.commentCount, ['permissions']: val.permissions == void 0 ? val.permissions : serializeFileFullPermissionsField(val.permissions), ['tags']: val.tags == void 0 ? val.tags : (val.tags.map(function (item: string): SerializedData { return item; }) as readonly any[]), ['lock']: val.lock == void 0 ? val.lock : serializeFileFullLockField(val.lock), ['extension']: val.extension, ['is_package']: val.isPackage, ['expiring_embed_link']: val.expiringEmbedLink == void 0 ? val.expiringEmbedLink : serializeFileFullExpiringEmbedLinkField(val.expiringEmbedLink), ['watermark_info']: val.watermarkInfo == void 0 ? val.watermarkInfo : serializeFileFullWatermarkInfoField(val.watermarkInfo), ['is_accessible_via_shared_link']: val.isAccessibleViaSharedLink, ['allowed_invitee_roles']: val.allowedInviteeRoles == void 0 ? val.allowedInviteeRoles : (val.allowedInviteeRoles.map(function ( item: FileFullAllowedInviteeRolesField, ): SerializedData { return serializeFileFullAllowedInviteeRolesField(item); }) as readonly any[]), ['is_externally_owned']: val.isExternallyOwned, ['has_collaborations']: val.hasCollaborations, ['metadata']: val.metadata == void 0 ? val.metadata : serializeFileFullMetadataField(val.metadata), ['expires_at']: val.expiresAt == void 0 ? val.expiresAt : serializeDateTime(val.expiresAt), ['representations']: val.representations == void 0 ? val.representations : serializeFileFullRepresentationsField(val.representations), ['classification']: val.classification == void 0 ? val.classification : serializeFileFullClassificationField(val.classification), ['uploader_display_name']: val.uploaderDisplayName, ['disposition_at']: val.dispositionAt == void 0 ? val.dispositionAt : serializeDateTime(val.dispositionAt), ['shared_link_permission_options']: val.sharedLinkPermissionOptions == void 0 ? val.sharedLinkPermissionOptions : (val.sharedLinkPermissionOptions.map(function ( item: FileFullSharedLinkPermissionOptionsField, ): SerializedData { return serializeFileFullSharedLinkPermissionOptionsField(item); }) as readonly any[]), ['is_associated_with_app_item']: val.isAssociatedWithAppItem, }, }; } export function deserializeFileFull(val: SerializedData): FileFull { if (!sdIsMap(val)) { throw new BoxSdkError({ message: 'Expecting a map for "FileFull"' }); } if (!(val.version_number == void 0) && !sdIsString(val.version_number)) { throw new BoxSdkError({ message: 'Expecting string for "version_number" of type "FileFull"', }); } const versionNumber: undefined | string = val.version_number == void 0 ? void 0 : val.version_number; if (!(val.comment_count == void 0) && !sdIsNumber(val.comment_count)) { throw new BoxSdkError({ message: 'Expecting number for "comment_count" of type "FileFull"', }); } const commentCount: undefined | number = val.comment_count == void 0 ? void 0 : val.comment_count; const permissions: undefined | FileFullPermissionsField = val.permissions == void 0 ? void 0 : deserializeFileFullPermissionsField(val.permissions); if (!(val.tags == void 0) && !sdIsList(val.tags)) { throw new BoxSdkError({ message: 'Expecting array for "tags" of type "FileFull"', }); } const tags: undefined | readonly string[] = val.tags == void 0 ? void 0 : sdIsList(val.tags) ? (val.tags.map(function (itm: SerializedData): string { if (!sdIsString(itm)) { throw new BoxSdkError({ message: 'Expecting string for "FileFull"', }); } return itm; }) as readonly any[]) : []; const lock: undefined | FileFullLockField = val.lock == void 0 ? void 0 : deserializeFileFullLockField(val.lock); if (!(val.extension == void 0) && !sdIsString(val.extension)) { throw new BoxSdkError({ message: 'Expecting string for "extension" of type "FileFull"', }); } const extension: undefined | string = val.extension == void 0 ? void 0 : val.extension; if (!(val.is_package == void 0) && !sdIsBoolean(val.is_package)) { throw new BoxSdkError({ message: 'Expecting boolean for "is_package" of type "FileFull"', }); } const isPackage: undefined | boolean = val.is_package == void 0 ? void 0 : val.is_package; const expiringEmbedLink: undefined | FileFullExpiringEmbedLinkField = val.expiring_embed_link == void 0 ? void 0 : deserializeFileFullExpiringEmbedLinkField(val.expiring_embed_link); const watermarkInfo: undefined | FileFullWatermarkInfoField = val.watermark_info == void 0 ? void 0 : deserializeFileFullWatermarkInfoField(val.watermark_info); if ( !(val.is_accessible_via_shared_link == void 0) && !sdIsBoolean(val.is_accessible_via_shared_link) ) { throw new BoxSdkError({ message: 'Expecting boolean for "is_accessible_via_shared_link" of type "FileFull"', }); } const isAccessibleViaSharedLink: undefined | boolean = val.is_accessible_via_shared_link == void 0 ? void 0 : val.is_accessible_via_shared_link; if ( !(val.allowed_invitee_roles == void 0) && !sdIsList(val.allowed_invitee_roles) ) { throw new BoxSdkError({ message: 'Expecting array for "allowed_invitee_roles" of type "FileFull"', }); } const allowedInviteeRoles: | undefined | readonly FileFullAllowedInviteeRolesField[] = val.allowed_invitee_roles == void 0 ? void 0 : sdIsList(val.allowed_invitee_roles) ? (val.allowed_invitee_roles.map(function ( itm: SerializedData, ): FileFullAllowedInviteeRolesField { return deserializeFileFullAllowedInviteeRolesField(itm); }) as readonly any[]) : []; if ( !(val.is_externally_owned == void 0) && !sdIsBoolean(val.is_externally_owned) ) { throw new BoxSdkError({ message: 'Expecting boolean for "is_externally_owned" of type "FileFull"', }); } const isExternallyOwned: undefined | boolean = val.is_externally_owned == void 0 ? void 0 : val.is_externally_owned; if ( !(val.has_collaborations == void 0) && !sdIsBoolean(val.has_collaborations) ) { throw new BoxSdkError({ message: 'Expecting boolean for "has_collaborations" of type "FileFull"', }); } const hasCollaborations: undefined | boolean = val.has_collaborations == void 0 ? void 0 : val.has_collaborations; const metadata: undefined | FileFullMetadataField = val.metadata == void 0 ? void 0 : deserializeFileFullMetadataField(val.metadata); if (!(val.expires_at == void 0) && !sdIsString(val.expires_at)) { throw new BoxSdkError({ message: 'Expecting string for "expires_at" of type "FileFull"', }); } const expiresAt: undefined | DateTime = val.expires_at == void 0 ? void 0 : deserializeDateTime(val.expires_at); const representations: undefined | FileFullRepresentationsField = val.representations == void 0 ? void 0 : deserializeFileFullRepresentationsField(val.representations); const classification: undefined | FileFullClassificationField = val.classification == void 0 ? void 0 : deserializeFileFullClassificationField(val.classification); if ( !(val.uploader_display_name == void 0) && !sdIsString(val.uploader_display_name) ) { throw new BoxSdkError({ message: 'Expecting string for "uploader_display_name" of type "FileFull"', }); } const uploaderDisplayName: undefined | string = val.uploader_display_name == void 0 ? void 0 : val.uploader_display_name; if (!(val.disposition_at == void 0) && !sdIsString(val.disposition_at)) { throw new BoxSdkError({ message: 'Expecting string for "disposition_at" of type "FileFull"', }); } const dispositionAt: undefined | DateTime = val.disposition_at == void 0 ? void 0 : deserializeDateTime(val.disposition_at); if ( !(val.shared_link_permission_options == void 0) && !sdIsList(val.shared_link_permission_options) ) { throw new BoxSdkError({ message: 'Expecting array for "shared_link_permission_options" of type "FileFull"', }); } const sharedLinkPermissionOptions: | undefined | readonly FileFullSharedLinkPermissionOptionsField[] = val