| title | Misc |
|---|---|
| description | Misc protocol schemas |
{/*
import { AckMode, ApiVersionConfig, BuildConfig, CdcConfig, DatabaseConnector, DatabasePoolConfig, DatabaseTable, DeliveryGuarantee, DeploymentConfig, DlqConfig, DomainConfig, EdgeFunctionConfig, EnvironmentVariables, FileAccessPattern, FileFilterConfig, FileMetadataConfig, FileStorageConnector, FileStorageProvider, FileVersioningConfig, GitHubActionsWorkflow, GitHubCommitConfig, GitHubConnector, GitHubIssueTracking, GitHubProvider, GitHubPullRequestConfig, GitHubReleaseConfig, GitHubRepository, GitRepositoryConfig, MessageFormat, MessageQueueConnector, ProducerConfig, SaasConnector, SaasObjectType, SaasProvider, SslConfig, StorageBucket, TopicQueue, VercelConnector, VercelFramework, VercelMonitoring, VercelProject, VercelProvider, VercelTeam } from '@objectstack/spec/integration';
import type { AckMode, ApiVersionConfig, BuildConfig, CdcConfig, DatabaseConnector, DatabasePoolConfig, DatabaseTable, DeliveryGuarantee, DeploymentConfig, DlqConfig, DomainConfig, EdgeFunctionConfig, EnvironmentVariables, FileAccessPattern, FileFilterConfig, FileMetadataConfig, FileStorageConnector, FileStorageProvider, FileVersioningConfig, GitHubActionsWorkflow, GitHubCommitConfig, GitHubConnector, GitHubIssueTracking, GitHubProvider, GitHubPullRequestConfig, GitHubReleaseConfig, GitHubRepository, GitRepositoryConfig, MessageFormat, MessageQueueConnector, ProducerConfig, SaasConnector, SaasObjectType, SaasProvider, SslConfig, StorageBucket, TopicQueue, VercelConnector, VercelFramework, VercelMonitoring, VercelProject, VercelProvider, VercelTeam } from '@objectstack/spec/integration';
// Validate data
const result = AckMode.parse(data);Message acknowledgment mode
automanualclient
| Property | Type | Required | Description |
|---|---|---|---|
| version | string |
✅ | API version (e.g., "v2", "2023-10-01") |
| isDefault | boolean |
✅ | Is this the default version |
| deprecationDate | string |
optional | API version deprecation date (ISO 8601) |
| sunsetDate | string |
optional | API version sunset date (ISO 8601) |
| Property | Type | Required | Description |
|---|---|---|---|
| buildCommand | string |
optional | Build command (e.g., npm run build) |
| outputDirectory | string |
optional | Output directory (e.g., .next, dist) |
| installCommand | string |
optional | Install command (e.g., npm install, pnpm install) |
| devCommand | string |
optional | Development command (e.g., npm run dev) |
| nodeVersion | string |
optional | Node.js version (e.g., 18.x, 20.x) |
| env | Record<string, string> |
optional | Build environment variables |
| Property | Type | Required | Description |
|---|---|---|---|
| enabled | boolean |
✅ | Enable CDC |
| method | Enum<'log_based' | 'trigger_based' | 'query_based' | 'custom'> |
✅ | CDC method |
| slotName | string |
optional | Replication slot name (for log-based CDC) |
| publicationName | string |
optional | Publication name (for PostgreSQL) |
| startPosition | string |
optional | Starting position/LSN for CDC stream |
| batchSize | number |
✅ | CDC batch size |
| pollIntervalMs | number |
✅ | CDC polling interval in ms |
| Property | Type | Required | Description |
|---|---|---|---|
| name | string |
✅ | Unique connector identifier |
| label | string |
✅ | Display label |
| type | 'database' |
✅ | |
| description | string |
optional | Connector description |
| icon | string |
optional | Icon identifier |
| authentication | { type: 'oauth2'; authorizationUrl: string; tokenUrl: string; clientId: string; … } | { type: 'api-key'; key: string; headerName?: string; paramName?: string } | { type: 'basic'; username: string; password: string } | { type: 'bearer'; token: string } | { type: 'none' } |
optional | Authentication configuration (runtime shape with inline secrets). Provider-bound declarative instances use auth.credentialRef instead. |
| provider | Enum<'postgresql' | 'mysql' | 'mariadb' | 'mssql' | 'oracle' | 'mongodb' | 'redis' | 'cassandra' | 'snowflake' | 'bigquery' | 'redshift' | 'custom'> |
✅ | Database provider type |
| providerConfig | Record<string, any> |
optional | Provider-specific config validated by the provider factory at boot (e.g. { spec, baseUrl } for openapi, where spec is an inline document, a package-relative file path like './billing-openapi.json', or an http(s) URL). Requires provider. |
| auth | { type: 'none' } | { type: 'bearer'; credentialRef: string } | { type: 'api-key'; credentialRef: string; headerName?: string; paramName?: string } | { type: 'basic'; username: string; credentialRef: string } |
optional | Declarative instance auth — references credentials via credentialRef (resolved at boot), never inline secrets. Requires provider (ADR-0097). |
| actions | { key: string; label: string; description?: string; inputSchema?: Record<string, any>; … }[] |
optional | |
| triggers | { key: string; label: string; description?: string; type: Enum<'polling' | 'webhook'>; … }[] |
optional | Trigger definitions (not yet enforced — never read at registration; see #3197) |
| syncConfig | { strategy?: Enum<'full' | 'incremental' | 'upsert' | 'append_only'>; direction?: Enum<'import' | 'export' | 'bidirectional'>; schedule?: string | { dialect: Enum<'cel' | 'cron' | 'template'>; source?: string; ast?: any; meta?: object }; realtimeSync?: boolean; … } |
optional | Data sync configuration |
| fieldMappings | { source: string; target: string; transform?: { type: 'constant'; value: any } | { type: 'cast'; targetType: Enum<'string' | 'number' | 'boolean' | 'date'> } | { type: 'lookup'; table: string; keyField: string; valueField: string } | { type: 'javascript'; expression: string | { dialect: Enum<'cel' | 'cron' | 'template'>; source?: string; ast?: any; meta?: object } } | { type: 'map'; mappings: Record<string, any> }; defaultValue?: any; … }[] |
optional | Field mapping rules |
| webhooks | { name: string; label?: string; object?: string; triggers?: Enum<'create' | 'update' | 'delete'>[]; … }[] |
optional | Webhook configurations (not yet enforced — never read at registration; see #3197) |
| rateLimitConfig | { strategy?: Enum<'fixed_window' | 'sliding_window' | 'token_bucket' | 'leaky_bucket'>; maxRequests: number; windowSeconds: number; burstCapacity?: number; … } |
optional | Rate limiting configuration |
| retryConfig | { strategy?: Enum<'exponential_backoff' | 'linear_backoff' | 'fixed_delay' | 'no_retry'>; maxAttempts?: number; initialDelayMs?: number; maxDelayMs?: number; … } |
optional | Retry configuration |
| connectionTimeoutMs | number |
optional | Connection timeout in ms |
| requestTimeoutMs | number |
optional | Request timeout in ms |
| status | Enum<'active' | 'inactive' | 'error' | 'configuring'> |
optional | Connector status |
| enabled | boolean |
optional | Enable connector. On declarative stack entries, false marks a deliberate catalog-only descriptor (#2612). |
| errorMapping | { rules: { sourceCode: string | number; sourceMessage?: string; targetCode: string; targetCategory: Enum<'validation' | 'authorization' | 'not_found' | 'conflict' | 'rate_limit' | 'timeout' | 'server_error' | 'integration_error'>; … }[]; defaultCategory?: Enum<'validation' | 'authorization' | 'not_found' | 'conflict' | 'rate_limit' | 'timeout' | 'server_error' | 'integration_error'>; unmappedBehavior: Enum<'passthrough' | 'generic_error' | 'throw'>; logUnmapped?: boolean } |
optional | Error mapping configuration |
| health | { healthCheck?: object; circuitBreaker?: object } |
optional | Health and resilience configuration |
| metadata | Record<string, any> |
optional | Custom connector metadata |
| connectionConfig | { host: string; port: number; database: string; username: string; … } |
✅ | Database connection configuration |
| poolConfig | { min?: number; max?: number; idleTimeoutMs?: number; connectionTimeoutMs?: number; … } |
optional | Connection pool configuration |
| sslConfig | { enabled?: boolean; rejectUnauthorized?: boolean; ca?: string; cert?: string; … } |
optional | SSL/TLS configuration |
| tables | { name: string; label: string; schema?: string; tableName: string; … }[] |
✅ | Tables to sync |
| cdcConfig | { enabled?: boolean; method: Enum<'log_based' | 'trigger_based' | 'query_based' | 'custom'>; slotName?: string; publicationName?: string; … } |
optional | CDC configuration |
| readReplicaConfig | { enabled?: boolean; hosts: { host: string; port: number; weight?: number }[] } |
optional | Read replica configuration |
| queryTimeoutMs | number |
optional | Query timeout in ms |
| enableQueryLogging | boolean |
optional | Enable SQL query logging |
| Property | Type | Required | Description |
|---|---|---|---|
| min | number |
✅ | Minimum connections in pool |
| max | number |
✅ | Maximum connections in pool |
| idleTimeoutMs | number |
✅ | Idle connection timeout in ms |
| connectionTimeoutMs | number |
✅ | Connection establishment timeout in ms |
| acquireTimeoutMs | number |
✅ | Connection acquisition timeout in ms |
| evictionRunIntervalMs | number |
✅ | Connection eviction check interval in ms |
| testOnBorrow | boolean |
✅ | Test connection before use |
| Property | Type | Required | Description |
|---|---|---|---|
| name | string |
✅ | Table name in ObjectStack (snake_case) |
| label | string |
✅ | Display label |
| schema | string |
optional | Database schema name |
| tableName | string |
✅ | Actual table name in database |
| primaryKey | string |
✅ | Primary key column |
| enabled | boolean |
optional | Enable sync for this table |
| fieldMappings | { source: string; target: string; transform?: { type: 'constant'; value: any } | { type: 'cast'; targetType: Enum<'string' | 'number' | 'boolean' | 'date'> } | { type: 'lookup'; table: string; keyField: string; valueField: string } | { type: 'javascript'; expression: string | { dialect: Enum<'cel' | 'cron' | 'template'>; source?: string; ast?: any; meta?: object } } | { type: 'map'; mappings: Record<string, any> }; defaultValue?: any; … }[] |
optional | Table-specific field mappings |
| whereClause | string |
optional | SQL WHERE clause for filtering |
Message delivery guarantee
at_most_onceat_least_onceexactly_once
| Property | Type | Required | Description |
|---|---|---|---|
| autoDeployment | boolean |
✅ | Enable automatic deployments |
| regions | Enum<'iad1' | 'sfo1' | 'gru1' | 'lhr1' | 'fra1' | 'sin1' | 'syd1' | 'hnd1' | 'icn1'>[] |
optional | Deployment regions |
| enablePreview | boolean |
✅ | Enable preview deployments |
| previewComments | boolean |
✅ | Post preview URLs in PR comments |
| productionProtection | boolean |
✅ | Require approval for production deployments |
| deployHooks | { name: string; url: string; branch?: string }[] |
optional | Deploy hooks |
| Property | Type | Required | Description |
|---|---|---|---|
| enabled | boolean |
✅ | Enable DLQ |
| queueName | string |
✅ | Dead letter queue/topic name |
| maxRetries | number |
✅ | Max retries before DLQ |
| retryDelayMs | number |
✅ | Retry delay in ms |
| Property | Type | Required | Description |
|---|---|---|---|
| domain | string |
✅ | Domain name (e.g., app.example.com) |
| httpsRedirect | boolean |
✅ | Redirect HTTP to HTTPS |
| customCertificate | { cert: string; key: string; ca?: string } |
optional | Custom SSL certificate |
| gitBranch | string |
optional | Git branch to deploy to this domain |
| Property | Type | Required | Description |
|---|---|---|---|
| name | string |
✅ | Edge function name |
| path | string |
✅ | Function path (e.g., /api/*) |
| regions | string[] |
optional | Specific regions for this function |
| memoryLimit | integer |
✅ | Memory limit in MB |
| timeout | integer |
✅ | Timeout in seconds |
| Property | Type | Required | Description |
|---|---|---|---|
| key | string |
✅ | Environment variable name |
| value | string |
✅ | Environment variable value |
| target | Enum<'production' | 'preview' | 'development'>[] |
✅ | Target environments |
| isSecret | boolean |
✅ | Encrypt this variable |
| gitBranch | string |
optional | Specific git branch |
File access pattern
public_readprivateauthenticated_readbucket_owner_readbucket_owner_full
| Property | Type | Required | Description |
|---|---|---|---|
| includePatterns | string[] |
optional | File patterns to include (glob) |
| excludePatterns | string[] |
optional | File patterns to exclude (glob) |
| minFileSize | number |
optional | Minimum file size in bytes |
| maxFileSize | number |
optional | Maximum file size in bytes |
| allowedExtensions | string[] |
optional | Allowed file extensions |
| blockedExtensions | string[] |
optional | Blocked file extensions |
| Property | Type | Required | Description |
|---|---|---|---|
| extractMetadata | boolean |
✅ | Extract file metadata |
| metadataFields | Enum<'content_type' | 'file_size' | 'last_modified' | 'etag' | 'checksum' | 'creator' | 'created_at' | 'custom'>[] |
optional | Metadata fields to extract |
| customMetadata | Record<string, string> |
optional | Custom metadata key-value pairs |
| Property | Type | Required | Description |
|---|---|---|---|
| name | string |
✅ | Unique connector identifier |
| label | string |
✅ | Display label |
| type | 'file_storage' |
✅ | |
| description | string |
optional | Connector description |
| icon | string |
optional | Icon identifier |
| authentication | { type: 'oauth2'; authorizationUrl: string; tokenUrl: string; clientId: string; … } | { type: 'api-key'; key: string; headerName?: string; paramName?: string } | { type: 'basic'; username: string; password: string } | { type: 'bearer'; token: string } | { type: 'none' } |
optional | Authentication configuration (runtime shape with inline secrets). Provider-bound declarative instances use auth.credentialRef instead. |
| provider | Enum<'s3' | 'azure_blob' | 'gcs' | 'dropbox' | 'box' | 'onedrive' | 'google_drive' | 'sharepoint' | 'ftp' | 'local' | 'custom'> |
✅ | File storage provider type |
| providerConfig | Record<string, any> |
optional | Provider-specific config validated by the provider factory at boot (e.g. { spec, baseUrl } for openapi, where spec is an inline document, a package-relative file path like './billing-openapi.json', or an http(s) URL). Requires provider. |
| auth | { type: 'none' } | { type: 'bearer'; credentialRef: string } | { type: 'api-key'; credentialRef: string; headerName?: string; paramName?: string } | { type: 'basic'; username: string; credentialRef: string } |
optional | Declarative instance auth — references credentials via credentialRef (resolved at boot), never inline secrets. Requires provider (ADR-0097). |
| actions | { key: string; label: string; description?: string; inputSchema?: Record<string, any>; … }[] |
optional | |
| triggers | { key: string; label: string; description?: string; type: Enum<'polling' | 'webhook'>; … }[] |
optional | Trigger definitions (not yet enforced — never read at registration; see #3197) |
| syncConfig | { strategy?: Enum<'full' | 'incremental' | 'upsert' | 'append_only'>; direction?: Enum<'import' | 'export' | 'bidirectional'>; schedule?: string | { dialect: Enum<'cel' | 'cron' | 'template'>; source?: string; ast?: any; meta?: object }; realtimeSync?: boolean; … } |
optional | Data sync configuration |
| fieldMappings | { source: string; target: string; transform?: { type: 'constant'; value: any } | { type: 'cast'; targetType: Enum<'string' | 'number' | 'boolean' | 'date'> } | { type: 'lookup'; table: string; keyField: string; valueField: string } | { type: 'javascript'; expression: string | { dialect: Enum<'cel' | 'cron' | 'template'>; source?: string; ast?: any; meta?: object } } | { type: 'map'; mappings: Record<string, any> }; defaultValue?: any; … }[] |
optional | Field mapping rules |
| webhooks | { name: string; label?: string; object?: string; triggers?: Enum<'create' | 'update' | 'delete'>[]; … }[] |
optional | Webhook configurations (not yet enforced — never read at registration; see #3197) |
| rateLimitConfig | { strategy?: Enum<'fixed_window' | 'sliding_window' | 'token_bucket' | 'leaky_bucket'>; maxRequests: number; windowSeconds: number; burstCapacity?: number; … } |
optional | Rate limiting configuration |
| retryConfig | { strategy?: Enum<'exponential_backoff' | 'linear_backoff' | 'fixed_delay' | 'no_retry'>; maxAttempts?: number; initialDelayMs?: number; maxDelayMs?: number; … } |
optional | Retry configuration |
| connectionTimeoutMs | number |
optional | Connection timeout in ms |
| requestTimeoutMs | number |
optional | Request timeout in ms |
| status | Enum<'active' | 'inactive' | 'error' | 'configuring'> |
optional | Connector status |
| enabled | boolean |
optional | Enable connector. On declarative stack entries, false marks a deliberate catalog-only descriptor (#2612). |
| errorMapping | { rules: { sourceCode: string | number; sourceMessage?: string; targetCode: string; targetCategory: Enum<'validation' | 'authorization' | 'not_found' | 'conflict' | 'rate_limit' | 'timeout' | 'server_error' | 'integration_error'>; … }[]; defaultCategory?: Enum<'validation' | 'authorization' | 'not_found' | 'conflict' | 'rate_limit' | 'timeout' | 'server_error' | 'integration_error'>; unmappedBehavior: Enum<'passthrough' | 'generic_error' | 'throw'>; logUnmapped?: boolean } |
optional | Error mapping configuration |
| health | { healthCheck?: object; circuitBreaker?: object } |
optional | Health and resilience configuration |
| metadata | Record<string, any> |
optional | Custom connector metadata |
| storageConfig | { endpoint?: string; region?: string; pathStyle?: boolean } |
optional | Storage configuration |
| buckets | { name: string; label: string; bucketName: string; region?: string; … }[] |
✅ | Buckets/containers to sync |
| metadataConfig | { extractMetadata?: boolean; metadataFields?: Enum<'content_type' | 'file_size' | 'last_modified' | 'etag' | 'checksum' | 'creator' | 'created_at' | 'custom'>[]; customMetadata?: Record<string, string> } |
optional | Metadata extraction configuration |
| multipartConfig | { enabled?: boolean; partSize?: number; maxConcurrentParts?: number; threshold?: number } |
optional | Multipart upload configuration |
| versioningConfig | { enabled?: boolean; maxVersions?: number; retentionDays?: number } |
optional | File versioning configuration |
| encryption | { enabled?: boolean; algorithm?: Enum<'AES256' | 'aws:kms' | 'custom'>; kmsKeyId?: string } |
optional | Encryption configuration |
| lifecyclePolicy | { enabled?: boolean; deleteAfterDays?: number; archiveAfterDays?: number } |
optional | Lifecycle policy |
| contentProcessing | { extractText?: boolean; generateThumbnails?: boolean; thumbnailSizes?: { width: number; height: number }[]; virusScan?: boolean } |
optional | Content processing configuration |
| bufferSize | number |
optional | Buffer size in bytes |
| transferAcceleration | boolean |
optional | Enable transfer acceleration |
File storage provider type
s3azure_blobgcsdropboxboxonedrivegoogle_drivesharepointftplocalcustom
| Property | Type | Required | Description |
|---|---|---|---|
| enabled | boolean |
✅ | Enable file versioning |
| maxVersions | number |
optional | Maximum versions to retain |
| retentionDays | number |
optional | Version retention period in days |
| Property | Type | Required | Description |
|---|---|---|---|
| name | string |
✅ | Workflow name |
| path | string |
✅ | Workflow file path (e.g., .github/workflows/ci.yml) |
| enabled | boolean |
✅ | Enable workflow |
| triggers | Enum<'push' | 'pull_request' | 'release' | 'schedule' | 'workflow_dispatch' | 'repository_dispatch'>[] |
optional | Workflow triggers |
| env | Record<string, string> |
optional | Environment variables |
| secrets | string[] |
optional | Required secrets |
| Property | Type | Required | Description |
|---|---|---|---|
| authorName | string |
optional | Commit author name |
| authorEmail | string |
optional | Commit author email |
| signCommits | boolean |
✅ | Sign commits with GPG |
| messageTemplate | string |
optional | Commit message template |
| useConventionalCommits | boolean |
✅ | Use conventional commits format |
| Property | Type | Required | Description |
|---|---|---|---|
| name | string |
✅ | Unique connector identifier |
| label | string |
✅ | Display label |
| type | 'saas' |
✅ | |
| description | string |
optional | Connector description |
| icon | string |
optional | Icon identifier |
| authentication | { type: 'oauth2'; authorizationUrl: string; tokenUrl: string; clientId: string; … } | { type: 'api-key'; key: string; headerName?: string; paramName?: string } | { type: 'basic'; username: string; password: string } | { type: 'bearer'; token: string } | { type: 'none' } |
optional | Authentication configuration (runtime shape with inline secrets). Provider-bound declarative instances use auth.credentialRef instead. |
| provider | Enum<'github' | 'github_enterprise'> |
✅ | GitHub provider |
| providerConfig | Record<string, any> |
optional | Provider-specific config validated by the provider factory at boot (e.g. { spec, baseUrl } for openapi, where spec is an inline document, a package-relative file path like './billing-openapi.json', or an http(s) URL). Requires provider. |
| auth | { type: 'none' } | { type: 'bearer'; credentialRef: string } | { type: 'api-key'; credentialRef: string; headerName?: string; paramName?: string } | { type: 'basic'; username: string; credentialRef: string } |
optional | Declarative instance auth — references credentials via credentialRef (resolved at boot), never inline secrets. Requires provider (ADR-0097). |
| actions | { key: string; label: string; description?: string; inputSchema?: Record<string, any>; … }[] |
optional | |
| triggers | { key: string; label: string; description?: string; type: Enum<'polling' | 'webhook'>; … }[] |
optional | Trigger definitions (not yet enforced — never read at registration; see #3197) |
| syncConfig | { strategy?: Enum<'full' | 'incremental' | 'upsert' | 'append_only'>; direction?: Enum<'import' | 'export' | 'bidirectional'>; schedule?: string | { dialect: Enum<'cel' | 'cron' | 'template'>; source?: string; ast?: any; meta?: object }; realtimeSync?: boolean; … } |
optional | Data sync configuration |
| fieldMappings | { source: string; target: string; transform?: { type: 'constant'; value: any } | { type: 'cast'; targetType: Enum<'string' | 'number' | 'boolean' | 'date'> } | { type: 'lookup'; table: string; keyField: string; valueField: string } | { type: 'javascript'; expression: string | { dialect: Enum<'cel' | 'cron' | 'template'>; source?: string; ast?: any; meta?: object } } | { type: 'map'; mappings: Record<string, any> }; defaultValue?: any; … }[] |
optional | Field mapping rules |
| webhooks | { name: string; label?: string; object?: string; triggers?: Enum<'create' | 'update' | 'delete'>[]; … }[] |
optional | Webhook configurations (not yet enforced — never read at registration; see #3197) |
| rateLimitConfig | { strategy?: Enum<'fixed_window' | 'sliding_window' | 'token_bucket' | 'leaky_bucket'>; maxRequests: number; windowSeconds: number; burstCapacity?: number; … } |
optional | Rate limiting configuration |
| retryConfig | { strategy?: Enum<'exponential_backoff' | 'linear_backoff' | 'fixed_delay' | 'no_retry'>; maxAttempts?: number; initialDelayMs?: number; maxDelayMs?: number; … } |
optional | Retry configuration |
| connectionTimeoutMs | number |
optional | Connection timeout in ms |
| requestTimeoutMs | number |
optional | Request timeout in ms |
| status | Enum<'active' | 'inactive' | 'error' | 'configuring'> |
optional | Connector status |
| enabled | boolean |
optional | Enable connector. On declarative stack entries, false marks a deliberate catalog-only descriptor (#2612). |
| errorMapping | { rules: { sourceCode: string | number; sourceMessage?: string; targetCode: string; targetCategory: Enum<'validation' | 'authorization' | 'not_found' | 'conflict' | 'rate_limit' | 'timeout' | 'server_error' | 'integration_error'>; … }[]; defaultCategory?: Enum<'validation' | 'authorization' | 'not_found' | 'conflict' | 'rate_limit' | 'timeout' | 'server_error' | 'integration_error'>; unmappedBehavior: Enum<'passthrough' | 'generic_error' | 'throw'>; logUnmapped?: boolean } |
optional | Error mapping configuration |
| health | { healthCheck?: object; circuitBreaker?: object } |
optional | Health and resilience configuration |
| metadata | Record<string, any> |
optional | Custom connector metadata |
| baseUrl | string |
optional | GitHub API base URL |
| repositories | { owner: string; name: string; defaultBranch?: string; autoMerge?: boolean; … }[] |
✅ | Repositories to manage |
| commitConfig | { authorName?: string; authorEmail?: string; signCommits?: boolean; messageTemplate?: string; … } |
optional | Commit configuration |
| pullRequestConfig | { titleTemplate?: string | { dialect: Enum<'cel' | 'cron' | 'template'>; source?: string; ast?: any; meta?: object }; bodyTemplate?: string | { dialect: Enum<'cel' | 'cron' | 'template'>; source?: string; ast?: any; meta?: object }; defaultReviewers?: string[]; defaultAssignees?: string[]; … } |
optional | Pull request configuration |
| workflows | { name: string; path: string; enabled?: boolean; triggers?: Enum<'push' | 'pull_request' | 'release' | 'schedule' | 'workflow_dispatch' | 'repository_dispatch'>[]; … }[] |
optional | GitHub Actions workflows |
| releaseConfig | { tagPattern?: string; semanticVersioning?: boolean; autoReleaseNotes?: boolean; releaseNameTemplate?: string; … } |
optional | Release configuration |
| issueTracking | { enabled?: boolean; defaultLabels?: string[]; templatePaths?: string[]; autoAssign?: boolean; … } |
optional | Issue tracking configuration |
| enableWebhooks | boolean |
optional | Enable GitHub webhooks |
| webhookEvents | Enum<'push' | 'pull_request' | 'issues' | 'issue_comment' | 'release' | 'workflow_run' | 'deployment' | 'deployment_status' | 'check_run' | 'check_suite' | 'status'>[] |
optional | Webhook events to subscribe to |
| Property | Type | Required | Description |
|---|---|---|---|
| enabled | boolean |
✅ | Enable issue tracking |
| defaultLabels | string[] |
optional | Default issue labels |
| templatePaths | string[] |
optional | Issue template paths |
| autoAssign | boolean |
✅ | Auto-assign issues |
| autoCloseStale | { enabled: boolean; daysBeforeStale: integer; daysBeforeClose: integer; staleLabel: string } |
optional | Auto-close stale issues configuration |
GitHub provider type
githubgithub_enterprise
| Property | Type | Required | Description |
|---|---|---|---|
| titleTemplate | string | { dialect: Enum<'cel' | 'cron' | 'template'>; source?: string; ast?: any; meta?: object } |
optional | PR title template — supports {{var}} interpolation |
| bodyTemplate | string | { dialect: Enum<'cel' | 'cron' | 'template'>; source?: string; ast?: any; meta?: object } |
optional | PR body template — supports {{var}} interpolation |
| defaultReviewers | string[] |
optional | Default reviewers (usernames) |
| defaultAssignees | string[] |
optional | Default assignees (usernames) |
| defaultLabels | string[] |
optional | Default labels |
| draftByDefault | boolean |
optional | Create draft PRs by default |
| deleteHeadBranch | boolean |
optional | Delete head branch after merge |
| Property | Type | Required | Description |
|---|---|---|---|
| tagPattern | string |
✅ | Tag name pattern (e.g., v*, release/*) |
| semanticVersioning | boolean |
✅ | Use semantic versioning |
| autoReleaseNotes | boolean |
✅ | Generate release notes automatically |
| releaseNameTemplate | string |
optional | Release name template |
| preReleasePattern | string |
optional | Pre-release pattern (e.g., *-alpha, *-beta) |
| draftByDefault | boolean |
✅ | Create draft releases by default |
| Property | Type | Required | Description |
|---|---|---|---|
| owner | string |
✅ | Repository owner (organization or username) |
| name | string |
✅ | Repository name |
| defaultBranch | string |
✅ | Default branch name |
| autoMerge | boolean |
✅ | Enable auto-merge for pull requests |
| branchProtection | { requiredReviewers: integer; requireStatusChecks: boolean; enforceAdmins: boolean; allowForcePushes: boolean; … } |
optional | Branch protection configuration |
| topics | string[] |
optional | Repository topics |
| Property | Type | Required | Description |
|---|---|---|---|
| type | Enum<'github' | 'gitlab' | 'bitbucket'> |
✅ | Git provider |
| repo | string |
✅ | Repository identifier (e.g., owner/repo) |
| productionBranch | string |
✅ | Production branch name |
| autoDeployProduction | boolean |
✅ | Auto-deploy production branch |
| autoDeployPreview | boolean |
✅ | Auto-deploy preview branches |
Message format/serialization
jsonxmlprotobufavrotextbinary
| Property | Type | Required | Description |
|---|---|---|---|
| name | string |
✅ | Unique connector identifier |
| label | string |
✅ | Display label |
| type | 'message_queue' |
✅ | |
| description | string |
optional | Connector description |
| icon | string |
optional | Icon identifier |
| authentication | { type: 'oauth2'; authorizationUrl: string; tokenUrl: string; clientId: string; … } | { type: 'api-key'; key: string; headerName?: string; paramName?: string } | { type: 'basic'; username: string; password: string } | { type: 'bearer'; token: string } | { type: 'none' } |
optional | Authentication configuration (runtime shape with inline secrets). Provider-bound declarative instances use auth.credentialRef instead. |
| provider | Enum<'rabbitmq' | 'kafka' | 'redis_pubsub' | 'redis_streams' | 'aws_sqs' | 'aws_sns' | 'google_pubsub' | 'azure_service_bus' | 'azure_event_hubs' | 'nats' | 'pulsar' | 'activemq' | 'custom'> |
✅ | Message queue provider type |
| providerConfig | Record<string, any> |
optional | Provider-specific config validated by the provider factory at boot (e.g. { spec, baseUrl } for openapi, where spec is an inline document, a package-relative file path like './billing-openapi.json', or an http(s) URL). Requires provider. |
| auth | { type: 'none' } | { type: 'bearer'; credentialRef: string } | { type: 'api-key'; credentialRef: string; headerName?: string; paramName?: string } | { type: 'basic'; username: string; credentialRef: string } |
optional | Declarative instance auth — references credentials via credentialRef (resolved at boot), never inline secrets. Requires provider (ADR-0097). |
| actions | { key: string; label: string; description?: string; inputSchema?: Record<string, any>; … }[] |
optional | |
| triggers | { key: string; label: string; description?: string; type: Enum<'polling' | 'webhook'>; … }[] |
optional | Trigger definitions (not yet enforced — never read at registration; see #3197) |
| syncConfig | { strategy?: Enum<'full' | 'incremental' | 'upsert' | 'append_only'>; direction?: Enum<'import' | 'export' | 'bidirectional'>; schedule?: string | { dialect: Enum<'cel' | 'cron' | 'template'>; source?: string; ast?: any; meta?: object }; realtimeSync?: boolean; … } |
optional | Data sync configuration |
| fieldMappings | { source: string; target: string; transform?: { type: 'constant'; value: any } | { type: 'cast'; targetType: Enum<'string' | 'number' | 'boolean' | 'date'> } | { type: 'lookup'; table: string; keyField: string; valueField: string } | { type: 'javascript'; expression: string | { dialect: Enum<'cel' | 'cron' | 'template'>; source?: string; ast?: any; meta?: object } } | { type: 'map'; mappings: Record<string, any> }; defaultValue?: any; … }[] |
optional | Field mapping rules |
| webhooks | { name: string; label?: string; object?: string; triggers?: Enum<'create' | 'update' | 'delete'>[]; … }[] |
optional | Webhook configurations (not yet enforced — never read at registration; see #3197) |
| rateLimitConfig | { strategy?: Enum<'fixed_window' | 'sliding_window' | 'token_bucket' | 'leaky_bucket'>; maxRequests: number; windowSeconds: number; burstCapacity?: number; … } |
optional | Rate limiting configuration |
| retryConfig | { strategy?: Enum<'exponential_backoff' | 'linear_backoff' | 'fixed_delay' | 'no_retry'>; maxAttempts?: number; initialDelayMs?: number; maxDelayMs?: number; … } |
optional | Retry configuration |
| connectionTimeoutMs | number |
optional | Connection timeout in ms |
| requestTimeoutMs | number |
optional | Request timeout in ms |
| status | Enum<'active' | 'inactive' | 'error' | 'configuring'> |
optional | Connector status |
| enabled | boolean |
optional | Enable connector. On declarative stack entries, false marks a deliberate catalog-only descriptor (#2612). |
| errorMapping | { rules: { sourceCode: string | number; sourceMessage?: string; targetCode: string; targetCategory: Enum<'validation' | 'authorization' | 'not_found' | 'conflict' | 'rate_limit' | 'timeout' | 'server_error' | 'integration_error'>; … }[]; defaultCategory?: Enum<'validation' | 'authorization' | 'not_found' | 'conflict' | 'rate_limit' | 'timeout' | 'server_error' | 'integration_error'>; unmappedBehavior: Enum<'passthrough' | 'generic_error' | 'throw'>; logUnmapped?: boolean } |
optional | Error mapping configuration |
| health | { healthCheck?: object; circuitBreaker?: object } |
optional | Health and resilience configuration |
| metadata | Record<string, any> |
optional | Custom connector metadata |
| brokerConfig | { brokers: string[]; clientId?: string; connectionTimeoutMs?: number; requestTimeoutMs?: number } |
✅ | Broker connection configuration |
| topics | { name: string; label: string; topicName: string; enabled?: boolean; … }[] |
✅ | Topics/queues to sync |
| deliveryGuarantee | Enum<'at_most_once' | 'at_least_once' | 'exactly_once'> |
optional | Message delivery guarantee |
| sslConfig | { enabled?: boolean; rejectUnauthorized?: boolean; ca?: string; cert?: string; … } |
optional | SSL/TLS configuration |
| saslConfig | { mechanism: Enum<'plain' | 'scram-sha-256' | 'scram-sha-512' | 'aws'>; username?: string; password?: string } |
optional | SASL authentication configuration |
| schemaRegistry | { url: string; auth?: object } |
optional | Schema registry configuration |
| preserveOrder | boolean |
optional | Preserve message ordering |
| enableMetrics | boolean |
optional | Enable message queue metrics |
| enableTracing | boolean |
optional | Enable distributed tracing |
| Property | Type | Required | Description |
|---|---|---|---|
| enabled | boolean |
✅ | Enable producer |
| acks | Enum<'0' | '1' | 'all'> |
✅ | Acknowledgment level |
| compressionType | Enum<'none' | 'gzip' | 'snappy' | 'lz4' | 'zstd'> |
✅ | Compression type |
| batchSize | number |
✅ | Batch size in bytes |
| lingerMs | number |
✅ | Linger time in ms |
| maxInFlightRequests | number |
✅ | Max in-flight requests |
| idempotence | boolean |
✅ | Enable idempotent producer |
| transactional | boolean |
✅ | Enable transactional producer |
| transactionTimeoutMs | number |
optional | Transaction timeout in ms |
| Property | Type | Required | Description |
|---|---|---|---|
| name | string |
✅ | Unique connector identifier |
| label | string |
✅ | Display label |
| type | 'saas' |
✅ | |
| description | string |
optional | Connector description |
| icon | string |
optional | Icon identifier |
| authentication | { type: 'oauth2'; authorizationUrl: string; tokenUrl: string; clientId: string; … } | { type: 'api-key'; key: string; headerName?: string; paramName?: string } | { type: 'basic'; username: string; password: string } | { type: 'bearer'; token: string } | { type: 'none' } |
optional | Authentication configuration (runtime shape with inline secrets). Provider-bound declarative instances use auth.credentialRef instead. |
| provider | Enum<'salesforce' | 'hubspot' | 'stripe' | 'shopify' | 'zendesk' | 'intercom' | 'mailchimp' | 'slack' | 'microsoft_dynamics' | 'servicenow' | 'netsuite' | 'custom'> |
✅ | SaaS provider type |
| providerConfig | Record<string, any> |
optional | Provider-specific config validated by the provider factory at boot (e.g. { spec, baseUrl } for openapi, where spec is an inline document, a package-relative file path like './billing-openapi.json', or an http(s) URL). Requires provider. |
| auth | { type: 'none' } | { type: 'bearer'; credentialRef: string } | { type: 'api-key'; credentialRef: string; headerName?: string; paramName?: string } | { type: 'basic'; username: string; credentialRef: string } |
optional | Declarative instance auth — references credentials via credentialRef (resolved at boot), never inline secrets. Requires provider (ADR-0097). |
| actions | { key: string; label: string; description?: string; inputSchema?: Record<string, any>; … }[] |
optional | |
| triggers | { key: string; label: string; description?: string; type: Enum<'polling' | 'webhook'>; … }[] |
optional | Trigger definitions (not yet enforced — never read at registration; see #3197) |
| syncConfig | { strategy?: Enum<'full' | 'incremental' | 'upsert' | 'append_only'>; direction?: Enum<'import' | 'export' | 'bidirectional'>; schedule?: string | { dialect: Enum<'cel' | 'cron' | 'template'>; source?: string; ast?: any; meta?: object }; realtimeSync?: boolean; … } |
optional | Data sync configuration |
| fieldMappings | { source: string; target: string; transform?: { type: 'constant'; value: any } | { type: 'cast'; targetType: Enum<'string' | 'number' | 'boolean' | 'date'> } | { type: 'lookup'; table: string; keyField: string; valueField: string } | { type: 'javascript'; expression: string | { dialect: Enum<'cel' | 'cron' | 'template'>; source?: string; ast?: any; meta?: object } } | { type: 'map'; mappings: Record<string, any> }; defaultValue?: any; … }[] |
optional | Field mapping rules |
| webhooks | { name: string; label?: string; object?: string; triggers?: Enum<'create' | 'update' | 'delete'>[]; … }[] |
optional | Webhook configurations (not yet enforced — never read at registration; see #3197) |
| rateLimitConfig | { strategy?: Enum<'fixed_window' | 'sliding_window' | 'token_bucket' | 'leaky_bucket'>; maxRequests: number; windowSeconds: number; burstCapacity?: number; … } |
optional | Rate limiting configuration |
| retryConfig | { strategy?: Enum<'exponential_backoff' | 'linear_backoff' | 'fixed_delay' | 'no_retry'>; maxAttempts?: number; initialDelayMs?: number; maxDelayMs?: number; … } |
optional | Retry configuration |
| connectionTimeoutMs | number |
optional | Connection timeout in ms |
| requestTimeoutMs | number |
optional | Request timeout in ms |
| status | Enum<'active' | 'inactive' | 'error' | 'configuring'> |
optional | Connector status |
| enabled | boolean |
optional | Enable connector. On declarative stack entries, false marks a deliberate catalog-only descriptor (#2612). |
| errorMapping | { rules: { sourceCode: string | number; sourceMessage?: string; targetCode: string; targetCategory: Enum<'validation' | 'authorization' | 'not_found' | 'conflict' | 'rate_limit' | 'timeout' | 'server_error' | 'integration_error'>; … }[]; defaultCategory?: Enum<'validation' | 'authorization' | 'not_found' | 'conflict' | 'rate_limit' | 'timeout' | 'server_error' | 'integration_error'>; unmappedBehavior: Enum<'passthrough' | 'generic_error' | 'throw'>; logUnmapped?: boolean } |
optional | Error mapping configuration |
| health | { healthCheck?: object; circuitBreaker?: object } |
optional | Health and resilience configuration |
| metadata | Record<string, any> |
optional | Custom connector metadata |
| baseUrl | string |
✅ | API base URL |
| apiVersion | { version: string; isDefault?: boolean; deprecationDate?: string; sunsetDate?: string } |
optional | API version configuration |
| objectTypes | { name: string; label: string; apiName: string; enabled?: boolean; … }[] |
✅ | Syncable object types |
| oauthSettings | { scopes: string[]; refreshTokenUrl?: string; revokeTokenUrl?: string; autoRefresh?: boolean } |
optional | OAuth-specific configuration |
| paginationConfig | { type?: Enum<'cursor' | 'offset' | 'page'>; defaultPageSize?: number; maxPageSize?: number } |
optional | Pagination configuration |
| sandboxConfig | { enabled?: boolean; baseUrl?: string } |
optional | Sandbox environment configuration |
| customHeaders | Record<string, string> |
optional | Custom HTTP headers for all requests |
| Property | Type | Required | Description |
|---|---|---|---|
| name | string |
✅ | Object type name (snake_case) |
| label | string |
✅ | Display label |
| apiName | string |
✅ | API name in external system |
| enabled | boolean |
optional | Enable sync for this object |
| supportsCreate | boolean |
optional | Supports record creation |
| supportsUpdate | boolean |
optional | Supports record updates |
| supportsDelete | boolean |
optional | Supports record deletion |
| fieldMappings | { source: string; target: string; transform?: { type: 'constant'; value: any } | { type: 'cast'; targetType: Enum<'string' | 'number' | 'boolean' | 'date'> } | { type: 'lookup'; table: string; keyField: string; valueField: string } | { type: 'javascript'; expression: string | { dialect: Enum<'cel' | 'cron' | 'template'>; source?: string; ast?: any; meta?: object } } | { type: 'map'; mappings: Record<string, any> }; defaultValue?: any; … }[] |
optional | Object-specific field mappings |
SaaS provider type
salesforcehubspotstripeshopifyzendeskintercommailchimpslackmicrosoft_dynamicsservicenownetsuitecustom
| Property | Type | Required | Description |
|---|---|---|---|
| enabled | boolean |
✅ | Enable SSL/TLS |
| rejectUnauthorized | boolean |
✅ | Reject unauthorized certificates |
| ca | string |
optional | Certificate Authority certificate |
| cert | string |
optional | Client certificate |
| key | string |
optional | Client private key |
| Property | Type | Required | Description |
|---|---|---|---|
| name | string |
✅ | Bucket identifier in ObjectStack (snake_case) |
| label | string |
✅ | Display label |
| bucketName | string |
✅ | Actual bucket/container name in storage system |
| region | string |
optional | Storage region |
| enabled | boolean |
✅ | Enable sync for this bucket |
| prefix | string |
optional | Prefix/path within bucket |
| accessPattern | Enum<'public_read' | 'private' | 'authenticated_read' | 'bucket_owner_read' | 'bucket_owner_full'> |
optional | Access pattern |
| fileFilters | { includePatterns?: string[]; excludePatterns?: string[]; minFileSize?: number; maxFileSize?: number; … } |
optional | File filter configuration |
| Property | Type | Required | Description |
|---|---|---|---|
| name | string |
✅ | Topic/queue identifier in ObjectStack (snake_case) |
| label | string |
✅ | Display label |
| topicName | string |
✅ | Actual topic/queue name in message queue system |
| enabled | boolean |
✅ | Enable sync for this topic/queue |
| mode | Enum<'consumer' | 'producer' | 'both'> |
✅ | Consumer, producer, or both |
| messageFormat | Enum<'json' | 'xml' | 'protobuf' | 'avro' | 'text' | 'binary'> |
✅ | Message format/serialization |
| partitions | number |
optional | Number of partitions (for Kafka) |
| replicationFactor | number |
optional | Replication factor (for Kafka) |
| consumerConfig | { enabled: boolean; consumerGroup?: string; concurrency: number; prefetchCount: number; … } |
optional | Consumer-specific configuration |
| producerConfig | { enabled: boolean; acks: Enum<'0' | '1' | 'all'>; compressionType: Enum<'none' | 'gzip' | 'snappy' | 'lz4' | 'zstd'>; batchSize: number; … } |
optional | Producer-specific configuration |
| dlqConfig | { enabled: boolean; queueName: string; maxRetries: number; retryDelayMs: number } |
optional | Dead letter queue configuration |
| routingKey | string |
optional | Routing key pattern |
| messageFilter | { headers?: Record<string, string>; attributes?: Record<string, any> } |
optional | Message filter criteria |
| Property | Type | Required | Description |
|---|---|---|---|
| name | string |
✅ | Unique connector identifier |
| label | string |
✅ | Display label |
| type | 'saas' |
✅ | |
| description | string |
optional | Connector description |
| icon | string |
optional | Icon identifier |
| authentication | { type: 'oauth2'; authorizationUrl: string; tokenUrl: string; clientId: string; … } | { type: 'api-key'; key: string; headerName?: string; paramName?: string } | { type: 'basic'; username: string; password: string } | { type: 'bearer'; token: string } | { type: 'none' } |
optional | Authentication configuration (runtime shape with inline secrets). Provider-bound declarative instances use auth.credentialRef instead. |
| provider | Enum<'vercel'> |
✅ | Vercel provider |
| providerConfig | Record<string, any> |
optional | Provider-specific config validated by the provider factory at boot (e.g. { spec, baseUrl } for openapi, where spec is an inline document, a package-relative file path like './billing-openapi.json', or an http(s) URL). Requires provider. |
| auth | { type: 'none' } | { type: 'bearer'; credentialRef: string } | { type: 'api-key'; credentialRef: string; headerName?: string; paramName?: string } | { type: 'basic'; username: string; credentialRef: string } |
optional | Declarative instance auth — references credentials via credentialRef (resolved at boot), never inline secrets. Requires provider (ADR-0097). |
| actions | { key: string; label: string; description?: string; inputSchema?: Record<string, any>; … }[] |
optional | |
| triggers | { key: string; label: string; description?: string; type: Enum<'polling' | 'webhook'>; … }[] |
optional | Trigger definitions (not yet enforced — never read at registration; see #3197) |
| syncConfig | { strategy?: Enum<'full' | 'incremental' | 'upsert' | 'append_only'>; direction?: Enum<'import' | 'export' | 'bidirectional'>; schedule?: string | { dialect: Enum<'cel' | 'cron' | 'template'>; source?: string; ast?: any; meta?: object }; realtimeSync?: boolean; … } |
optional | Data sync configuration |
| fieldMappings | { source: string; target: string; transform?: { type: 'constant'; value: any } | { type: 'cast'; targetType: Enum<'string' | 'number' | 'boolean' | 'date'> } | { type: 'lookup'; table: string; keyField: string; valueField: string } | { type: 'javascript'; expression: string | { dialect: Enum<'cel' | 'cron' | 'template'>; source?: string; ast?: any; meta?: object } } | { type: 'map'; mappings: Record<string, any> }; defaultValue?: any; … }[] |
optional | Field mapping rules |
| webhooks | { name: string; label?: string; object?: string; triggers?: Enum<'create' | 'update' | 'delete'>[]; … }[] |
optional | Webhook configurations (not yet enforced — never read at registration; see #3197) |
| rateLimitConfig | { strategy?: Enum<'fixed_window' | 'sliding_window' | 'token_bucket' | 'leaky_bucket'>; maxRequests: number; windowSeconds: number; burstCapacity?: number; … } |
optional | Rate limiting configuration |
| retryConfig | { strategy?: Enum<'exponential_backoff' | 'linear_backoff' | 'fixed_delay' | 'no_retry'>; maxAttempts?: number; initialDelayMs?: number; maxDelayMs?: number; … } |
optional | Retry configuration |
| connectionTimeoutMs | number |
optional | Connection timeout in ms |
| requestTimeoutMs | number |
optional | Request timeout in ms |
| status | Enum<'active' | 'inactive' | 'error' | 'configuring'> |
optional | Connector status |
| enabled | boolean |
optional | Enable connector. On declarative stack entries, false marks a deliberate catalog-only descriptor (#2612). |
| errorMapping | { rules: { sourceCode: string | number; sourceMessage?: string; targetCode: string; targetCategory: Enum<'validation' | 'authorization' | 'not_found' | 'conflict' | 'rate_limit' | 'timeout' | 'server_error' | 'integration_error'>; … }[]; defaultCategory?: Enum<'validation' | 'authorization' | 'not_found' | 'conflict' | 'rate_limit' | 'timeout' | 'server_error' | 'integration_error'>; unmappedBehavior: Enum<'passthrough' | 'generic_error' | 'throw'>; logUnmapped?: boolean } |
optional | Error mapping configuration |
| health | { healthCheck?: object; circuitBreaker?: object } |
optional | Health and resilience configuration |
| metadata | Record<string, any> |
optional | Custom connector metadata |
| baseUrl | string |
optional | Vercel API base URL |
| team | { teamId?: string; teamName?: string } |
optional | Vercel team configuration |
| projects | { name: string; framework?: Enum<'nextjs' | 'react' | 'vue' | 'nuxtjs' | 'gatsby' | 'remix' | 'astro' | 'sveltekit' | 'solid' | 'angular' | 'static' | 'other'>; gitRepository?: object; buildConfig?: object; … }[] |
✅ | Vercel projects |
| monitoring | { enableWebAnalytics?: boolean; enableSpeedInsights?: boolean; logDrains?: { name: string; url: string; headers?: Record<string, string>; sources?: Enum<'static' | 'lambda' | 'edge'>[] }[] } |
optional | Monitoring configuration |
| enableWebhooks | boolean |
optional | Enable Vercel webhooks |
| webhookEvents | Enum<'deployment.created' | 'deployment.succeeded' | 'deployment.failed' | 'deployment.ready' | 'deployment.error' | 'deployment.canceled' | 'deployment-checks-completed' | 'deployment-prepared' | 'project.created' | 'project.removed'>[] |
optional | Webhook events to subscribe to |
Frontend framework
nextjsreactvuenuxtjsgatsbyremixastrosveltekitsolidangularstaticother
| Property | Type | Required | Description |
|---|---|---|---|
| enableWebAnalytics | boolean |
✅ | Enable Vercel Web Analytics |
| enableSpeedInsights | boolean |
✅ | Enable Vercel Speed Insights |
| logDrains | { name: string; url: string; headers?: Record<string, string>; sources?: Enum<'static' | 'lambda' | 'edge'>[] }[] |
optional | Log drains configuration |
| Property | Type | Required | Description |
|---|---|---|---|
| name | string |
✅ | Vercel project name |
| framework | Enum<'nextjs' | 'react' | 'vue' | 'nuxtjs' | 'gatsby' | 'remix' | 'astro' | 'sveltekit' | 'solid' | 'angular' | 'static' | 'other'> |
optional | Frontend framework |
| gitRepository | { type: Enum<'github' | 'gitlab' | 'bitbucket'>; repo: string; productionBranch: string; autoDeployProduction: boolean; … } |
optional | Git repository configuration |
| buildConfig | { buildCommand?: string; outputDirectory?: string; installCommand?: string; devCommand?: string; … } |
optional | Build configuration |
| deploymentConfig | { autoDeployment: boolean; regions?: Enum<'iad1' | 'sfo1' | 'gru1' | 'lhr1' | 'fra1' | 'sin1' | 'syd1' | 'hnd1' | 'icn1'>[]; enablePreview: boolean; previewComments: boolean; … } |
optional | Deployment configuration |
| domains | { domain: string; httpsRedirect: boolean; customCertificate?: object; gitBranch?: string }[] |
optional | Custom domains |
| environmentVariables | { key: string; value: string; target: Enum<'production' | 'preview' | 'development'>[]; isSecret: boolean; … }[] |
optional | Environment variables |
| edgeFunctions | { name: string; path: string; regions?: string[]; memoryLimit: integer; … }[] |
optional | Edge functions |
| rootDirectory | string |
optional | Root directory (for monorepos) |
Vercel provider type
vercel
| Property | Type | Required | Description |
|---|---|---|---|
| teamId | string |
optional | Team ID or slug |
| teamName | string |
optional | Team name |