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 { AppCompatibilityCheck, AppInstallRequest, AppInstallResult, AppManifest } from '@objectstack/spec/system';
import type { AppCompatibilityCheck, AppInstallRequest, AppInstallResult, AppManifest } from '@objectstack/spec/system';

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

AppCompatibilityCheck

App compatibility check result

Properties

PropertyTypeRequiredDescription
compatiblebooleanWhether the app is compatible
issuesObject[]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