ObjectStackObjectStack

Metadata

Metadata protocol schemas

Metadata Service Protocol

Defines the standard API contracts for the @objectstack/metadata package.

This is the single authority for ALL metadata-related services and APIs across

the entire platform, including Hono, Next.js, and NestJS adapters.

Architecture


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

│              @objectstack/metadata — API Contracts              │

│                                                                  │

│  CRUD        │ Query/Search │ Bulk Ops  │ Overlay   │ Watch     │

│  Import/Export│ Validation   │ Type Reg  │ Deps      │           │

├──────────────────────────────────────────────────────────────────┤

│  Hono Adapter │ Next.js Adapter │ NestJS Adapter │ CLI         │

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

Alignment

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

  • ServiceNow: System Dictionary + Metadata API

  • Kubernetes: API Server + CRD Registry

Source: packages/spec/src/api/metadata.zod.ts

TypeScript Usage

import { AppDefinitionResponse, ConceptListResponse, MetadataBulkResponse, MetadataBulkUnregisterRequest, MetadataDeleteResponse, MetadataDependenciesResponse, MetadataDependentsResponse, MetadataEffectiveResponse, MetadataExistsResponse, MetadataExportRequest, MetadataExportResponse, MetadataImportRequest, MetadataImportResponse, MetadataItemResponse, MetadataListResponse, MetadataNamesResponse, MetadataOverlayResponse, MetadataOverlaySaveRequest, MetadataQueryRequest, MetadataQueryResponse, MetadataRegisterRequest, MetadataTypeInfoResponse, MetadataTypesResponse, MetadataValidateRequest, MetadataValidateResponse, ObjectDefinitionResponse } from '@objectstack/spec/api';
import type { AppDefinitionResponse, ConceptListResponse, MetadataBulkResponse, MetadataBulkUnregisterRequest, MetadataDeleteResponse, MetadataDependenciesResponse, MetadataDependentsResponse, MetadataEffectiveResponse, MetadataExistsResponse, MetadataExportRequest, MetadataExportResponse, MetadataImportRequest, MetadataImportResponse, MetadataItemResponse, MetadataListResponse, MetadataNamesResponse, MetadataOverlayResponse, MetadataOverlaySaveRequest, MetadataQueryRequest, MetadataQueryResponse, MetadataRegisterRequest, MetadataTypeInfoResponse, MetadataTypesResponse, MetadataValidateRequest, MetadataValidateResponse, ObjectDefinitionResponse } from '@objectstack/spec/api';

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

AppDefinitionResponse

Properties

PropertyTypeRequiredDescription
successbooleanOperation success status
errorObjectoptionalError details if success is false
metaObjectoptionalResponse metadata
dataObjectFull App Configuration

ConceptListResponse

Properties

PropertyTypeRequiredDescription
successbooleanOperation success status
errorObjectoptionalError details if success is false
metaObjectoptionalResponse metadata
dataObject[]List of available concepts (Objects, Apps, Flows)

MetadataBulkResponse

Properties

PropertyTypeRequiredDescription
successbooleanOperation success status
errorObjectoptionalError details if success is false
metaObjectoptionalResponse metadata
dataObjectBulk operation result

MetadataBulkUnregisterRequest

Properties

PropertyTypeRequiredDescription
itemsObject[]Items to unregister

MetadataDeleteResponse

Properties

PropertyTypeRequiredDescription
successbooleanOperation success status
errorObjectoptionalError details if success is false
metaObjectoptionalResponse metadata
dataObject

MetadataDependenciesResponse

Properties

PropertyTypeRequiredDescription
successbooleanOperation success status
errorObjectoptionalError details if success is false
metaObjectoptionalResponse metadata
dataObject[]Items this item depends on

MetadataDependentsResponse

Properties

PropertyTypeRequiredDescription
successbooleanOperation success status
errorObjectoptionalError details if success is false
metaObjectoptionalResponse metadata
dataObject[]Items that depend on this item

MetadataEffectiveResponse

Properties

PropertyTypeRequiredDescription
successbooleanOperation success status
errorObjectoptionalError details if success is false
metaObjectoptionalResponse metadata
dataRecord<string, any>optionalEffective metadata with all overlays applied

MetadataExistsResponse

Properties

