ObjectStackObjectStack

Metadata Persistence

Metadata Persistence protocol schemas

Metadata Scope Enum

Defines the lifecycle and mutability of a metadata item.

Source: packages/spec/src/system/metadata-persistence.zod.ts

TypeScript Usage

import { MetadataCollectionInfo, MetadataDiffResult, MetadataExportOptions, MetadataFallbackStrategy, MetadataFormat, MetadataHistoryQueryOptions, MetadataHistoryQueryResult, MetadataHistoryRecord, MetadataHistoryRetentionPolicy, MetadataImportOptions, MetadataLoadOptions, MetadataLoadResult, MetadataLoaderContract, MetadataManagerConfig, MetadataRecord, MetadataSaveOptions, MetadataSaveResult, MetadataScope, MetadataSource, MetadataState, MetadataStats, MetadataWatchEvent, PackagePublishResult } from '@objectstack/spec/system';
import type { MetadataCollectionInfo, MetadataDiffResult, MetadataExportOptions, MetadataFallbackStrategy, MetadataFormat, MetadataHistoryQueryOptions, MetadataHistoryQueryResult, MetadataHistoryRecord, MetadataHistoryRetentionPolicy, MetadataImportOptions, MetadataLoadOptions, MetadataLoadResult, MetadataLoaderContract, MetadataManagerConfig, MetadataRecord, MetadataSaveOptions, MetadataSaveResult, MetadataScope, MetadataSource, MetadataState, MetadataStats, MetadataWatchEvent, PackagePublishResult } from '@objectstack/spec/system';

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

MetadataCollectionInfo

Properties

PropertyTypeRequiredDescription
typestring
countnumber
namespacesstring[]

MetadataDiffResult

Properties

PropertyTypeRequiredDescription
typestring
namestring
version1number
version2number
checksum1string
checksum2string
identicalboolean
patchany[]optionalJSON patch operations
summarystringoptionalHuman-readable summary of changes

MetadataExportOptions

Properties

PropertyTypeRequiredDescription
typesstring[]optional
namespacesstring[]optional
outputstringOutput directory or file
formatEnum<'json' | 'yaml' | 'yml' | 'ts' | 'js' | 'typescript' | 'javascript'>

MetadataFallbackStrategy

Allowed Values

  • filesystem
  • memory
  • none

MetadataFormat

Allowed Values

  • json
  • yaml
  • yml
  • ts
  • js
  • typescript
  • javascript

MetadataHistoryQueryOptions

Properties

PropertyTypeRequiredDescription
limitintegeroptionalMaximum number of history records to return
offsetintegeroptionalNumber of records to skip
sincestringoptionalOnly return history after this timestamp
untilstringoptionalOnly return history before this timestamp
operationTypeEnum<'create' | 'update' | 'publish' | 'revert' | 'delete'>optionalFilter by operation type
includeMetadatabooleanInclude full metadata payload

MetadataHistoryQueryResult

Properties

PropertyTypeRequiredDescription
recordsObject[]
totalinteger
hasMoreboolean

MetadataHistoryRecord

Properties

PropertyTypeRequiredDescription
idstring
metadataIdstringForeign key to sys_metadata.id
namestring
typestring
versionnumberVersion number at this snapshot
operationTypeEnum<'create' | 'update' | 'publish' | 'revert' | 'delete'>Type of operation that created this history entry
metadatastring | Record<string, any> | nulloptionalSnapshot of metadata definition at this version (raw JSON string or parsed object)
checksumstringSHA-256 checksum of metadata content
previousChecksumstringoptionalChecksum of the previous version
changeNotestringoptionalDescription of changes made in this version
tenantIdstringoptionalTenant identifier for multi-tenant isolation
recordedBystringoptionalUser who made this change
recordedAtstringTimestamp when this version was recorded

MetadataHistoryRetentionPolicy

Properties

PropertyTypeRequiredDescription
maxVersionsintegeroptionalMaximum number of versions to retain
maxAgeDaysintegeroptionalMaximum age of history records in days
autoCleanupbooleanEnable automatic cleanup of old history
cleanupIntervalHoursintegerHow often to run cleanup (in hours)

MetadataImportOptions

Properties

PropertyTypeRequiredDescription
sourcestringInput directory or file
strategyEnum<'merge' | 'replace' | 'skip'>
validateboolean

MetadataLoadOptions

Properties

PropertyTypeRequiredDescription
scopeEnum<'system' | 'platform' | 'user'>optional
namespacestringoptional
rawbooleanoptionalReturn raw file content instead of parsed JSON
cachebooleanoptional
useCachebooleanoptional
validatebooleanoptional
ifNoneMatchstringoptional
recursivebooleanoptional
limitnumberoptional
patternsstring[]optional
loaderstringoptionalSpecific loader to use (e.g. filesystem, database)

