ObjectStackObjectStack

App Install

App Install protocol schemas

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
compatiblebooleanWhether the app is compatible
issues{ severity: Enum<'error' | 'warning'>; message: string; category: Enum<'kernel_version' | 'object_conflict' | 'dependency_missing' | 'quota_exceeded'> }[]Compatibility issues

AppInstallRequest

App install request

Properties

PropertyTypeRequiredDescription
tenantIdstringTarget tenant ID
appIdstringApp identifier
configOverridesRecord<string, any>optionalConfiguration overrides
skipSeedDatabooleanSkip seed data population

AppInstallResult

App install result

Properties

PropertyTypeRequiredDescription
successbooleanWhether installation succeeded
appIdstringInstalled app identifier
versionstringInstalled app version
installedObjectsstring[]Objects created/updated
createdTablesstring[]Database tables created
seededRecordsintegerSeed records inserted
durationMsintegeroptionalInstallation duration
errorstringoptionalError message on failure

AppManifest

App manifest for marketplace installation

Properties

PropertyTypeRequiredDescription
namestringApp identifier (snake_case)
labelstringApp display label
versionstringApp version (semver)
descriptionstringoptionalApp description
minKernelVersionstringoptionalMinimum required kernel version
objectsstring[]Object names provided
viewsstring[]View names provided
flowsstring[]Flow names provided
hasSeedDatabooleanWhether app includes seed data
seedDataRecord<string, any>[]Seed data records
dependenciesstring[]Required app dependencies

On this page