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
| Field | Type | Req | Description |
|---|---|---|---|
| name | string | Unique identifier (kebab-case), e.g., "shopify" | |
| displayName | string | Human-readable name, e.g., "Shopify" | |
| description | string | Brief description of the integration | |
| version | string | Semantic version, e.g., "1.0.0" | |
| category | BridgeCategory | ecommerce, shipping, marketplace, or erp | |
| integrationType | IntegrationType | "api" for REST/GraphQL or "npm" for SDK packages | |
| icon | string | Icon identifier or URL | |
| authMethods | object | Which authentication methods the bridge supports | |
| configFields | ConfigFieldDefinition[] | Configuration fields the user must fill in | |
| tasks | TaskManifest[] | All tasks this bridge implements | |
| dispatchFields | ConfigFieldDefinition[] | Fields for dispatcher integration | |
| webhooks | WebhookManifest[] | Webhook events this bridge can handle | |
| documentation | object | Links 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
};
}