How integrations work
composerID tracks 50 destination platforms in its coverage registry, of which 35 are documented or mapped today, and reaches each through one adapter pattern. You author intent once in the Common Workforce Model; the adapter handles each platform's auth, object model, required fields and back-sync. This page explains that universal flow before you dive into a specific platform.
Every system (VMS, procurement, HRIS, ATS, ERP or ITSM) is reached through the same five stages. Only the final adapter step differs per platform.
1 · Intent
A canonical IntentRecord is created (keyed by intent_id) carrying diagnostics, routing and admin payloads in neutral field names.
2 · Plan
The Channel Map resolves the intent to one or more destinations (e.g. a contingent requisition to your VMS, an SOW to a sourcing tool).
3 · Preflight
The intent is validated against the destination's required + tenant-specific fields. Gaps emit an enrichment_request back to intake.
4 · Publish
The adapter maps canonical fields to the platform dialect and writes the record idempotently, recording external IDs + a receipt.
5 · Reconcile
Webhooks or polling detect changes humans make inside the platform; drift is flagged against the canonical intent.
Passthrough
An escape hatch (POST /passthrough) sends raw JSON to any platform endpoint, still anchored to intent_id for audit.
The adapter abstracts each platform's authentication behind one connected-destination credential model. The common shapes:
| Strategy | Used by (examples) | How composerID handles it |
|---|---|---|
| OAuth 2.0 client-credentials | Coupa, Globality (Auth0), Workday ISU, SAP BTP (XSUAA), GEP | Token minted + cached per destination; refreshed before expiry. |
| OAuth token + per-API app key | SAP Ariba (apiKey + Bearer) | Two-secret model; one application registered per API + realm. |
| SOAP / WS-Security via service user | Workday (Integration System User), SAP Ariba SOAP | Credential bound to an ISU in an integration security group. |
| Document exchange | SAP Ariba cXML over Ariba Network | Transactional PO/invoice docs pushed/received over the Network. |
A MappingProfile is the per-tenant template that translates Common Workforce Model paths to a platform's field names, with transforms and required-by-platform flags. The same canonical start_date becomes WorkStartDate in Fieldglass, a requisition field in Coupa, or a Staffing business-process input in Workday.
Canonical (you write this)
Adapter resolves (per platform)
These are composerID's own endpoints (base https://api.composer.id), the same regardless of which downstream platform you target. See the API Reference for full schemas.
| Method | Path | Summary |
|---|---|---|
| POST | /intent | Create an intent record (returns intent_id). |
| PATCH | /intent/{intent_id} | Patch diagnostics/routing/admin fields. |
| POST | /plan | Generate destination plan from Channel Map + intent. |
| POST | /preflight | Validate intent against platform requirements. |
| POST | /publish | Idempotent publish to target platform via adapter. |
| GET | /intent/{intent_id} | Fetch the canonical intent record. |
| GET | /intent/{intent_id}/timeline | Fetch timeline events for audit. |
| GET | /platforms | List platforms and doc availability. |
| GET | /destinations | List connected destinations and capabilities. |
| GET | /destinations/{id}/capabilities | Capability matrix + required fields per object/op. |
| POST | /passthrough | Send raw JSON to a platform endpoint. |
| POST | /reconcile | Detect drift between VMS state and canonical intent. |
| POST | /enrichment-request | Emit missing fields back to Triage/Intake. |
Platforms differ: some push events (Globality, SAP Event Mesh, Coupa Events API), most are poll-first (Workday RaaS, Ariba, GEP). composerID normalises both into one WebhookEvent envelope and reconciles against the canonical intent.
| Event | Meaning |
|---|---|
| vms.requisition.updated | A requisition changed in the destination system. |
| vms.assignment.updated | An assignment changed. |
| vms.timesheet.updated | Timesheet changed. |
| vms.connection.revoked | Tenant auth revoked. |
Each platform page shows its real API facts, minimum viable mapping and tenant-specific notes.