ObjectStackObjectStack

Document

Document protocol schemas

Document Version Schema

Represents a single version of a document in a version-controlled system. Each version is immutable and maintains its own metadata and download URL.

@example

{
  "versionNumber": 2,
  "createdAt": 1704067200000,
  "createdBy": "user_123",
  "size": 2048576,
  "checksum": "a1b2c3d4e5f6",
  "downloadUrl": "https://storage.example.com/docs/v2/file.pdf",
  "isLatest": true
}

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

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

DocumentVersion

Properties

PropertyTypeRequiredDescription
versionNumbernumberVersion number
createdAtnumberCreation timestamp
createdBystringCreator user ID
sizenumberFile size in bytes
checksumstringFile checksum
downloadUrlstringDownload URL
isLatestbooleanIs latest version

ESignatureConfig

Properties

PropertyTypeRequiredDescription
providerEnum<'docusign' | 'adobe-sign' | 'hellosign' | 'custom'>E-signature provider
enabledbooleanE-signature enabled
signers{ email: string; name: string; role: string; order: number }[]Document signers
expirationDaysnumberExpiration days
reminderDaysnumberReminder interval days

On this page