Integrations
The Integrations module provides a unified data exchange layer — synchronising records between Enterprise and external systems (ERPs, CRMs, data warehouses), managing import/export pipelines, handling conflict resolution, and exposing a field-mapping engine that normalises data across vendor schemas.
What it covers
| Section | Description |
|---|---|
| Data Sync | Bidirectional record synchronisation with external systems |
| Sync Engine | Low-level sync orchestration and scheduling |
| Sync Vendors | Registered third-party system connectors |
| Sync Vendor Model Field Mappings | Per-vendor field translation rules |
| Synchronizations | Individual sync job execution records |
| Import Management | Configure and trigger data imports |
| Import Profiles | Saved import configurations |
| Import Schedules | Recurring import schedules |
| Import Field Mappings | Column/field mapping for import files |
| Export Management | Configure and trigger data exports |
| Export Profiles | Saved export configurations |
| Export Schedules | Recurring export schedules |
| Export Field Mappings | Field selection and transformation for exports |
| Field Mapping | General field-mapping rules across models |
| Conflict Resolution | Rules for handling record conflicts during sync |
Authentication
All Integrations endpoints require authentication. Sync and import/export management endpoints require the integrations:write permission.
Core services
Data Sync
DataSyncService manages bidirectional record synchronisation between Enterprise models and external system APIs. Each sync operation is tracked as a synchronizations record.
# List configured sync connections
GET /api/integrations/synchronizations
# Trigger an on-demand sync
POST /api/integrations/data-sync/trigger
{
"vendorId": "<sync_vendor_id>",
"direction": "pull",
"modelKey": "contacts"
}
Sync Engine
SyncEngineService handles scheduling, retry logic, and rate-limit back-off for vendor sync operations.
GET /api/integrations/sync-engine/status
POST /api/integrations/sync-engine/pause
POST /api/integrations/sync-engine/resume
Import Management
Configure and execute file-based imports (CSV, JSON, XLSX):
# 1. Create an import profile
POST /api/integrations/importProfiles
{
"name": "Salesforce contact export",
"modelKey": "contacts",
"format": "csv"
}
# 2. Create field mappings for the profile
POST /api/integrations/importFieldMappings
{
"profileId": "<profile_id>",
"sourceField": "Email Address",
"targetField": "email"
}
# 3. Run the import
POST /api/integrations/import-management/run
{
"profileId": "<profile_id>",
"fileUrl": "https://storage.example.com/export.csv"
}
Export Management
# Create an export profile
POST /api/integrations/exportProfiles
{
"name": "Weekly leads export",
"modelKey": "leads",
"format": "csv"
}
# Schedule a recurring export
POST /api/integrations/exportSchedules
{
"profileId": "<profile_id>",
"cron": "0 8 * * 1",
"destination": "s3://bucket/exports/"
}
# Run on demand
POST /api/integrations/export-management/run
{ "profileId": "<profile_id>" }
Conflict Resolution
When sync pulls a record that conflicts with local changes, ConflictResolutionService applies the configured strategy:
GET /api/integrations/conflict-resolution # list pending conflicts
POST /api/integrations/conflict-resolution/resolve
{
"conflictId": "<id>",
"resolution": "keep_local" # or "keep_remote" | "merge"
}
Data models
| Model | Slug |
|---|---|
| Sync Vendors | syncVendors |
| Sync Vendor Model Field Mappings | syncVendorModelFieldMappings |
| Synchronizations | synchronizations |
| Import Profiles | importProfiles |
| Import Schedules | importSchedules |
| Import Field Mappings | importFieldMappings |
| Export Profiles | exportProfiles |
| Export Schedules | exportSchedules |
| Export Field Mappings | exportFieldMappings |
Common patterns
Setting up a Salesforce sync
# 1. Register the vendor
POST /api/integrations/syncVendors
{
"name": "Salesforce",
"type": "salesforce",
"credentials": { "instanceUrl": "https://myorg.salesforce.com", "token": "••••" }
}
# 2. Map Salesforce Contact → Enterprise contact fields
POST /api/integrations/syncVendorModelFieldMappings
{
"vendorId": "<vendor_id>",
"vendorModel": "Contact",
"enterpriseModel": "contacts",
"mappings": [
{ "vendorField": "Email", "enterpriseField": "email" },
{ "vendorField": "FirstName", "enterpriseField": "firstName" },
{ "vendorField": "LastName", "enterpriseField": "lastName" }
]
}
# 3. Trigger initial pull
POST /api/integrations/data-sync/trigger
{ "vendorId": "<vendor_id>", "direction": "pull", "modelKey": "contacts" }
API sections
These sections are available in the Integrations API Reference: