ObjectStackObjectStack

Field

Field protocol schemas

Field Type Enum

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

TypeScript Usage

import { Address, ComputedFieldCache, CurrencyConfig, CurrencyValue, DataQualityRules, Field, FieldType, FileAttachmentConfig, LocationCoordinates, SelectOption, VectorConfig } from '@objectstack/spec/data';
import type { Address, ComputedFieldCache, CurrencyConfig, CurrencyValue, DataQualityRules, Field, FieldType, FileAttachmentConfig, LocationCoordinates, SelectOption, VectorConfig } from '@objectstack/spec/data';

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

Address

Properties

PropertyTypeRequiredDescription
streetstringoptionalStreet address
citystringoptionalCity name
statestringoptionalState/Province
postalCodestringoptionalPostal/ZIP code
countrystringoptionalCountry name or code
countryCodestringoptionalISO country code (e.g., US, GB)
formattedstringoptionalFormatted address string

ComputedFieldCache

Properties

PropertyTypeRequiredDescription
enabledbooleanEnable caching for computed field results
ttlnumberCache TTL in seconds (0 = no expiration)
invalidateOnstring[]Field paths that invalidate cache (e.g., ["inventory.quantity", "pricing.base_price"])

CurrencyConfig

Properties

PropertyTypeRequiredDescription
precisionintegerDecimal precision (default: 2)
currencyModeEnum<'dynamic' | 'fixed'>Currency mode: dynamic (user selectable) or fixed (single currency)
defaultCurrencystringDefault or fixed currency code (ISO 4217, e.g., USD, CNY, EUR)

CurrencyValue

Properties

PropertyTypeRequiredDescription
valuenumberMonetary amount
currencystringCurrency code (ISO 4217)

DataQualityRules

Properties

PropertyTypeRequiredDescription
uniquenessbooleanEnforce unique values across all records
completenessnumberMinimum ratio of non-null values (0-1, default: 0 = no requirement)
accuracyObjectoptionalAccuracy validation configuration

Field

Properties

PropertyTypeRequiredDescription
namestringoptionalMachine name (snake_case)
labelstringoptionalHuman readable label
typeEnum<'text' | 'textarea' | 'email' | 'url' | 'phone' | 'password' | 'markdown' | 'html' | 'richtext' | 'number' | 'currency' | 'percent' | 'date' | 'datetime' | 'time' | 'boolean' | 'toggle' | 'select' | 'multiselect' | 'radio' | 'checkboxes' | 'lookup' | 'master_detail' | 'tree' | 'image' | 'file' | 'avatar' | 'video' | 'audio' | 'formula' | 'summary' | 'autonumber' | 'location' | 'address' | 'code' | 'json' | 'color' | 'rating' | 'slider' | 'signature' | 'qrcode' | 'progress' | 'tags' | 'vector'>Field Data Type
descriptionstringoptionalTooltip/Help text
formatstringoptionalFormat string (e.g. email, phone)
columnNamestringoptionalPhysical column name in the target datasource. Defaults to the field key when not set.
requiredbooleanIs required
searchablebooleanIs searchable
multiplebooleanAllow multiple values (Stores as Array/JSON). Applicable for select, lookup, file, image.
uniquebooleanIs unique constraint
defaultValueanyoptionalDefault value
maxLengthnumberoptionalMax character length
minLengthnumberoptionalMin character length
precisionnumberoptionalTotal digits
scalenumberoptionalDecimal places
minnumberoptionalMinimum value
maxnumberoptionalMaximum value
optionsObject[]optionalStatic options for select/multiselect
referencestringoptionalTarget object name (snake_case) for lookup/master_detail fields. Required for relationship types. Used by $expand to resolve foreign key IDs into full objects.
referenceFiltersstring[]optionalFilters applied to lookup dialogs (e.g. "active = true")
writeRequiresMasterReadbooleanoptionalIf true, user needs read access to master record to edit this field
deleteBehaviorEnum<'set_null' | 'cascade' | 'restrict'>What happens if referenced record is deleted
expressionstringoptionalFormula expression
summaryOperationsObjectoptionalRoll-up summary definition
languagestringoptionalProgramming language for syntax highlighting (e.g., javascript, python, sql)
themestringoptionalCode editor theme (e.g., dark, light, monokai)
lineNumbersbooleanoptionalShow line numbers in code editor
maxRatingnumberoptionalMaximum rating value (default: 5)
allowHalfbooleanoptionalAllow half-star ratings
displayMapbooleanoptionalDisplay map widget for location field
allowGeocodingbooleanoptionalAllow address-to-coordinate conversion
addressFormatEnum<'us' | 'uk' | 'international'>optionalAddress format template
colorFormatEnum<'hex' | 'rgb' | 'rgba' | 'hsl'>optionalColor value format
allowAlphabooleanoptionalAllow transparency/alpha channel
presetColorsstring[]optionalPreset color options
stepnumberoptionalStep increment for slider (default: 1)
showValuebooleanoptionalDisplay current value on slider
marksRecord<string, string>optionalCustom marks/labels at specific values (e.g., {0: "Low", 50: "Medium", 100: "High"})
barcodeFormatEnum<'qr' | 'ean13' | 'ean8' | 'code128' | 'code39' | 'upca' | 'upce'>optionalBarcode format type
qrErrorCorrectionEnum<'L' | 'M' | 'Q' | 'H'>optionalQR code error correction level (L=7%, M=15%, Q=25%, H=30%). Only applicable when barcodeFormat is "qr"
displayValuebooleanoptionalDisplay human-readable value below barcode/QR code
allowScanningbooleanoptionalEnable camera scanning for barcode/QR code input
currencyConfigObjectoptionalConfiguration for currency field type
vectorConfigObjectoptionalConfiguration for vector field type (AI/ML embeddings)
fileAttachmentConfigObjectoptionalConfiguration for file and attachment field types
encryptionConfigObjectoptionalField-level encryption configuration for sensitive data (GDPR/HIPAA/PCI-DSS)
maskingRuleObjectoptionalData masking rules for PII protection
auditTrailbooleanEnable detailed audit trail for this field (tracks all changes with user and timestamp)
dependenciesstring[]optionalArray of field names that this field depends on (for formulas, visibility rules, etc.)
cachedObjectoptionalCaching configuration for computed/formula fields
dataQualityObjectoptionalData quality validation and monitoring rules
groupstringoptionalField group name for organizing fields in forms and layouts (e.g., "contact_info", "billing", "system")
conditionalRequiredstringoptionalFormula expression that makes this field required when TRUE (e.g., "status = 'closed_won'")
hiddenbooleanHidden from default UI
readonlybooleanRead-only in UI
sortablebooleanWhether field is sortable in list views
inlineHelpTextstringoptionalHelp text displayed below the field in forms
trackFeedHistorybooleanoptionalTrack field changes in Chatter/activity feed (Salesforce pattern)
caseSensitivebooleanoptionalWhether text comparisons are case-sensitive
autonumberFormatstringoptionalAuto-number display format pattern (e.g., "CASE-{0000}")
indexbooleanCreate standard database index
externalIdbooleanIs external ID for upsert operations

