Skip to Content
BridgesManifest

Bridge Manifest

The BridgeManifest is the declarative metadata for your bridge. It tells Orderly what your bridge does, how it authenticates, what configuration it needs, and which tasks it supports.

Structure

interface BridgeManifest { name: string; displayName: string; description: string; version: string; category: 'ecommerce' | 'shipping' | 'marketplace' | 'erp'; integrationType: 'api' | 'npm'; icon: string; authMethods: { apiKey: boolean; accessToken: boolean; oauth2: boolean }; configFields: ConfigFieldDefinition[]; tasks: TaskManifest[]; dispatchFields?: ConfigFieldDefinition[]; webhooks?: WebhookManifest[]; documentation?: { setupGuide?: string; apiReference?: string }; }

Fields

FieldTypeReqDescription
namestringUnique identifier (kebab-case), e.g., "shopify"
displayNamestringHuman-readable name, e.g., "Shopify"
descriptionstringBrief description of the integration
versionstringSemantic version, e.g., "1.0.0"
categoryBridgeCategoryecommerce, shipping, marketplace, or erp
integrationTypeIntegrationType"api" for REST/GraphQL or "npm" for SDK packages
iconstringIcon identifier or URL
authMethodsobjectWhich authentication methods the bridge supports
configFieldsConfigFieldDefinition[]Configuration fields the user must fill in
tasksTaskManifest[]All tasks this bridge implements
dispatchFieldsConfigFieldDefinition[]Fields for dispatcher integration
webhooksWebhookManifest[]Webhook events this bridge can handle
documentationobjectLinks to setup guide and API reference

Config Fields

Configuration fields define the UI form users fill out when setting up the bridge:

interface ConfigFieldDefinition { name: string; label: string; type: 'text' | 'password' | 'select' | 'boolean' | 'url'; required: boolean; placeholder?: string; helpText?: string; options?: { label: string; value: string }[]; validation?: { pattern?: string; minLength?: number; maxLength?: number }; optionsFrom?: FieldOptionsSource; }

Dynamic Options

The optionsFrom field lets you populate a select dropdown from a bridge task’s output:

{ name: 'warehouseId', label: 'Warehouse', type: 'select', required: true, optionsFrom: { task: 'grab-warehouses', dataPath: 'warehouses', valuePath: 'warehouseId', labelPath: 'warehouseName', } }

Task Manifest

Each task in the manifest describes its name, category, and schemas:

interface TaskManifest { name: string; displayName: string; description: string; category: 'sync' | 'push' | 'webhook' | 'dispatch'; supportsSchedule: boolean; inputSchema?: Record<string, unknown>; outputSchema?: Record<string, unknown>; }

Webhook Manifest

Webhook definitions include authentication configuration:

interface WebhookManifest { event: string; description: string; payloadSchema?: Record<string, unknown>; auth?: { type: 'hmac' | 'none'; header?: string; // e.g., 'x-shopify-hmac-sha256' algorithm?: string; // e.g., 'sha256' secretField?: string; // bridge config field for the HMAC secret }; }