MetadataLoadResult

Properties

PropertyTypeRequiredDescription
dataany
statsObjectoptional
formatEnum<'json' | 'yaml' | 'yml' | 'ts' | 'js' | 'typescript' | 'javascript'>optional
sourcestringoptional
fromCachebooleanoptional
etagstringoptional
notModifiedbooleanoptional
loadTimenumberoptional

MetadataLoaderContract

Properties

PropertyTypeRequiredDescription
namestring
protocolEnum<'file:' | 'http:' | 's3:' | 'datasource:' | 'memory:'>Loader protocol identifier
descriptionstringoptional
supportedFormatsstring[]optional
supportsWatchbooleanoptional
supportsWritebooleanoptional
supportsCachebooleanoptional
capabilitiesObject

MetadataManagerConfig

Properties

PropertyTypeRequiredDescription
datasourcestringoptionalDatasource name reference for database persistence
tableNamestringDatabase table name for metadata storage
fallbackEnum<'filesystem' | 'memory' | 'none'>Fallback strategy when datasource is unavailable
rootDirstringoptionalRoot directory for filesystem-based metadata
formatsEnum<'json' | 'yaml' | 'yml' | 'ts' | 'js' | 'typescript' | 'javascript'>[]optionalEnabled metadata formats
watchbooleanoptionalEnable file watching for filesystem loaders
cachebooleanoptionalEnable metadata caching
watchOptionsObjectoptionalFile watcher options

MetadataRecord

Properties

PropertyTypeRequiredDescription
idstring
namestring
typestring
namespacestring
packageIdstringoptionalPackage ID that owns/delivered this metadata
managedByEnum<'package' | 'platform' | 'user'>optionalWho manages this metadata record lifecycle
scopeEnum<'system' | 'platform' | 'user'>
metadataRecord<string, any>
extendsstringoptionalName of the parent metadata to extend/override
strategyEnum<'merge' | 'replace'>
ownerstringoptional
stateEnum<'draft' | 'active' | 'archived' | 'deprecated'>
tenantIdstringoptionalTenant identifier for multi-tenant isolation
versionnumberRecord version for optimistic concurrency control
checksumstringoptionalContent checksum for change detection
sourceEnum<'filesystem' | 'database' | 'api' | 'migration'>optionalOrigin of this metadata record
tagsstring[]optionalClassification tags for filtering and grouping
publishedDefinitionanyoptionalSnapshot of the last published definition
publishedAtstringoptionalWhen this metadata was last published
publishedBystringoptionalWho published this version
createdBystringoptional
createdAtstringoptionalCreation timestamp
updatedBystringoptional
updatedAtstringoptionalLast update timestamp

MetadataSaveOptions

Properties

PropertyTypeRequiredDescription
formatEnum<'json' | 'yaml' | 'yml' | 'ts' | 'js' | 'typescript' | 'javascript'>optional
createboolean
overwriteboolean
pathstringoptional
prettifybooleanoptional
indentnumberoptional
sortKeysbooleanoptional
backupbooleanoptional
atomicbooleanoptional
loaderstringoptionalSpecific loader to use (e.g. filesystem, database)

MetadataSaveResult

Properties

PropertyTypeRequiredDescription
successboolean
pathstringoptional
statsObjectoptional
etagstringoptional
sizenumberoptional
saveTimenumberoptional
backupPathstringoptional

MetadataScope

Allowed Values

  • system
  • platform
  • user

MetadataSource

Allowed Values

  • filesystem
  • database
  • api
  • migration

MetadataState

Allowed Values

  • draft
  • active
  • archived
  • deprecated

MetadataStats

Properties

PropertyTypeRequiredDescription
pathstringoptional
sizenumberoptional
mtimestringoptional
hashstringoptional
etagstringoptional
modifiedAtstringoptional
formatEnum<'json' | 'yaml' | 'yml' | 'ts' | 'js' | 'typescript' | 'javascript'>optional

MetadataWatchEvent

Properties

PropertyTypeRequiredDescription
typeEnum<'add' | 'change' | 'unlink' | 'added' | 'changed' | 'deleted'>
pathstring
namestringoptional
statsObjectoptional
metadataTypestringoptional
dataanyoptional
timestampstringoptional

PackagePublishResult

Properties

PropertyTypeRequiredDescription
successbooleanWhether the publish succeeded
packageIdstringThe package ID that was published
versionintegerNew version number after publish
publishedAtstringPublish timestamp
itemsPublishedintegerTotal metadata items published
validationErrorsObject[]optionalValidation errors if publish failed

On this page