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:
- 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 { 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
| Property | Type | Required | Description |
|---|---|---|---|
| compatible | boolean | ✅ | 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]
| Property | Type | Required | Description |
|---|---|---|---|
| severity | Enum<'error' | 'warning'> | ✅ | Issue severity |
| message | string | ✅ | Issue description |
| category | Enum<'kernel_version' | 'object_conflict' | 'dependency_missing' | 'quota_exceeded'> | ✅ | Issue category |
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 | optional (default: false) | 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[] | optional (default: []) | Objects created/updated |
| createdTables | string[] | optional (default: []) | Database tables created |
| seededRecords | integer | optional (default: 0) | Seed records inserted |
| durationMs | integer | optional | Installation duration in milliseconds |
| 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[] | optional (default: []) | Object names provided |
| views | string[] | optional (default: []) | View names provided |
| flows | string[] | optional (default: []) | Flow names provided |
| hasSeedData | boolean | optional (default: false) | Whether app includes seed data |
| seedData | Record<string, any>[] | optional (default: []) | Seed data records |
| dependencies | string[] | optional (default: []) | Required app dependencies |
System Protocol
The ObjectStack System Protocol in 36 reference pages: every schema in @objectstack/spec with its properties, types, defaults and a TypeScript example.
Auth Config
Auth Config schemas of the ObjectStack System Protocol: AdvancedAuthConfig and 10 more — each property with its type, default and a TypeScript example.