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:
-
Check compatibility (kernel version, existing objects, conflicts)
-
Validate app manifest
-
Apply schema changes (via deploy pipeline)
-
Seed initial data
-
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
| Property | Type | Required | Description |
|---|---|---|---|
| compatible | boolean | ✅ | Whether the app is compatible |
| issues | Object[] | ✅ | Compatibility issues |
AppInstallRequest
App install request
Properties
| Property | Type | Required | Description |
|---|---|---|---|
| tenantId | string | ✅ | Target tenant ID |
| appId | string | ✅ | App identifier |
| configOverrides | Record<string, any> | optional | Configuration overrides |
| skipSeedData | boolean | ✅ | Skip seed data population |
AppInstallResult
App install result
Properties
| Property | Type | Required | Description |
|---|---|---|---|
| success | boolean | ✅ | Whether installation succeeded |
| appId | string | ✅ | Installed app identifier |
| version | string | ✅ | Installed app version |
| installedObjects | string[] | ✅ | Objects created/updated |
| createdTables | string[] | ✅ | Database tables created |
| seededRecords | integer | ✅ | Seed records inserted |
| durationMs | integer | optional | Installation duration |
| error | string | optional | Error message on failure |
AppManifest
App manifest for marketplace installation
Properties
| Property | Type | Required | Description |
|---|---|---|---|
| name | string | ✅ | App identifier (snake_case) |
| label | string | ✅ | App display label |
| version | string | ✅ | App version (semver) |
| description | string | optional | App description |
| minKernelVersion | string | optional | Minimum required kernel version |
| objects | string[] | ✅ | Object names provided |
| views | string[] | ✅ | View names provided |
| flows | string[] | ✅ | Flow names provided |
| hasSeedData | boolean | ✅ | Whether app includes seed data |
| seedData | Record<string, any>[] | ✅ | Seed data records |
| dependencies | string[] | ✅ | Required app dependencies |