ObjectStackObjectStack

Document

Document protocol schemas

Source: packages/spec/src/data/document.zod.ts

TypeScript Usage

import { DocumentSchema, DocumentTemplateSchema, DocumentVersionSchema, ESignatureConfigSchema } from '@objectstack/spec/data';
import type { Document, DocumentTemplate, DocumentVersion, ESignatureConfig } from '@objectstack/spec/data';

// Validate data
const result = DocumentSchema.parse(data);

Document

Properties

PropertyTypeRequiredDescription
idstringDocument ID
namestringDocument name
descriptionstringoptionalDocument description
fileTypestringFile MIME type
fileSizenumberFile size in bytes
categorystringoptionalDocument category
tagsstring[]optionalDocument tags
versioning{ enabled: boolean; versions: object[]; majorVersion: number; minorVersion: number }optionalVersion control
template{ id: string; name: string; description?: string; fileUrl: string; … }optionalDocument template
eSignature{ provider: Enum<'docusign' | 'adobe-sign' | 'hellosign' | 'custom'>; enabled: boolean; signers: object[]; expirationDays: number; … }optionalE-signature config
access{ isPublic: boolean; sharedWith?: string[]; expiresAt?: number }optionalAccess control
metadataRecord<string, any>optionalCustom metadata

Nested Shape: Document.versioning

PropertyTypeRequiredDescription
enabledbooleanVersioning enabled
versions{ versionNumber: number; createdAt: number; createdBy: string; size: number; … }[]Version history
majorVersionnumberMajor version
minorVersionnumberMinor version

Nested Shape: Document.template

PropertyTypeRequiredDescription
idstringTemplate ID
namestringTemplate name
descriptionstringoptionalTemplate description
fileUrlstringTemplate file URL
fileTypestringFile MIME type
placeholders{ key: string; label: string; type: Enum<'text' | 'number' | 'date' | 'image'>; required: boolean }[]Template placeholders

Nested Shape: Document.eSignature

PropertyTypeRequiredDescription
providerEnum<'docusign' | 'adobe-sign' | 'hellosign' | 'custom'>E-signature provider
enabledbooleanoptional (default: false)E-signature enabled
signers{ email: string; name: string; role: string; order: number }[]Document signers
expirationDaysnumberoptional (default: 30)Expiration days
reminderDaysnumberoptional (default: 7)Reminder interval days

Nested Shape: Document.access

PropertyTypeRequiredDescription
isPublicbooleanoptional (default: false)Public access
sharedWithstring[]optionalShared with
expiresAtnumberoptionalAccess expiration

DocumentTemplate

Properties

PropertyTypeRequiredDescription
idstringTemplate ID
namestringTemplate name
descriptionstringoptionalTemplate description
fileUrlstringTemplate file URL
fileTypestringFile MIME type
placeholders{ key: string; label: string; type: Enum<'text' | 'number' | 'date' | 'image'>; required: boolean }[]Template placeholders

Nested Shape: DocumentTemplate.placeholders[number]

PropertyTypeRequiredDescription
keystringPlaceholder key
labelstringPlaceholder label
typeEnum<'text' | 'number' | 'date' | 'image'>Placeholder type
requiredbooleanoptional (default: false)Is required

DocumentVersion

Properties

PropertyTypeRequiredDescription
versionNumbernumberVersion number
createdAtnumberCreation timestamp
createdBystringCreator user ID
sizenumberFile size in bytes
checksumstringFile checksum
downloadUrlstringDownload URL
isLatestbooleanoptional (default: false)Is latest version

ESignatureConfig

Properties

PropertyTypeRequiredDescription
providerEnum<'docusign' | 'adobe-sign' | 'hellosign' | 'custom'>E-signature provider
enabledbooleanoptional (default: false)E-signature enabled
signers{ email: string; name: string; role: string; order: number }[]Document signers
expirationDaysnumberoptional (default: 30)Expiration days
reminderDaysnumberoptional (default: 7)Reminder interval days

Nested Shape: ESignatureConfig.signers[number]

PropertyTypeRequiredDescription
emailstringSigner email
namestringSigner name
rolestringSigner role
ordernumberSigning order

On this page