ObjectStackObjectStack

App Install schema — System Protocol reference

Defines the schemas for installing marketplace apps into tenant databases.

App Installation Protocol

Defines the schemas for installing marketplace apps into tenant databases. An "app install" injects metadata (objects, views, flows) + schema sync into a tenant's isolated database.

Install pipeline:

  1. Check compatibility (kernel version, existing objects, conflicts)
  2. Validate app manifest
  3. Apply schema changes (via deploy pipeline)
  4. Seed initial data
  5. Register app in tenant's metadata registry

Source: packages/spec/src/system/app-install.zod.ts

TypeScript Usage

import { AppCompatibilityCheckSchema, AppInstallRequestSchema, AppInstallResultSchema, AppManifestSchema } from '@objectstack/spec/system';
import type { AppCompatibilityCheck, AppInstallRequest, AppInstallResult, AppManifest } from '@objectstack/spec/system';

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

AppCompatibilityCheck

App compatibility check result

Properties

PropertyTypeRequiredDescription
compatibleboolean✅Whether the app is compatible
issues{ severity: Enum<'error' | 'warning'>; message: string; category: Enum<'kernel_version' | 'object_conflict' | 'dependency_missing' | 'quota_exceeded'> }[]optional (default: [])Compatibility issues

Nested Shape: AppCompatibilityCheck.issues[number]

PropertyTypeRequiredDescription
severityEnum<'error' | 'warning'>✅Issue severity
messagestring✅Issue description
categoryEnum<'kernel_version' | 'object_conflict' | 'dependency_missing' | 'quota_exceeded'>✅Issue category

AppInstallRequest

App install request

Properties

PropertyTypeRequiredDescription
tenantIdstring✅Target tenant ID
appIdstring✅App identifier
configOverridesRecord<string, any>optionalConfiguration overrides
skipSeedDatabooleanoptional (default: false)Skip seed data population

AppInstallResult

App install result

Properties

PropertyTypeRequiredDescription
successboolean✅Whether installation succeeded
appIdstring✅Installed app identifier
versionstring✅Installed app version
installedObjectsstring[]optional (default: [])Objects created/updated
createdTablesstring[]optional (default: [])Database tables created
seededRecordsintegeroptional (default: 0)Seed records inserted
durationMsintegeroptionalInstallation duration in milliseconds
errorstringoptionalError message on failure

AppManifest

App manifest for marketplace installation

Properties

PropertyTypeRequiredDescription
namestring✅App identifier (snake_case)
labelstring✅App display label
versionstring✅App version (semver)
descriptionstringoptionalApp description
minKernelVersionstringoptionalMinimum required kernel version
objectsstring[]optional (default: [])Object names provided
viewsstring[]optional (default: [])View names provided
flowsstring[]optional (default: [])Flow names provided
hasSeedDatabooleanoptional (default: false)Whether app includes seed data
seedDataRecord<string, any>[]optional (default: [])Seed data records
dependenciesstring[]optional (default: [])Required app dependencies

On this page