ObjectStackObjectStack

Metadata Plugin

Metadata Plugin protocol schemas

Metadata Plugin Protocol

Defines the specification for the Metadata Plugin — the central authority

responsible for managing ALL metadata across the ObjectStack platform.

Architecture

The Metadata Plugin consolidates all scattered metadata operations into a single,

cohesive plugin that "takes over" the entire platform's metadata management:


┌──────────────────────────────────────────────────────────────────┐

│                     Metadata Plugin                             │

│                                                                  │

│  ┌──────────────┐  ┌──────────────┐  ┌──────────────────────┐  │

│  │ Type Registry │  │  Loader      │  │ Customization Layer  │  │

│  │ (all types)   │  │  (file/db/s3)│  │ (overlay / merge)    │  │

│  └──────────────┘  └──────────────┘  └──────────────────────┘  │

│                                                                  │

│  ┌──────────────┐  ┌──────────────┐  ┌──────────────────────┐  │

│  │ Persistence  │  │  Query       │  │ Lifecycle            │  │

│  │ (db records) │  │  (search)    │  │ (validate/deploy)    │  │

│  └──────────────┘  └──────────────┘  └──────────────────────┘  │

└──────────────────────────────────────────────────────────────────┘

Alignment

  • Salesforce: Metadata API (deploy, retrieve, describe)

  • ServiceNow: System Dictionary + Metadata API

  • Kubernetes: API Server + CRD Registry

References

  • kernel/metadata-loader.zod.ts — Storage backend protocol

  • kernel/metadata-customization.zod.ts — Overlay/merge protocol

  • system/metadata-persistence.zod.ts — Database record format

  • contracts/metadata-service.ts — Service interface

Source: packages/spec/src/kernel/metadata-plugin.zod.ts

TypeScript Usage

import { MetadataBulkRegisterRequest, MetadataBulkResult, MetadataDependency, MetadataEvent, MetadataPluginConfig, MetadataPluginManifest, MetadataQuery, MetadataQueryResult, MetadataType, MetadataTypeRegistryEntry, MetadataValidationResult } from '@objectstack/spec/kernel';
import type { MetadataBulkRegisterRequest, MetadataBulkResult, MetadataDependency, MetadataEvent, MetadataPluginConfig, MetadataPluginManifest, MetadataQuery, MetadataQueryResult, MetadataType, MetadataTypeRegistryEntry, MetadataValidationResult } from '@objectstack/spec/kernel';

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

MetadataBulkRegisterRequest

Properties

PropertyTypeRequiredDescription
itemsObject[]Items to register
continueOnErrorbooleanContinue if individual item fails
validatebooleanValidate before register

MetadataBulkResult

Properties

PropertyTypeRequiredDescription
totalintegerTotal items processed
succeededintegerSuccessfully processed
failedintegerFailed items
errorsObject[]optionalPer-item errors

MetadataDependency

Properties

PropertyTypeRequiredDescription
sourceTypestringDependent metadata type
sourceNamestringDependent metadata name
targetTypestringReferenced metadata type
targetNamestringReferenced metadata name
kindEnum<'reference' | 'extends' | 'includes' | 'triggers'>How the dependency is formed

MetadataEvent

Properties

PropertyTypeRequiredDescription
eventEnum<'metadata.registered' | 'metadata.updated' | 'metadata.unregistered' | 'metadata.validated' | 'metadata.deployed' | 'metadata.overlay.applied' | 'metadata.overlay.removed' | 'metadata.imported' | 'metadata.exported'>Event type
metadataTypeEnum<'object' | 'field' | 'trigger' | 'validation' | 'hook' | 'view' | 'page' | 'dashboard' | 'app' | 'action' | 'report' | 'flow' | 'workflow' | 'approval' | 'datasource' | 'translation' | 'router' | 'function' | 'service' | 'permission' | 'profile' | 'role' | 'agent'>Metadata type
namestringMetadata item name
namespacestringoptionalNamespace
packageIdstringoptionalOwning package ID
timestampstringEvent timestamp
actorstringoptionalUser or system that triggered the event
payloadRecord<string, any>optionalEvent-specific payload

MetadataPluginConfig

Properties

PropertyTypeRequiredDescription
storageObjectStorage backend configuration
customizationPoliciesObject[]optionalDefault customization policies per type
mergeStrategyObjectoptionalMerge strategy for package upgrades
additionalTypesObject[]optionalAdditional custom metadata types
enableEventsbooleanEmit metadata change events
validateOnWritebooleanValidate metadata on write
enableVersioningbooleanTrack metadata version history
cacheMaxItemsintegerMax items in memory cache

MetadataPluginManifest

Properties

PropertyTypeRequiredDescription
idstringMetadata plugin ID
namestringPlugin name
versionstringPlugin version
typestringPlugin type
descriptionstringPlugin description
capabilitiesObjectPlugin capabilities
configObjectoptionalPlugin configuration

MetadataQuery

Properties

PropertyTypeRequiredDescription
typesEnum<'object' | 'field' | 'trigger' | 'validation' | 'hook' | 'view' | 'page' | 'dashboard' | 'app' | 'action' | 'report' | 'flow' | 'workflow' | 'approval' | 'datasource' | 'translation' | 'router' | 'function' | 'service' | 'permission' | 'profile' | 'role' | 'agent'>[]optionalFilter by metadata types
namespacesstring[]optionalFilter by namespaces
packageIdstringoptionalFilter by owning package
searchstringoptionalFull-text search query
scopeEnum<'system' | 'platform' | 'user'>optionalFilter by scope
stateEnum<'draft' | 'active' | 'archived' | 'deprecated'>optionalFilter by lifecycle state
tagsstring[]optionalFilter by tags
sortByEnum<'name' | 'type' | 'updatedAt' | 'createdAt'>Sort field
sortOrderEnum<'asc' | 'desc'>Sort direction
pageintegerPage number
pageSizeintegerItems per page

MetadataQueryResult

Properties

PropertyTypeRequiredDescription
itemsObject[]Matched metadata items
totalintegerTotal matching items
pageintegerCurrent page
pageSizeintegerPage size

MetadataType

Allowed Values

  • object
  • field
  • trigger
  • validation
  • hook
  • view
  • page
  • dashboard
  • app
  • action
  • report
  • flow
  • workflow
  • approval
  • datasource
  • translation
  • router
  • function
  • service
  • permission
  • profile
  • role
  • agent

MetadataTypeRegistryEntry

Properties

PropertyTypeRequiredDescription
typeEnum<'object' | 'field' | 'trigger' | 'validation' | 'hook' | 'view' | 'page' | 'dashboard' | 'app' | 'action' | 'report' | 'flow' | 'workflow' | 'approval' | 'datasource' | 'translation' | 'router' | 'function' | 'service' | 'permission' | 'profile' | 'role' | 'agent'>Metadata type identifier
labelstringDisplay label for the metadata type
descriptionstringoptionalDescription of the metadata type
filePatternsstring[]Glob patterns to discover files of this type
supportsOverlaybooleanWhether overlay customization is supported
allowRuntimeCreatebooleanAllow runtime creation via API
supportsVersioningbooleanWhether version history is tracked
loadOrderintegerLoading priority (lower = earlier)
domainEnum<'data' | 'ui' | 'automation' | 'system' | 'security' | 'ai'>Protocol domain

MetadataValidationResult

Properties

PropertyTypeRequiredDescription
validbooleanWhether the metadata is valid
errorsObject[]optionalValidation errors
warningsObject[]optionalValidation warnings

On this page