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'> }[]optional (default: [])Compatibility issues

Nested Shape: AppCompatibilityCheck.issues[number]

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

AppInstallRequest

App install request

Properties

PropertyTypeRequiredDescription
tenantIdstringTarget tenant ID
appIdstringApp identifier
configOverridesRecord<string, any>optionalConfiguration overrides
skipSeedDatabooleanoptional (default: false)Skip seed data population

AppInstallResult

App install result

Properties

PropertyTypeRequiredDescription
successbooleanWhether installation succeeded
appIdstringInstalled app identifier
versionstringInstalled app version
installedObjectsstring[]optional (default: [])Objects created/updated
createdTablesstring[]optional (default: [])Database tables created
seededRecordsintegeroptional (default: 0)Seed 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[]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