Set up a custom integration that automatically syncs new transport orders to an external system (e.g., your ERP, a webhook endpoint, or a data warehouse).
curl -X POST https://api.otms.transportial.com/api/integration \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"name": "ERP Sync - New Orders",
"type": "configured",
"description": "Push new transport orders to our ERP system when they are created",
"enabled": true
}'Response:
{
"success": true,
"message": "OK",
"integration": {
"id": "integration-uuid",
"name": "ERP Sync - New Orders",
"type": "configured",
"enabled": true,
"createdAt": "2026-03-22T10:00:00Z"
}
}Create authentication credentials for the integration:
curl -X POST "https://api.otms.transportial.com/api/integration/generate/credentials" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"integrationId": "integration-uuid"
}'Store the returned credentials securely — they grant access to the integration's scoped data.
Before going live, validate that your data transformation works:
curl -X POST "https://api.otms.transportial.com/api/integration/dataSource/mapping:test" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"mapping": {
"erp_order_id": "$.transportOrder.id",
"customer_name": "$.transportOrder.customer.name",
"status": "$.transportOrder.status",
"created": "$.transportOrder.createdAt"
},
"testData": {
"transportOrder": {
"id": "test-uuid",
"customer": { "name": "Acme Corp" },
"status": "requested",
"createdAt": "2026-03-22T10:00:00Z"
}
}
}'If your integration needs to push data into Transportial:
curl -X POST "https://api.otms.transportial.com/api/integration/import/data" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"integrationId": "integration-uuid",
"data": [
{
"name": "Order from ERP #12345",
"status": "requested",
"customer": { "name": "External Customer" }
}
]
}'curl -X GET "https://api.otms.transportial.com/api/integration/{integration-uuid}/objects/0/20" \
-H "Authorization: Bearer YOUR_TOKEN"curl -X GET "https://api.otms.transportial.com/api/integration/{integration-uuid}/logs/0/20" \
-H "Authorization: Bearer YOUR_TOKEN"See the actual HTTP requests the integration has made:
curl -X GET "https://api.otms.transportial.com/api/integration/{integration-uuid}/requestLogs/0/20" \
-H "Authorization: Bearer YOUR_TOKEN"curl -X GET "https://api.otms.transportial.com/api/integration/{integration-uuid}/tasks/0/20" \
-H "Authorization: Bearer YOUR_TOKEN"If an integration object fails, it will be marked with status ERROR or RETRY. Check the logs to diagnose:
# Get recent logs
curl -X GET "https://api.otms.transportial.com/api/integration/{integration-uuid}/logs/0/10" \
-H "Authorization: Bearer YOUR_TOKEN"Common issues:
- Authentication failure — regenerate credentials
- Mapping error — test your mapping with the test endpoint
- Target system down — objects will be retried automatically
For email-triggered workflows:
curl -X POST "https://api.otms.transportial.com/api/integration/email" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"from": "orders@customer.com",
"subject": "New transport request",
"body": "Please arrange pickup of 20 pallets..."
}'Upload template files for EDI, CSV, or XML exchange:
curl -X POST "https://api.otms.transportial.com/api/integration/file/upload" \
-H "Authorization: Bearer YOUR_TOKEN" \
-F "file=@/path/to/template.csv"Test file template mappings:
curl -X POST "https://api.otms.transportial.com/api/integration/fileTemplate/mapping:test" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"mapping": { ... },
"testData": { ... }
}'Entity Change (e.g., new transport order)
↓
IntegrationObject created (status: QUEUE)
↓
Scheduler picks up (~every 10 seconds)
↓
Filters checked (does this event match?)
↓
Data sources transform the data
↓
External system called
↓
Result: SUCCESS / ERROR / RETRY- Integrations are event-driven — they react to entity changes automatically
- Always test your mappings before enabling
- Monitor logs and request logs to diagnose issues
- Failed objects are retried automatically
- Use the App Store for pre-built integrations with common platforms