Extending
Integration framework
Add a new fulfillment vendor (Bookalimo, Flights, Uber, …) with one manifest file.
Each fulfillment vendor ships a single manifest declaring everything: ProductType + categories + IFulfillmentProvider class + credential schema + customer-flow component. The registry imports every manifest and auto-wires the rest.
IntegrationManifest shape
// apps/api/src/integrations/uber/manifest.ts
export const uberManifest: IntegrationManifest = {
key: 'uber',
displayName: 'Uber B2B',
icon: 'car',
description: 'On-demand rides via Uber for Business.',
productType: {
key: 'taxi',
name: 'Taxi',
attributeSchema: { /* JSON Schema */ },
},
categories: [
{ slug: 'point-to-point', name: 'Point to point' },
],
fulfillmentProvider: UberProvider, // Nest @Injectable() class
credentialSchema: {
apiKey: { type: 'string', label: 'API key', required: true, secret: true },
},
customerFlowComponent: 'LimoBookingPanel',
};Steps to add a new vendor
- 1Implement IFulfillmentProvider
Drop apps/api/src/fulfillment/<vendor>/<vendor>.provider.ts implementing quote / reserve / cancel / status / testCredentials. A Mock variant lets local dev work without real creds.
- 2Author the manifest
apps/api/src/integrations/<vendor>/manifest.ts.
- 3Register it
Append to INTEGRATION_MANIFESTS in apps/api/src/integrations/registry.ts.
- 4Customer flow
Reuse LimoBookingPanel or ship a new one and add it to apps/web/src/booking-flows/registry.ts.
- 5Install
Click Install on /admin/integrations — seeds the ProductType + categories.
apps/api/src/integrations/{bookalimo,flights}/manifest.ts are the two reference implementations.