PropertyTypeRequiredDescription
successbooleanOperation success status
errorObjectoptionalError details if success is false
metaObjectoptionalResponse metadata
dataObject

MetadataExportRequest

Properties

PropertyTypeRequiredDescription
typesstring[]optionalFilter by metadata types
namespacesstring[]optionalFilter by namespaces
formatEnum<'json' | 'yaml'>Export format

MetadataExportResponse

Properties

PropertyTypeRequiredDescription
successbooleanOperation success status
errorObjectoptionalError details if success is false
metaObjectoptionalResponse metadata
dataanyExported metadata bundle

MetadataImportRequest

Properties

PropertyTypeRequiredDescription
dataanyMetadata bundle to import
conflictResolutionEnum<'skip' | 'overwrite' | 'merge'>Conflict resolution strategy
validatebooleanValidate before import
dryRunbooleanDry run (no save)

MetadataImportResponse

Properties

PropertyTypeRequiredDescription
successbooleanOperation success status
errorObjectoptionalError details if success is false
metaObjectoptionalResponse metadata
dataObjectImport result

MetadataItemResponse

Properties

PropertyTypeRequiredDescription
successbooleanOperation success status
errorObjectoptionalError details if success is false
metaObjectoptionalResponse metadata
dataObjectMetadata item

MetadataListResponse

Properties

PropertyTypeRequiredDescription
successbooleanOperation success status
errorObjectoptionalError details if success is false
metaObjectoptionalResponse metadata
dataRecord<string, any>[]Array of metadata definitions

MetadataNamesResponse

Properties

PropertyTypeRequiredDescription
successbooleanOperation success status
errorObjectoptionalError details if success is false
metaObjectoptionalResponse metadata
datastring[]Array of metadata item names

MetadataOverlayResponse

Properties

PropertyTypeRequiredDescription
successbooleanOperation success status
errorObjectoptionalError details if success is false
metaObjectoptionalResponse metadata
dataObjectoptionalOverlay definition, undefined if none

MetadataOverlaySaveRequest

Overlay to save

Properties

PropertyTypeRequiredDescription
idstringOverlay record ID (UUID)
baseTypestringMetadata type being customized
baseNamestringMetadata name being customized
packageIdstringoptionalPackage ID that delivered the base metadata
packageVersionstringoptionalPackage version when overlay was created
scopeEnum<'platform' | 'user'>Customization scope (platform=admin, user=personal)
tenantIdstringoptionalTenant identifier
ownerstringoptionalOwner user ID for user-scope overlays
patchRecord<string, any>JSON Merge Patch payload (changed fields only)
changesObject[]optionalField-level change tracking for conflict detection
activebooleanWhether this overlay is active
createdAtstringoptional
createdBystringoptional
updatedAtstringoptional
updatedBystringoptional

MetadataQueryRequest

Metadata query with filtering, sorting, and pagination

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

MetadataQueryResponse

Properties

PropertyTypeRequiredDescription
successbooleanOperation success status
errorObjectoptionalError details if success is false
metaObjectoptionalResponse metadata
dataObjectPaginated query result

MetadataRegisterRequest

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
namestringItem name (snake_case)
dataRecord<string, any>Metadata payload
namespacestringoptionalOptional namespace

MetadataTypeInfoResponse

Properties

PropertyTypeRequiredDescription
successbooleanOperation success status
errorObjectoptionalError details if success is false
metaObjectoptionalResponse metadata
dataObjectoptionalType info

MetadataTypesResponse

Properties

PropertyTypeRequiredDescription
successbooleanOperation success status
errorObjectoptionalError details if success is false
metaObjectoptionalResponse metadata
datastring[]Registered metadata type identifiers

MetadataValidateRequest

Properties

PropertyTypeRequiredDescription
typestringMetadata type to validate against
dataanyMetadata payload to validate

MetadataValidateResponse

Properties

PropertyTypeRequiredDescription
successbooleanOperation success status
errorObjectoptionalError details if success is false
metaObjectoptionalResponse metadata
dataObjectValidation result

ObjectDefinitionResponse

Properties

PropertyTypeRequiredDescription
successbooleanOperation success status
errorObjectoptionalError details if success is false
metaObjectoptionalResponse metadata
dataObjectFull Object Schema

On this page