box-node-sdk
Version:
Official SDK for Box Platform APIs
565 lines (564 loc) • 19.7 kB
text/typescript
import { serializeSignRequestPrefillTag } from './signRequestPrefillTag';
import { deserializeSignRequestPrefillTag } from './signRequestPrefillTag';
import { serializeSignRequestBase } from './signRequestBase';
import { deserializeSignRequestBase } from './signRequestBase';
import { serializeFileBase } from './fileBase';
import { deserializeFileBase } from './fileBase';
import { serializeSignRequestSigner } from './signRequestSigner';
import { deserializeSignRequestSigner } from './signRequestSigner';
import { serializeFileMini } from './fileMini';
import { deserializeFileMini } from './fileMini';
import { serializeFolderMini } from './folderMini';
import { deserializeFolderMini } from './folderMini';
import { serializeDateTime } from '../internal/utils';
import { deserializeDateTime } from '../internal/utils';
import { SignRequestPrefillTag } from './signRequestPrefillTag';
import { SignRequestBase } from './signRequestBase';
import { FileBase } from './fileBase';
import { SignRequestSigner } from './signRequestSigner';
import { FileMini } from './fileMini';
import { FolderMini } from './folderMini';
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 type SignRequestTypeField = 'sign-request';
export type SignRequestStatusField =
| 'converting'
| 'created'
| 'sent'
| 'viewed'
| 'signed'
| 'cancelled'
| 'declined'
| 'error_converting'
| 'error_sending'
| 'expired'
| 'finalizing'
| 'error_finalizing'
| string;
export interface SignRequestSignFilesField {
readonly files?: readonly FileMini[];
/**
* Indicates whether the `sign_files` documents are processing
* and the PDFs may be out of date. A change to any document
* requires processing on all `sign_files`. We
* recommended waiting until processing is finished
* (and this value is true) before downloading the PDFs. */
readonly isReadyForDownload?: boolean;
readonly rawData?: SerializedData;
}
export type SignRequest = SignRequestBase & {
/**
* The value will always be `sign-request`. */
readonly type?: SignRequestTypeField;
/**
* List of files to create a signing document from. This is currently limited to ten files. Only the ID and type fields are required for each file. */
readonly sourceFiles?: readonly FileBase[];
/**
* Array of signers for the signature request. */
readonly signers?: readonly SignRequestSigner[];
/**
* Force a specific color for the signature (blue, black, or red). */
readonly signatureColor?: string | null;
/**
* Box Sign request ID. */
readonly id?: string;
/**
* This URL is returned if `is_document_preparation_needed` is
* set to `true` in the request. The parameter is used to prepare
* the signature request
* using the UI. The signature request is not
* sent until the preparation
* phase is complete. */
readonly prepareUrl?: string | null;
readonly signingLog?: FileMini;
/**
* Describes the status of the signature request. */
readonly status?: SignRequestStatusField;
/**
* List of files that will be signed, which are copies of the original
* source files. A new version of these files are created as signers sign
* and can be downloaded at any point in the signing process. */
readonly signFiles?: SignRequestSignFilesField;
/**
* Uses `days_valid` to calculate the date and time, in GMT, the sign request will expire if unsigned. */
readonly autoExpireAt?: DateTime | null;
readonly parentFolder?: FolderMini;
/**
* The collaborator level of the user to the sign request. Values can include "owner", "editor", and "viewer". */
readonly collaboratorLevel?: string | null;
/**
* Short identifier for the sign request. */
readonly shortId?: string;
/**
* Timestamp marking when the sign request was created. */
readonly createdAt?: DateTime;
/**
* Timestamp indicating when all signing actions completed. */
readonly finishedAt?: DateTime | null;
/**
* The email address of the sender of the sign request. */
readonly senderEmail?: string | null;
/**
* The user ID of the sender of the sign request. */
readonly senderId?: number | null;
};
export function serializeSignRequestTypeField(
val: SignRequestTypeField,
): SerializedData {
return val;
}
export function deserializeSignRequestTypeField(
val: SerializedData,
): SignRequestTypeField {
if (val == 'sign-request') {
return val;
}
throw new BoxSdkError({ message: "Can't deserialize SignRequestTypeField" });
}
export function serializeSignRequestStatusField(
val: SignRequestStatusField,
): SerializedData {
return val;
}
export function deserializeSignRequestStatusField(
val: SerializedData,
): SignRequestStatusField {
if (val == 'converting') {
return val;
}
if (val == 'created') {
return val;
}
if (val == 'sent') {
return val;
}
if (val == 'viewed') {
return val;
}
if (val == 'signed') {
return val;
}
if (val == 'cancelled') {
return val;
}
if (val == 'declined') {
return val;
}
if (val == 'error_converting') {
return val;
}
if (val == 'error_sending') {
return val;
}
if (val == 'expired') {
return val;
}
if (val == 'finalizing') {
return val;
}
if (val == 'error_finalizing') {
return val;
}
if (sdIsString(val)) {
return val;
}
throw new BoxSdkError({
message: "Can't deserialize SignRequestStatusField",
});
}
export function serializeSignRequestSignFilesField(
val: SignRequestSignFilesField,
): SerializedData {
return {
['files']:
val.files == void 0
? val.files
: (val.files.map(function (item: FileMini): SerializedData {
return serializeFileMini(item);
}) as readonly any[]),
['is_ready_for_download']: val.isReadyForDownload,
};
}
export function deserializeSignRequestSignFilesField(
val: SerializedData,
): SignRequestSignFilesField {
if (!sdIsMap(val)) {
throw new BoxSdkError({
message: 'Expecting a map for "SignRequestSignFilesField"',
});
}
if (!(val.files == void 0) && !sdIsList(val.files)) {
throw new BoxSdkError({
message:
'Expecting array for "files" of type "SignRequestSignFilesField"',
});
}
const files: undefined | readonly FileMini[] =
val.files == void 0
? void 0
: sdIsList(val.files)
? (val.files.map(function (itm: SerializedData): FileMini {
return deserializeFileMini(itm);
}) as readonly any[])
: [];
if (
!(val.is_ready_for_download == void 0) &&
!sdIsBoolean(val.is_ready_for_download)
) {
throw new BoxSdkError({
message:
'Expecting boolean for "is_ready_for_download" of type "SignRequestSignFilesField"',
});
}
const isReadyForDownload: undefined | boolean =
val.is_ready_for_download == void 0 ? void 0 : val.is_ready_for_download;
return {
files: files,
isReadyForDownload: isReadyForDownload,
} satisfies SignRequestSignFilesField;
}
export function serializeSignRequest(val: SignRequest): SerializedData {
const base: any = serializeSignRequestBase(val);
if (!sdIsMap(base)) {
throw new BoxSdkError({ message: 'Expecting a map for "SignRequest"' });
}
return {
...base,
...{
['type']:
val.type == void 0 ? val.type : serializeSignRequestTypeField(val.type),
['source_files']:
val.sourceFiles == void 0
? val.sourceFiles
: (val.sourceFiles.map(function (item: FileBase): SerializedData {
return serializeFileBase(item);
}) as readonly any[]),
['signers']:
val.signers == void 0
? val.signers
: (val.signers.map(function (
item: SignRequestSigner,
): SerializedData {
return serializeSignRequestSigner(item);
}) as readonly any[]),
['signature_color']: val.signatureColor,
['id']: val.id,
['prepare_url']: val.prepareUrl,
['signing_log']:
val.signingLog == void 0
? val.signingLog
: serializeFileMini(val.signingLog),
['status']:
val.status == void 0
? val.status
: serializeSignRequestStatusField(val.status),
['sign_files']:
val.signFiles == void 0
? val.signFiles
: serializeSignRequestSignFilesField(val.signFiles),
['auto_expire_at']:
val.autoExpireAt == void 0
? val.autoExpireAt
: serializeDateTime(val.autoExpireAt),
['parent_folder']:
val.parentFolder == void 0
? val.parentFolder
: serializeFolderMini(val.parentFolder),
['collaborator_level']: val.collaboratorLevel,
['short_id']: val.shortId,
['created_at']:
val.createdAt == void 0
? val.createdAt
: serializeDateTime(val.createdAt),
['finished_at']:
val.finishedAt == void 0
? val.finishedAt
: serializeDateTime(val.finishedAt),
['sender_email']: val.senderEmail,
['sender_id']: val.senderId,
},
};
}
export function deserializeSignRequest(val: SerializedData): SignRequest {
if (!sdIsMap(val)) {
throw new BoxSdkError({ message: 'Expecting a map for "SignRequest"' });
}
const type: undefined | SignRequestTypeField =
val.type == void 0 ? void 0 : deserializeSignRequestTypeField(val.type);
if (!(val.source_files == void 0) && !sdIsList(val.source_files)) {
throw new BoxSdkError({
message: 'Expecting array for "source_files" of type "SignRequest"',
});
}
const sourceFiles: undefined | readonly FileBase[] =
val.source_files == void 0
? void 0
: sdIsList(val.source_files)
? (val.source_files.map(function (itm: SerializedData): FileBase {
return deserializeFileBase(itm);
}) as readonly any[])
: [];
if (!(val.signers == void 0) && !sdIsList(val.signers)) {
throw new BoxSdkError({
message: 'Expecting array for "signers" of type "SignRequest"',
});
}
const signers: undefined | readonly SignRequestSigner[] =
val.signers == void 0
? void 0
: sdIsList(val.signers)
? (val.signers.map(function (itm: SerializedData): SignRequestSigner {
return deserializeSignRequestSigner(itm);
}) as readonly any[])
: [];
if (!(val.signature_color == void 0) && !sdIsString(val.signature_color)) {
throw new BoxSdkError({
message: 'Expecting string for "signature_color" of type "SignRequest"',
});
}
const signatureColor: undefined | string =
val.signature_color == void 0 ? void 0 : val.signature_color;
if (!(val.id == void 0) && !sdIsString(val.id)) {
throw new BoxSdkError({
message: 'Expecting string for "id" of type "SignRequest"',
});
}
const id: undefined | string = val.id == void 0 ? void 0 : val.id;
if (!(val.prepare_url == void 0) && !sdIsString(val.prepare_url)) {
throw new BoxSdkError({
message: 'Expecting string for "prepare_url" of type "SignRequest"',
});
}
const prepareUrl: undefined | string =
val.prepare_url == void 0 ? void 0 : val.prepare_url;
const signingLog: undefined | FileMini =
val.signing_log == void 0 ? void 0 : deserializeFileMini(val.signing_log);
const status: undefined | SignRequestStatusField =
val.status == void 0
? void 0
: deserializeSignRequestStatusField(val.status);
const signFiles: undefined | SignRequestSignFilesField =
val.sign_files == void 0
? void 0
: deserializeSignRequestSignFilesField(val.sign_files);
if (!(val.auto_expire_at == void 0) && !sdIsString(val.auto_expire_at)) {
throw new BoxSdkError({
message: 'Expecting string for "auto_expire_at" of type "SignRequest"',
});
}
const autoExpireAt: undefined | DateTime =
val.auto_expire_at == void 0
? void 0
: deserializeDateTime(val.auto_expire_at);
const parentFolder: undefined | FolderMini =
val.parent_folder == void 0
? void 0
: deserializeFolderMini(val.parent_folder);
if (
!(val.collaborator_level == void 0) &&
!sdIsString(val.collaborator_level)
) {
throw new BoxSdkError({
message:
'Expecting string for "collaborator_level" of type "SignRequest"',
});
}
const collaboratorLevel: undefined | string =
val.collaborator_level == void 0 ? void 0 : val.collaborator_level;
if (!(val.short_id == void 0) && !sdIsString(val.short_id)) {
throw new BoxSdkError({
message: 'Expecting string for "short_id" of type "SignRequest"',
});
}
const shortId: undefined | string =
val.short_id == void 0 ? void 0 : val.short_id;
if (!(val.created_at == void 0) && !sdIsString(val.created_at)) {
throw new BoxSdkError({
message: 'Expecting string for "created_at" of type "SignRequest"',
});
}
const createdAt: undefined | DateTime =
val.created_at == void 0 ? void 0 : deserializeDateTime(val.created_at);
if (!(val.finished_at == void 0) && !sdIsString(val.finished_at)) {
throw new BoxSdkError({
message: 'Expecting string for "finished_at" of type "SignRequest"',
});
}
const finishedAt: undefined | DateTime =
val.finished_at == void 0 ? void 0 : deserializeDateTime(val.finished_at);
if (!(val.sender_email == void 0) && !sdIsString(val.sender_email)) {
throw new BoxSdkError({
message: 'Expecting string for "sender_email" of type "SignRequest"',
});
}
const senderEmail: undefined | string =
val.sender_email == void 0 ? void 0 : val.sender_email;
if (!(val.sender_id == void 0) && !sdIsNumber(val.sender_id)) {
throw new BoxSdkError({
message: 'Expecting number for "sender_id" of type "SignRequest"',
});
}
const senderId: undefined | number =
val.sender_id == void 0 ? void 0 : val.sender_id;
if (
!(val.is_document_preparation_needed == void 0) &&
!sdIsBoolean(val.is_document_preparation_needed)
) {
throw new BoxSdkError({
message:
'Expecting boolean for "is_document_preparation_needed" of type "SignRequest"',
});
}
const isDocumentPreparationNeeded: undefined | boolean =
val.is_document_preparation_needed == void 0
? void 0
: val.is_document_preparation_needed;
if (!(val.redirect_url == void 0) && !sdIsString(val.redirect_url)) {
throw new BoxSdkError({
message: 'Expecting string for "redirect_url" of type "SignRequest"',
});
}
const redirectUrl: undefined | string =
val.redirect_url == void 0 ? void 0 : val.redirect_url;
if (
!(val.declined_redirect_url == void 0) &&
!sdIsString(val.declined_redirect_url)
) {
throw new BoxSdkError({
message:
'Expecting string for "declined_redirect_url" of type "SignRequest"',
});
}
const declinedRedirectUrl: undefined | string =
val.declined_redirect_url == void 0 ? void 0 : val.declined_redirect_url;
if (
!(val.are_text_signatures_enabled == void 0) &&
!sdIsBoolean(val.are_text_signatures_enabled)
) {
throw new BoxSdkError({
message:
'Expecting boolean for "are_text_signatures_enabled" of type "SignRequest"',
});
}
const areTextSignaturesEnabled: undefined | boolean =
val.are_text_signatures_enabled == void 0
? void 0
: val.are_text_signatures_enabled;
if (!(val.email_subject == void 0) && !sdIsString(val.email_subject)) {
throw new BoxSdkError({
message: 'Expecting string for "email_subject" of type "SignRequest"',
});
}
const emailSubject: undefined | string =
val.email_subject == void 0 ? void 0 : val.email_subject;
if (!(val.email_message == void 0) && !sdIsString(val.email_message)) {
throw new BoxSdkError({
message: 'Expecting string for "email_message" of type "SignRequest"',
});
}
const emailMessage: undefined | string =
val.email_message == void 0 ? void 0 : val.email_message;
if (
!(val.are_reminders_enabled == void 0) &&
!sdIsBoolean(val.are_reminders_enabled)
) {
throw new BoxSdkError({
message:
'Expecting boolean for "are_reminders_enabled" of type "SignRequest"',
});
}
const areRemindersEnabled: undefined | boolean =
val.are_reminders_enabled == void 0 ? void 0 : val.are_reminders_enabled;
if (!(val.name == void 0) && !sdIsString(val.name)) {
throw new BoxSdkError({
message: 'Expecting string for "name" of type "SignRequest"',
});
}
const name: undefined | string = val.name == void 0 ? void 0 : val.name;
if (!(val.prefill_tags == void 0) && !sdIsList(val.prefill_tags)) {
throw new BoxSdkError({
message: 'Expecting array for "prefill_tags" of type "SignRequest"',
});
}
const prefillTags: undefined | readonly SignRequestPrefillTag[] =
val.prefill_tags == void 0
? void 0
: sdIsList(val.prefill_tags)
? (val.prefill_tags.map(function (
itm: SerializedData,
): SignRequestPrefillTag {
return deserializeSignRequestPrefillTag(itm);
}) as readonly any[])
: [];
if (!(val.days_valid == void 0) && !sdIsNumber(val.days_valid)) {
throw new BoxSdkError({
message: 'Expecting number for "days_valid" of type "SignRequest"',
});
}
const daysValid: undefined | number =
val.days_valid == void 0 ? void 0 : val.days_valid;
if (!(val.external_id == void 0) && !sdIsString(val.external_id)) {
throw new BoxSdkError({
message: 'Expecting string for "external_id" of type "SignRequest"',
});
}
const externalId: undefined | string =
val.external_id == void 0 ? void 0 : val.external_id;
if (!(val.template_id == void 0) && !sdIsString(val.template_id)) {
throw new BoxSdkError({
message: 'Expecting string for "template_id" of type "SignRequest"',
});
}
const templateId: undefined | string =
val.template_id == void 0 ? void 0 : val.template_id;
if (
!(val.external_system_name == void 0) &&
!sdIsString(val.external_system_name)
) {
throw new BoxSdkError({
message:
'Expecting string for "external_system_name" of type "SignRequest"',
});
}
const externalSystemName: undefined | string =
val.external_system_name == void 0 ? void 0 : val.external_system_name;
return {
type: type,
sourceFiles: sourceFiles,
signers: signers,
signatureColor: signatureColor,
id: id,
prepareUrl: prepareUrl,
signingLog: signingLog,
status: status,
signFiles: signFiles,
autoExpireAt: autoExpireAt,
parentFolder: parentFolder,
collaboratorLevel: collaboratorLevel,
shortId: shortId,
createdAt: createdAt,
finishedAt: finishedAt,
senderEmail: senderEmail,
senderId: senderId,
isDocumentPreparationNeeded: isDocumentPreparationNeeded,
redirectUrl: redirectUrl,
declinedRedirectUrl: declinedRedirectUrl,
areTextSignaturesEnabled: areTextSignaturesEnabled,
emailSubject: emailSubject,
emailMessage: emailMessage,
areRemindersEnabled: areRemindersEnabled,
name: name,
prefillTags: prefillTags,
daysValid: daysValid,
externalId: externalId,
templateId: templateId,
externalSystemName: externalSystemName,
} satisfies SignRequest;
}