FieldType

Allowed Values

  • text
  • textarea
  • email
  • url
  • phone
  • password
  • markdown
  • html
  • richtext
  • number
  • currency
  • percent
  • date
  • datetime
  • time
  • boolean
  • toggle
  • select
  • multiselect
  • radio
  • checkboxes
  • lookup
  • master_detail
  • tree
  • image
  • file
  • avatar
  • video
  • audio
  • formula
  • summary
  • autonumber
  • location
  • address
  • code
  • json
  • color
  • rating
  • slider
  • signature
  • qrcode
  • progress
  • tags
  • vector

FileAttachmentConfig

Properties

PropertyTypeRequiredDescription
minSizenumberoptionalMinimum file size in bytes
maxSizenumberoptionalMaximum file size in bytes (e.g., 10485760 = 10MB)
allowedTypesstring[]optionalAllowed file extensions (e.g., [".pdf", ".docx", ".jpg"])
blockedTypesstring[]optionalBlocked file extensions (e.g., [".exe", ".bat", ".sh"])
allowedMimeTypesstring[]optionalAllowed MIME types (e.g., ["image/jpeg", "application/pdf"])
blockedMimeTypesstring[]optionalBlocked MIME types
virusScanbooleanEnable virus scanning for uploaded files
virusScanProviderEnum<'clamav' | 'virustotal' | 'metadefender' | 'custom'>optionalVirus scanning service provider
virusScanOnUploadbooleanScan files immediately on upload
quarantineOnThreatbooleanQuarantine files if threat detected
storageProviderstringoptionalObject storage provider name (references ObjectStorageConfig)
storageBucketstringoptionalTarget bucket name
storagePrefixstringoptionalStorage path prefix (e.g., "uploads/documents/")
imageValidationObjectoptionalImage-specific validation rules
allowMultiplebooleanAllow multiple file uploads (overrides field.multiple)
allowReplacebooleanAllow replacing existing files
allowDeletebooleanAllow deleting uploaded files
requireUploadbooleanRequire at least one file when field is required
extractMetadatabooleanExtract file metadata (name, size, type, etc.)
extractTextbooleanExtract text content from documents (OCR/parsing)
versioningEnabledbooleanKeep previous versions of replaced files
maxVersionsnumberoptionalMaximum number of versions to retain
publicReadbooleanAllow public read access to uploaded files
presignedUrlExpirynumberPresigned URL expiration in seconds (default: 1 hour)

LocationCoordinates

Properties

PropertyTypeRequiredDescription
latitudenumberLatitude coordinate
longitudenumberLongitude coordinate
altitudenumberoptionalAltitude in meters
accuracynumberoptionalAccuracy in meters

SelectOption

Properties

PropertyTypeRequiredDescription
labelstringDisplay label (human-readable, any case allowed)
valuestringStored value (lowercase machine identifier)
colorstringoptionalColor code for badges/charts
defaultbooleanoptionalIs default option

VectorConfig

Properties

PropertyTypeRequiredDescription
dimensionsintegerVector dimensionality (e.g., 1536 for OpenAI embeddings)
distanceMetricEnum<'cosine' | 'euclidean' | 'dotProduct' | 'manhattan'>Distance/similarity metric for vector search
normalizedbooleanWhether vectors are normalized (unit length)
indexedbooleanWhether to create a vector index for fast similarity search
indexTypeEnum<'hnsw' | 'ivfflat' | 'flat'>optionalVector index algorithm (HNSW for high accuracy, IVFFlat for large datasets)

On this page