Skip to main content

Integration Toolkit API

API for integrating with external systems in a standardised way.

Quick Startโ€‹

# List available operations
epilot integration-toolkit

# Call an operation
epilot integration-toolkit acknowledgeTracking

Common Flagsโ€‹

FlagDescription
-p key=valueSet a named parameter
-d '{...}'Request body JSON
-H 'Key: Value'Custom header
-t, --token <token>Bearer token for authentication
--profile <name>Use a named profile
-s, --server <url>Override server base URL
-i, --includeInclude response headers in output
--jsonOutput raw JSON (no formatting)
-v, --verboseVerbose output (show request details)
--jsonata <expr>JSONata expression to transform response
--definition <file>Override OpenAPI spec file/URL
--guidedPrompt for all parameters interactively
--no-interactiveDisable interactive prompts

Operationsโ€‹

erp

  • acknowledgeTracking โ€” Acknowledges an ERP tracking record by removing it from the tracking table, requires public authentication
  • triggerErp โ€” Triggers the ERP integration process
  • processErpUpdatesEventsV3 โ€” Handles updates from ERP systems using integration_id directly.
  • simulateMappingV2 โ€” Test v2.0 mapping configuration by transforming a payload using the provided mapping rules without persisting data.
  • simulateDirect โ€” Dry run for direct-mode payloads: validates a DirectPayload against a direct: true
  • simulateMapping โ€” Test mapping configuration by transforming a payload using the provided mapping rules without persisting data.

integrations

monitoring

proxy

  • secureProxy โ€” Routes an HTTP request through a VPC with either static IP egress or VPN secure link access.

managed-call

  • managedCallExecute โ€” Execute a managed call operation synchronously. The slug in the path acts as the RPC method name.

erp-imports

  • listErpImports โ€” List recent pricing-file import jobs for the org, newest first.
  • createErpImport โ€” Register an already-uploaded file (S3 ref) as a pricing-file import job. Returns the job and a file preview. Nothing run
  • getErpImport โ€” Get a pricing-file import job (status, counts, result links).
  • deleteErpImport โ€” Remove an import and the file it owns. Allowed from any status: an import whose run is still in flight is stopped by the
  • validateErpImport โ€” Choose the use case to read this file with, and start the validate phase.
  • suggestErpImportUseCases โ€” Rank the org's inbound use cases against this file's columns โ€” the input to the ranked picker ("matches 6 of your 7 colu
  • executeErpImport โ€” Confirm and run the write phase of a validated import. Only a READY job may be executed; any other status returns 409.
  • abortErpImport โ€” Ask a running import to stop. Valid while the job is VALIDATING or PROCESSING; any other status returns 409.

acknowledgeTrackingโ€‹

Acknowledges an ERP tracking record by removing it from the tracking table, requires public authentication

POST /v1/erp/tracking/acknowledgement

Request Body

Sample Call

epilot integration-toolkit acknowledgeTracking \
-d '{"ack_id":"string"}'

Using stdin pipe:

cat body.json | epilot integration-toolkit acknowledgeTracking

With JSONata filter:

epilot integration-toolkit acknowledgeTracking --jsonata 'message'
Sample Response
{
"message": "string"
}

triggerErpโ€‹

Triggers the ERP integration process

POST /v1/erp/trigger

Request Body (required)

Sample Call

epilot integration-toolkit triggerErp

With request body:

epilot integration-toolkit triggerErp \
-d '{
"execution_id": "string",
"org_id": "string",
"webhook_id": "string",
"flow_id": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"action_id": "string",
"flow_action_id": "string",
"flow_name": "string",
"activity_id": "string",
"entity_id": "string"
}'

Using stdin pipe:

cat body.json | epilot integration-toolkit triggerErp

With JSONata filter:

epilot integration-toolkit triggerErp --jsonata 'status_code'
Sample Response
{
"status_code": "string",
"message": "string",
"body": {},
"code": "string",
"status": "succeeded",
"start_date": "string",
"end_date": "string",
"event_id": "string"
}

processErpUpdatesEventsV3โ€‹

Handles updates from ERP systems using integration_id directly.

POST /v3/erp/updates/events

Request Body

Sample Call

epilot integration-toolkit processErpUpdatesEventsV3

With request body:

epilot integration-toolkit processErpUpdatesEventsV3 \
-d '{
"integration_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"correlation_id": "string",
"group_id": "customer-42",
"events": [
{},
{}
]
}'

Using stdin pipe:

cat body.json | epilot integration-toolkit processErpUpdatesEventsV3

With JSONata filter:

epilot integration-toolkit processErpUpdatesEventsV3 --jsonata 'results[0]'
Sample Response
{
"results": [
{
"event_id": "string",
"status": "success",
"message": "string"
}
]
}

simulateMappingV2โ€‹

Test v2.0 mapping configuration by transforming a payload using the provided mapping rules without persisting data.

POST /v2/erp/updates/mapping_simulation

Request Body (required)

Sample Call

epilot integration-toolkit simulateMappingV2

With request body:

epilot integration-toolkit simulateMappingV2 \
-d '{
"event_configuration": {
"direct": true,
"entities": [
{}
],
"meter_readings": [
{}
]
},
"format": "json",
"payload": "string"
}'

Using stdin pipe:

cat body.json | epilot integration-toolkit simulateMappingV2

With JSONata filter:

epilot integration-toolkit simulateMappingV2 --jsonata 'entity_updates'
Sample Response
{
"entity_updates": [
{
"entity_slug": "string",
"unique_identifiers": {},
"attributes": {},
"pricing": {
"config": {},
"data": [
{}
]
},
"mode": "upsert"
}
],
"meter_readings_updates": [
{
"meter": {
"$entity_unique_ids": {}
},
"meter_counter": {
"$entity_unique_ids": {}
},
"attributes": {},
"mode": "upsert"
}
],
"prune_scope_updates": [
{
"entity_slug": "string",
"scope": {
"scope_mode": "relations",
"schema": "string",
"unique_ids": {},
"query": {}
},
"keep_unique_ids": [
{}
],
"deletion_mode": "delete"
}
],
"meter_readings_prune_scope_updates": [
{
"meter": {
"$entity_unique_ids": {}
},
"meter_counter": {
"$entity_unique_ids": {}
},
"keep_external_ids": ["string"],
"source": "string"
}
],
"warnings": [
{
"entity_schema": "string",
"field": "string",
"message": "string"
}
]
}

simulateDirectโ€‹

Dry run for direct-mode payloads: validates a DirectPayload against a direct: true

POST /v1/erp/updates/direct_simulation

Request Body (required)

Sample Call

epilot integration-toolkit simulateDirect

With request body:

epilot integration-toolkit simulateDirect \
-d '{
"event_configuration": {
"direct": true,
"entities": [
{}
],
"meter_readings": [
{}
]
},
"payload": "string"
}'

Using stdin pipe:

cat body.json | epilot integration-toolkit simulateDirect

With JSONata filter:

epilot integration-toolkit simulateDirect --jsonata 'valid'
Sample Response
{
"valid": true,
"errors": [
{
"code": "DIRECT_PAYLOAD_INVALID",
"message": "string",
"operation_index": 0
}
],
"warnings": [
{
"entity_schema": "string",
"field": "string",
"message": "string"
}
],
"entity_updates": [
{
"entity_slug": "string",
"unique_identifiers": {},
"attributes": {},
"pricing": {
"config": {},
"data": [
{}
]
},
"mode": "upsert",
"unique_identifiers_metadata": {}
}
],
"meter_reading_updates": [
{
"meter": {
"$entity_unique_ids": {}
},
"meter_counter": {
"$entity_unique_ids": {}
},
"attributes": {},
"mode": "upsert",
"_config": {
"reading_matching": "external_id"
}
}
]
}

simulateMappingโ€‹

Test mapping configuration by transforming a payload using the provided mapping rules without persisting data.

POST /v1/erp/updates/mapping_simulation

Request Body (required)

Sample Call

epilot integration-toolkit simulateMapping

With request body:

epilot integration-toolkit simulateMapping \
-d '{
"mapping_configuration": {
"version": "1.0",
"mapping": {
"objects": {}
}
},
"object_type": "string",
"format": "json",
"payload": "string"
}'

Using stdin pipe:

cat body.json | epilot integration-toolkit simulateMapping

With JSONata filter:

epilot integration-toolkit simulateMapping --jsonata 'entity_updates'
Sample Response
{
"entity_updates": [
{
"entity_slug": "string",
"unique_identifiers": {},
"attributes": {},
"pricing": {
"config": {},
"data": [
{}
]
},
"mode": "upsert"
}
],
"meter_readings_updates": [
{
"meter": {
"$entity_unique_ids": {}
},
"meter_counter": {
"$entity_unique_ids": {}
},
"attributes": {},
"mode": "upsert"
}
],
"prune_scope_updates": [
{
"entity_slug": "string",
"scope": {
"scope_mode": "relations",
"schema": "string",
"unique_ids": {},
"query": {}
},
"keep_unique_ids": [
{}
],
"deletion_mode": "delete"
}
],
"meter_readings_prune_scope_updates": [
{
"meter": {
"$entity_unique_ids": {}
},
"meter_counter": {
"$entity_unique_ids": {}
},
"keep_external_ids": ["string"],
"source": "string"
}
],
"warnings": [
{
"entity_schema": "string",
"field": "string",
"message": "string"
}
]
}

listIntegrationsโ€‹

Retrieve all integrations for the authenticated organization

GET /v1/integrations

Sample Call

epilot integration-toolkit listIntegrations

With JSONata filter:

epilot integration-toolkit listIntegrations --jsonata 'integrations'
Sample Response
{
"integrations": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"orgId": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z",
"name": "string",
"description": "string",
"access_token_ids": ["string"],
"app_ids": ["string"],
"environment_config": [],
"maps": [],
"settings": {},
"integration_type": "erp",
"connector_config": {},
"protected": true,
"_manifest": ["string"]
}
]
}

createIntegrationโ€‹

Create a new integration configuration

POST /v1/integrations

Request Body (required)

Sample Call

epilot integration-toolkit createIntegration

With request body:

epilot integration-toolkit createIntegration \
-d '{
"name": "string",
"description": "string",
"access_token_ids": ["string"],
"app_ids": ["string"],
"environment_config": [
{
"key": "string",
"label": "string",
"type": "String",
"description": "string",
"required": false,
"order": 0
}
],
"maps": [
{
"key": "string",
"label": "string",
"description": "string",
"value": {}
}
],
"settings": {
"autoRefresh": {
"enabled": false,
"freshnessThresholdMinutes": 1
},
"notifications": {
"enabled": true,
"recipients": [],
"defaultChannels": {},
"monitoredUseCases": ["string"],
"monitoredCodes": ["string"],
"rules": [],
"digest": {},
"muteUntil": "1970-01-01T00:00:00.000Z"
}
},
"integration_type": "erp",
"connector_config": {
"base_url": "string",
"auth": {
"type": "oauth2_client_credentials",
"token_url": "string",
"client_id": "string",
"client_secret": "string",
"scope": "string",
"audience": "string",
"resource": "string",
"body_params": {},
"headers": {},
"query_params": {},
"api_key_header": "string",
"api_key": "string",
"token": "string"
},
"types_versions": [
{}
],
"latest_types_version": "string",
"latest_types_package_name": "string"
},
"protected": true,
"_manifest": ["string"]
}'

Using stdin pipe:

cat body.json | epilot integration-toolkit createIntegration

With JSONata filter:

epilot integration-toolkit createIntegration --jsonata '$'
Sample Response
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"orgId": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z",
"name": "string",
"description": "string",
"access_token_ids": ["string"],
"app_ids": ["string"],
"environment_config": [
{
"key": "string",
"label": "string",
"type": "String",
"description": "string",
"required": false,
"order": 0
}
],
"maps": [
{
"key": "string",
"label": "string",
"description": "string",
"value": {}
}
],
"settings": {
"autoRefresh": {
"enabled": false,
"freshnessThresholdMinutes": 1
},
"notifications": {
"enabled": true,
"recipients": [],
"defaultChannels": {},
"monitoredUseCases": ["string"],
"monitoredCodes": ["string"],
"rules": [],
"digest": {},
"muteUntil": "1970-01-01T00:00:00.000Z"
}
},
"integration_type": "erp",
"connector_config": {
"base_url": "string",
"auth": {
"type": "oauth2_client_credentials",
"token_url": "string",
"client_id": "string",
"client_secret": "string",
"scope": "string",
"audience": "string",
"resource": "string",
"body_params": {},
"headers": {},
"query_params": {},
"api_key_header": "string",
"api_key": "string",
"token": "string"
},
"types_versions": [
{}
],
"latest_types_version": "string",
"latest_types_package_name": "string"
},
"protected": true,
"_manifest": ["string"]
}

getIntegrationโ€‹

Retrieve a specific integration by its ID

GET /v1/integrations/{integrationId}

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID

Sample Call

epilot integration-toolkit getIntegration \
-p integrationId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit getIntegration 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit getIntegration -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'
Sample Response
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"orgId": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z",
"name": "string",
"description": "string",
"access_token_ids": ["string"],
"app_ids": ["string"],
"environment_config": [
{
"key": "string",
"label": "string",
"type": "String",
"description": "string",
"required": false,
"order": 0
}
],
"maps": [
{
"key": "string",
"label": "string",
"description": "string",
"value": {}
}
],
"settings": {
"autoRefresh": {
"enabled": false,
"freshnessThresholdMinutes": 1
},
"notifications": {
"enabled": true,
"recipients": [],
"defaultChannels": {},
"monitoredUseCases": ["string"],
"monitoredCodes": ["string"],
"rules": [],
"digest": {},
"muteUntil": "1970-01-01T00:00:00.000Z"
}
},
"integration_type": "erp",
"connector_config": {
"base_url": "string",
"auth": {
"type": "oauth2_client_credentials",
"token_url": "string",
"client_id": "string",
"client_secret": "string",
"scope": "string",
"audience": "string",
"resource": "string",
"body_params": {},
"headers": {},
"query_params": {},
"api_key_header": "string",
"api_key": "string",
"token": "string"
},
"types_versions": [
{}
],
"latest_types_version": "string",
"latest_types_package_name": "string"
},
"protected": true,
"_manifest": ["string"]
}

updateIntegrationโ€‹

Update an existing integration configuration

PUT /v1/integrations/{integrationId}

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID

Request Body (required)

Sample Call

epilot integration-toolkit updateIntegration \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-d '{}'

Using positional args for path parameters:

epilot integration-toolkit updateIntegration 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot integration-toolkit updateIntegration -p integrationId=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit updateIntegration -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'
Sample Response
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"orgId": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z",
"name": "string",
"description": "string",
"access_token_ids": ["string"],
"app_ids": ["string"],
"environment_config": [
{
"key": "string",
"label": "string",
"type": "String",
"description": "string",
"required": false,
"order": 0
}
],
"maps": [
{
"key": "string",
"label": "string",
"description": "string",
"value": {}
}
],
"settings": {
"autoRefresh": {
"enabled": false,
"freshnessThresholdMinutes": 1
},
"notifications": {
"enabled": true,
"recipients": [],
"defaultChannels": {},
"monitoredUseCases": ["string"],
"monitoredCodes": ["string"],
"rules": [],
"digest": {},
"muteUntil": "1970-01-01T00:00:00.000Z"
}
},
"integration_type": "erp",
"connector_config": {
"base_url": "string",
"auth": {
"type": "oauth2_client_credentials",
"token_url": "string",
"client_id": "string",
"client_secret": "string",
"scope": "string",
"audience": "string",
"resource": "string",
"body_params": {},
"headers": {},
"query_params": {},
"api_key_header": "string",
"api_key": "string",
"token": "string"
},
"types_versions": [
{}
],
"latest_types_version": "string",
"latest_types_package_name": "string"
},
"protected": true,
"_manifest": ["string"]
}

deleteIntegrationโ€‹

Delete an integration and all its use cases

DELETE /v1/integrations/{integrationId}

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID

Sample Call

epilot integration-toolkit deleteIntegration \
-p integrationId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit deleteIntegration 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit deleteIntegration -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'message'
Sample Response
{
"message": "string"
}

queryEventsโ€‹

Query events for a specific integration

POST /v1/integrations/{integrationId}/events

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID

Request Body (required)

Sample Call

epilot integration-toolkit queryEvents \
-p integrationId=123e4567-e89b-12d3-a456-426614174000

With request body:

epilot integration-toolkit queryEvents \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-d '{
"event_id": "string",
"event_type": "CREATE",
"correlation_id": "string",
"object_type": "string",
"event_name": "string",
"use_case_id": "string",
"limit": 25,
"cursor": {
"event_time": "2025-10-31T12:34:56Z",
"event_id": "evt_1234567890abcdef"
}
}'

Using positional args for path parameters:

epilot integration-toolkit queryEvents 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot integration-toolkit queryEvents -p integrationId=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit queryEvents -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'data'
Sample Response
{
"data": [
{
"event_type": "CREATE",
"object_type": "string",
"timestamp": "1970-01-01T00:00:00.000Z",
"format": "json",
"payload": "string",
"deduplication_id": "evt-2025-05-01-12345-create-bp",
"correlation_id": "bp-8f3a2c-7d4e-4b1a-9c2f-1e6d5a4b3c21",
"use_case_id": "string"
}
],
"next_cursor": {
"event_time": "2025-10-31T12:34:56Z",
"event_id": "evt_1234567890abcdef"
},
"has_more": true
}

replayEventsโ€‹

Replay one or more events for a specific integration. Events will be re-processed with their original payloads but with

POST /v1/integrations/{integrationId}/events/replay

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID

Request Body (required)

Sample Call

epilot integration-toolkit replayEvents \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-d '{"event_ids":["string"]}'

Using positional args for path parameters:

epilot integration-toolkit replayEvents 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot integration-toolkit replayEvents -p integrationId=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit replayEvents -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'results[0]'
Sample Response
{
"replayed": 2,
"results": [
{
"event_id": "string",
"status": "success",
"replay_event_id": "string",
"message": "string"
}
],
"event_ids": ["string"]
}

listUseCasesโ€‹

Retrieve all use cases for a specific integration

GET /v1/integrations/{integrationId}/use-cases

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID

Sample Call

epilot integration-toolkit listUseCases \
-p integrationId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit listUseCases 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit listUseCases -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'use_cases'
Sample Response
{
"use_cases": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"integrationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"slug": "string",
"type": "inbound",
"enabled": true,
"change_description": "string",
"changed_by": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z",
"configuration": {}
}
]
}

createUseCaseโ€‹

Create a new use case for an integration

POST /v1/integrations/{integrationId}/use-cases

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID

Request Body (required)

Sample Call

epilot integration-toolkit createUseCase \
-p integrationId=123e4567-e89b-12d3-a456-426614174000

With request body:

epilot integration-toolkit createUseCase \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-d '{
"name": "string",
"slug": "string",
"enabled": true,
"type": "inbound",
"configuration": {
"direct": true,
"entities": [
{}
],
"meter_readings": [
{}
]
}
}'

Using positional args for path parameters:

epilot integration-toolkit createUseCase 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot integration-toolkit createUseCase -p integrationId=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit createUseCase -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'
Sample Response
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"integrationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"slug": "string",
"type": "inbound",
"enabled": true,
"change_description": "string",
"changed_by": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z",
"configuration": {
"direct": true,
"entities": [
{}
],
"meter_readings": [
{}
]
}
}

getUseCaseโ€‹

Retrieve a specific use case by its ID

GET /v1/integrations/{integrationId}/use-cases/{useCaseId}

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID
useCaseIdpathstring (uuid)YesThe use case ID

Sample Call

epilot integration-toolkit getUseCase \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-p useCaseId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit getUseCase 123e4567-e89b-12d3-a456-426614174000 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit getUseCase -p integrationId=123e4567-e89b-12d3-a456-426614174000 -p useCaseId=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'
Sample Response
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"integrationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"slug": "string",
"type": "inbound",
"enabled": true,
"change_description": "string",
"changed_by": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z",
"configuration": {
"direct": true,
"entities": [
{}
],
"meter_readings": [
{}
]
}
}

updateUseCaseโ€‹

Update an existing use case configuration

PUT /v1/integrations/{integrationId}/use-cases/{useCaseId}

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID
useCaseIdpathstring (uuid)YesThe use case ID

Request Body (required)

Sample Call

epilot integration-toolkit updateUseCase \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-p useCaseId=123e4567-e89b-12d3-a456-426614174000

With request body:

epilot integration-toolkit updateUseCase \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-p useCaseId=123e4567-e89b-12d3-a456-426614174000 \
-d '{
"name": "string",
"slug": "string",
"enabled": true,
"change_description": "string",
"type": "inbound",
"configuration": {
"direct": true,
"entities": [
{}
],
"meter_readings": [
{}
]
}
}'

Using positional args for path parameters:

epilot integration-toolkit updateUseCase 123e4567-e89b-12d3-a456-426614174000 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot integration-toolkit updateUseCase -p integrationId=123e4567-e89b-12d3-a456-426614174000 -p useCaseId=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit updateUseCase -p integrationId=123e4567-e89b-12d3-a456-426614174000 -p useCaseId=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'
Sample Response
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"integrationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"slug": "string",
"type": "inbound",
"enabled": true,
"change_description": "string",
"changed_by": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z",
"configuration": {
"direct": true,
"entities": [
{}
],
"meter_readings": [
{}
]
}
}

deleteUseCaseโ€‹

Delete a use case from an integration

DELETE /v1/integrations/{integrationId}/use-cases/{useCaseId}

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID
useCaseIdpathstring (uuid)YesThe use case ID

Sample Call

epilot integration-toolkit deleteUseCase \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-p useCaseId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit deleteUseCase 123e4567-e89b-12d3-a456-426614174000 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit deleteUseCase -p integrationId=123e4567-e89b-12d3-a456-426614174000 -p useCaseId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'message'
Sample Response
{
"message": "string"
}

listUseCaseHistoryโ€‹

Retrieve historical versions of a use case's configuration.

GET /v1/integrations/{integrationId}/use-cases/{useCaseId}/history

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID
useCaseIdpathstring (uuid)YesThe use case ID
cursorquerystringNoOpaque pagination cursor. Pass the 'next_cursor' value from a previous

response to fetch the next page of results. |

Sample Call

epilot integration-toolkit listUseCaseHistory \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-p useCaseId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit listUseCaseHistory 123e4567-e89b-12d3-a456-426614174000 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit listUseCaseHistory -p integrationId=123e4567-e89b-12d3-a456-426614174000 -p useCaseId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'history'
Sample Response
{
"history": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"useCaseId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"integrationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"slug": "string",
"enabled": true,
"change_description": "string",
"changed_by": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z",
"history_created_at": "1970-01-01T00:00:00.000Z",
"type": "inbound",
"configuration": {}
}
],
"next_cursor": "string"
}

listDocumentationPagesโ€‹

Retrieve all documentation pages of an integration, without their markdown content.

GET /v1/integrations/{integrationId}/documentation

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID

Sample Call

epilot integration-toolkit listDocumentationPages \
-p integrationId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit listDocumentationPages 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit listDocumentationPages -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'pages'
Sample Response
{
"pages": [
{
"id": "general",
"integration_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"scope": "integration",
"use_case_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"title": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"created_by": "string",
"updated_at": "1970-01-01T00:00:00.000Z",
"updated_by": "string"
}
]
}

getDocumentationPageโ€‹

Retrieve a single documentation page including its markdown content

GET /v1/integrations/{integrationId}/documentation/{docId}

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID
docIdpathstringYes'general' for the integration-wide page, otherwise a use case ID

Sample Call

epilot integration-toolkit getDocumentationPage \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-p docId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit getDocumentationPage 123e4567-e89b-12d3-a456-426614174000 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit getDocumentationPage -p integrationId=123e4567-e89b-12d3-a456-426614174000 -p docId=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'
Sample Response
{
"id": "general",
"integration_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"scope": "integration",
"use_case_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"title": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"created_by": "string",
"updated_at": "1970-01-01T00:00:00.000Z",
"updated_by": "string",
"content": "string"
}

upsertDocumentationPageโ€‹

Create or update the documentation page identified by docId.

PUT /v1/integrations/{integrationId}/documentation/{docId}

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID
docIdpathstringYes'general' for the integration-wide page, otherwise a use case ID

Request Body (required)

Sample Call

epilot integration-toolkit upsertDocumentationPage \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-p docId=123e4567-e89b-12d3-a456-426614174000 \
-d '{"title":"string","content":"string"}'

Using positional args for path parameters:

epilot integration-toolkit upsertDocumentationPage 123e4567-e89b-12d3-a456-426614174000 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot integration-toolkit upsertDocumentationPage -p integrationId=123e4567-e89b-12d3-a456-426614174000 -p docId=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit upsertDocumentationPage -p integrationId=123e4567-e89b-12d3-a456-426614174000 -p docId=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'
Sample Response
{
"id": "general",
"integration_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"scope": "integration",
"use_case_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"title": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"created_by": "string",
"updated_at": "1970-01-01T00:00:00.000Z",
"updated_by": "string",
"content": "string"
}

deleteDocumentationPageโ€‹

Delete a documentation page

DELETE /v1/integrations/{integrationId}/documentation/{docId}

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID
docIdpathstringYes'general' for the integration-wide page, otherwise a use case ID

Sample Call

epilot integration-toolkit deleteDocumentationPage \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-p docId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit deleteDocumentationPage 123e4567-e89b-12d3-a456-426614174000 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit deleteDocumentationPage -p integrationId=123e4567-e89b-12d3-a456-426614174000 -p docId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'message'
Sample Response
{
"message": "string"
}

listIntegrationsV2โ€‹

Retrieve all integrations with embedded use cases for the authenticated organization

GET /v2/integrations

Sample Call

epilot integration-toolkit listIntegrationsV2

With JSONata filter:

epilot integration-toolkit listIntegrationsV2 --jsonata 'integrations'
Sample Response
{
"integrations": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"orgId": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z",
"name": "string",
"description": "string",
"access_token_ids": ["string"],
"app_ids": ["string"],
"environment_config": [],
"maps": [],
"settings": {},
"integration_type": "erp",
"connector_config": {},
"protected": true,
"_manifest": ["string"],
"use_cases": []
}
]
}

createIntegrationV2โ€‹

Create a new integration with embedded use cases.

POST /v2/integrations

Request Body (required)

Sample Call

epilot integration-toolkit createIntegrationV2

With request body:

epilot integration-toolkit createIntegrationV2 \
-d '{
"name": "string",
"description": "string",
"access_token_ids": ["string"],
"app_ids": ["string"],
"environment_config": [
{
"key": "string",
"label": "string",
"type": "String",
"description": "string",
"required": false,
"order": 0
}
],
"maps": [
{
"key": "string",
"label": "string",
"description": "string",
"value": {}
}
],
"settings": {
"autoRefresh": {
"enabled": false,
"freshnessThresholdMinutes": 1
},
"notifications": {
"enabled": true,
"recipients": [],
"defaultChannels": {},
"monitoredUseCases": ["string"],
"monitoredCodes": ["string"],
"rules": [],
"digest": {},
"muteUntil": "1970-01-01T00:00:00.000Z"
}
},
"integration_type": "erp",
"connector_config": {
"base_url": "string",
"auth": {
"type": "oauth2_client_credentials",
"token_url": "string",
"client_id": "string",
"client_secret": "string",
"scope": "string",
"audience": "string",
"resource": "string",
"body_params": {},
"headers": {},
"query_params": {},
"api_key_header": "string",
"api_key": "string",
"token": "string"
},
"types_versions": [
{}
],
"latest_types_version": "string",
"latest_types_package_name": "string"
},
"protected": true,
"_manifest": ["string"],
"use_cases": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"slug": "string",
"enabled": true,
"change_description": "string",
"type": "inbound",
"configuration": {}
}
]
}'

Using stdin pipe:

cat body.json | epilot integration-toolkit createIntegrationV2

With JSONata filter:

epilot integration-toolkit createIntegrationV2 --jsonata '$'
Sample Response
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"orgId": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z",
"name": "string",
"description": "string",
"access_token_ids": ["string"],
"app_ids": ["string"],
"environment_config": [
{
"key": "string",
"label": "string",
"type": "String",
"description": "string",
"required": false,
"order": 0
}
],
"maps": [
{
"key": "string",
"label": "string",
"description": "string",
"value": {}
}
],
"settings": {
"autoRefresh": {
"enabled": false,
"freshnessThresholdMinutes": 1
},
"notifications": {
"enabled": true,
"recipients": [],
"defaultChannels": {},
"monitoredUseCases": ["string"],
"monitoredCodes": ["string"],
"rules": [],
"digest": {},
"muteUntil": "1970-01-01T00:00:00.000Z"
}
},
"integration_type": "erp",
"connector_config": {
"base_url": "string",
"auth": {
"type": "oauth2_client_credentials",
"token_url": "string",
"client_id": "string",
"client_secret": "string",
"scope": "string",
"audience": "string",
"resource": "string",
"body_params": {},
"headers": {},
"query_params": {},
"api_key_header": "string",
"api_key": "string",
"token": "string"
},
"types_versions": [
{}
],
"latest_types_version": "string",
"latest_types_package_name": "string"
},
"protected": true,
"_manifest": ["string"],
"use_cases": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"integrationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"slug": "string",
"type": "inbound",
"enabled": true,
"change_description": "string",
"changed_by": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z",
"configuration": {}
}
]
}

getIntegrationV2โ€‹

Retrieve a specific integration with all its embedded use cases

GET /v2/integrations/{integrationId}

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID

Sample Call

epilot integration-toolkit getIntegrationV2 \
-p integrationId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit getIntegrationV2 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit getIntegrationV2 -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'
Sample Response
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"orgId": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z",
"name": "string",
"description": "string",
"access_token_ids": ["string"],
"app_ids": ["string"],
"environment_config": [
{
"key": "string",
"label": "string",
"type": "String",
"description": "string",
"required": false,
"order": 0
}
],
"maps": [
{
"key": "string",
"label": "string",
"description": "string",
"value": {}
}
],
"settings": {
"autoRefresh": {
"enabled": false,
"freshnessThresholdMinutes": 1
},
"notifications": {
"enabled": true,
"recipients": [],
"defaultChannels": {},
"monitoredUseCases": ["string"],
"monitoredCodes": ["string"],
"rules": [],
"digest": {},
"muteUntil": "1970-01-01T00:00:00.000Z"
}
},
"integration_type": "erp",
"connector_config": {
"base_url": "string",
"auth": {
"type": "oauth2_client_credentials",
"token_url": "string",
"client_id": "string",
"client_secret": "string",
"scope": "string",
"audience": "string",
"resource": "string",
"body_params": {},
"headers": {},
"query_params": {},
"api_key_header": "string",
"api_key": "string",
"token": "string"
},
"types_versions": [
{}
],
"latest_types_version": "string",
"latest_types_package_name": "string"
},
"protected": true,
"_manifest": ["string"],
"use_cases": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"integrationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"slug": "string",
"type": "inbound",
"enabled": true,
"change_description": "string",
"changed_by": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z",
"configuration": {}
}
]
}

updateIntegrationV2โ€‹

Update an existing integration with embedded use cases.

PUT /v2/integrations/{integrationId}

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID (client-provided)

Request Body (required)

Sample Call

epilot integration-toolkit updateIntegrationV2 \
-p integrationId=123e4567-e89b-12d3-a456-426614174000

With request body:

epilot integration-toolkit updateIntegrationV2 \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-d '{
"name": "string",
"description": "string",
"access_token_ids": ["string"],
"app_ids": ["string"],
"environment_config": [
{
"key": "string",
"label": "string",
"type": "String",
"description": "string",
"required": false,
"order": 0
}
],
"maps": [
{
"key": "string",
"label": "string",
"description": "string",
"value": {}
}
],
"settings": {
"autoRefresh": {
"enabled": false,
"freshnessThresholdMinutes": 1
},
"notifications": {
"enabled": true,
"recipients": [],
"defaultChannels": {},
"monitoredUseCases": ["string"],
"monitoredCodes": ["string"],
"rules": [],
"digest": {},
"muteUntil": "1970-01-01T00:00:00.000Z"
}
},
"integration_type": "erp",
"connector_config": {
"base_url": "string",
"auth": {
"type": "oauth2_client_credentials",
"token_url": "string",
"client_id": "string",
"client_secret": "string",
"scope": "string",
"audience": "string",
"resource": "string",
"body_params": {},
"headers": {},
"query_params": {},
"api_key_header": "string",
"api_key": "string",
"token": "string"
},
"types_versions": [
{}
],
"latest_types_version": "string",
"latest_types_package_name": "string"
},
"protected": true,
"_manifest": ["string"],
"use_cases": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"slug": "string",
"enabled": true,
"change_description": "string",
"type": "inbound",
"configuration": {}
}
]
}'

Using positional args for path parameters:

epilot integration-toolkit updateIntegrationV2 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot integration-toolkit updateIntegrationV2 -p integrationId=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit updateIntegrationV2 -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'
Sample Response
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"orgId": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z",
"name": "string",
"description": "string",
"access_token_ids": ["string"],
"app_ids": ["string"],
"environment_config": [
{
"key": "string",
"label": "string",
"type": "String",
"description": "string",
"required": false,
"order": 0
}
],
"maps": [
{
"key": "string",
"label": "string",
"description": "string",
"value": {}
}
],
"settings": {
"autoRefresh": {
"enabled": false,
"freshnessThresholdMinutes": 1
},
"notifications": {
"enabled": true,
"recipients": [],
"defaultChannels": {},
"monitoredUseCases": ["string"],
"monitoredCodes": ["string"],
"rules": [],
"digest": {},
"muteUntil": "1970-01-01T00:00:00.000Z"
}
},
"integration_type": "erp",
"connector_config": {
"base_url": "string",
"auth": {
"type": "oauth2_client_credentials",
"token_url": "string",
"client_id": "string",
"client_secret": "string",
"scope": "string",
"audience": "string",
"resource": "string",
"body_params": {},
"headers": {},
"query_params": {},
"api_key_header": "string",
"api_key": "string",
"token": "string"
},
"types_versions": [
{}
],
"latest_types_version": "string",
"latest_types_package_name": "string"
},
"protected": true,
"_manifest": ["string"],
"use_cases": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"integrationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"slug": "string",
"type": "inbound",
"enabled": true,
"change_description": "string",
"changed_by": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z",
"configuration": {}
}
]
}

deleteIntegrationV2โ€‹

Delete an integration and all its use cases

DELETE /v2/integrations/{integrationId}

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID

Sample Call

epilot integration-toolkit deleteIntegrationV2 \
-p integrationId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit deleteIntegrationV2 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit deleteIntegrationV2 -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'message'
Sample Response
{
"message": "string"
}

listNotificationHistoryโ€‹

Returns the cursor-paginated, newest-first notification history for an

GET /v2/integrations/{integrationId}/notifications/history

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID
cursorquerystringNoOpaque base64 pagination cursor returned as next_cursor by a prior page.
limitquerynumberNoRequested number of items to return. Values above 100 are accepted and clamped server-side to 100 (the enforcement point is the handler, not this schema), so a large value never 400s at the contract l
typequerystringNoOptional notification type filter (e.g. critical_error, error_threshold).

Sample Call

epilot integration-toolkit listNotificationHistory \
-p integrationId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit listNotificationHistory 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit listNotificationHistory -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'history'
Sample Response
{
"history": [
{
"id": "string",
"type": "string",
"state_transition": "string",
"severity": "error",
"title": "string",
"occurred_at": "1970-01-01T00:00:00.000Z",
"notified": true,
"suppressed_reason": "muted",
"recipients": ["string"],
"context": {},
"created_at": "1970-01-01T00:00:00.000Z"
}
],
"next_cursor": "string"
}

testSendNotificationโ€‹

Renders and sends ONE representative notification of the requested kind/type to

POST /v2/integrations/{integrationId}/notifications/test

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID

Request Body (required)

Sample Call

epilot integration-toolkit testSendNotification \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-d '{"kind":"alert","type":"string","channels":["email"]}'

Using positional args for path parameters:

epilot integration-toolkit testSendNotification 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot integration-toolkit testSendNotification -p integrationId=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit testSendNotification -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'

getNotificationStatusโ€‹

Returns the live per-rule alert state and (for 'auto' rules) the current

GET /v2/integrations/{integrationId}/notifications/status

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID
includequery"baseline_series"NoAdd baseline_series to also return all 168 hour-of-week buckets per

'auto' rule (heavier; omit for just the current-bucket markers). |

Sample Call

epilot integration-toolkit getNotificationStatus \
-p integrationId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit getNotificationStatus 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit getNotificationStatus -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'health'
Sample Response
{
"health": "healthy",
"evaluated_at": "1970-01-01T00:00:00.000Z",
"rules": [
{
"rule_id": "string",
"state": "ok",
"last_fired_at": "1970-01-01T00:00:00.000Z",
"last_cleared_at": "1970-01-01T00:00:00.000Z",
"last_evaluation": {
"evaluated_at": "1970-01-01T00:00:00.000Z",
"observed": 0,
"threshold": 0,
"suppressed_reason": "sample_size"
},
"baseline": {
"is_mature": true,
"computed_at": "1970-01-01T00:00:00.000Z",
"median": 0,
"mad": 0,
"upper": 0,
"buckets": [
{
"dow": 1,
"hour": 0,
"median": 0,
"mad": 0
}
]
}
}
]
}

getSecureProxyWhitelistโ€‹

Returns the current allowed_domains, allowed_ips, and vpc_mode for a secure_proxy use case.

GET /v2/integrations/{integrationId}/use-cases/{useCaseId}/secure-proxy-whitelist

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID
useCaseIdpathstring (uuid)YesThe use case ID

Sample Call

epilot integration-toolkit getSecureProxyWhitelist \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-p useCaseId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit getSecureProxyWhitelist 123e4567-e89b-12d3-a456-426614174000 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit getSecureProxyWhitelist -p integrationId=123e4567-e89b-12d3-a456-426614174000 -p useCaseId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'vpc_mode'
Sample Response
{
"vpc_mode": "static_ip",
"allowed_domains": ["string"],
"allowed_ips": ["string"]
}

updateSecureProxyWhitelistโ€‹

Replaces allowed_domains and/or allowed_ips on a secure_proxy use case.

PUT /v2/integrations/{integrationId}/use-cases/{useCaseId}/secure-proxy-whitelist

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID
useCaseIdpathstring (uuid)YesThe use case ID

Request Body (required)

Sample Call

epilot integration-toolkit updateSecureProxyWhitelist \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-p useCaseId=123e4567-e89b-12d3-a456-426614174000 \
-d '{"allowed_domains":["string"],"allowed_ips":["string"]}'

Using positional args for path parameters:

epilot integration-toolkit updateSecureProxyWhitelist 123e4567-e89b-12d3-a456-426614174000 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot integration-toolkit updateSecureProxyWhitelist -p integrationId=123e4567-e89b-12d3-a456-426614174000 -p useCaseId=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit updateSecureProxyWhitelist -p integrationId=123e4567-e89b-12d3-a456-426614174000 -p useCaseId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'vpc_mode'
Sample Response
{
"vpc_mode": "static_ip",
"allowed_domains": ["string"],
"allowed_ips": ["string"]
}

listSecureProxyWhitelistHistoryโ€‹

Returns the most recent USECASE_HISTORY entries for a secure_proxy use case,

GET /v2/integrations/{integrationId}/use-cases/{useCaseId}/secure-proxy-whitelist/history

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID
useCaseIdpathstring (uuid)YesThe use case ID (must be of type secure_proxy)
limitquerynumberNoMaximum number of history entries to return. Default 10, max 50.

Capped at the service-layer page size (20) so limit > 20 is silently clamped to 20. UI-08 requests 5-10 for the panel view. |

Sample Call

epilot integration-toolkit listSecureProxyWhitelistHistory \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-p useCaseId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit listSecureProxyWhitelistHistory 123e4567-e89b-12d3-a456-426614174000 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit listSecureProxyWhitelistHistory -p integrationId=123e4567-e89b-12d3-a456-426614174000 -p useCaseId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'history'
Sample Response
{
"history": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"useCaseId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"integrationId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"slug": "string",
"enabled": true,
"change_description": "string",
"changed_by": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z",
"history_created_at": "1970-01-01T00:00:00.000Z",
"type": "secure_proxy",
"configuration": {
"vpc_mode": "static_ip",
"allowed_domains": ["string"],
"allowed_ips": ["string"]
}
}
]
}

setIntegrationAppMappingโ€‹

Creates or updates a mapping from an app/component to an integration.

PUT /v1/integrations/{integrationId}/app-mapping

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID to map to

Request Body (required)

Sample Call

epilot integration-toolkit setIntegrationAppMapping \
-p integrationId=123e4567-e89b-12d3-a456-426614174000

With request body:

epilot integration-toolkit setIntegrationAppMapping \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-d '{
"app_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"component_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"overwrite": false
}'

Using positional args for path parameters:

epilot integration-toolkit setIntegrationAppMapping 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot integration-toolkit setIntegrationAppMapping -p integrationId=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit setIntegrationAppMapping -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'integration_id'
Sample Response
{
"integration_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}

deleteIntegrationAppMappingโ€‹

Removes a mapping from an app/component to an integration.

DELETE /v1/integrations/{integrationId}/app-mapping

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID (used for authorization, must match the mapping)

Request Body (required)

Sample Call

epilot integration-toolkit deleteIntegrationAppMapping \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-d '{"app_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","component_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6"}'

Using positional args for path parameters:

epilot integration-toolkit deleteIntegrationAppMapping 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot integration-toolkit deleteIntegrationAppMapping -p integrationId=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit deleteIntegrationAppMapping -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'message'
Sample Response
{
"message": "string"
}

getOutboundStatusโ€‹

Get the status of all outbound use cases for a specific integration.

GET /v1/integrations/{integrationId}/outbound-status

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID

Sample Call

epilot integration-toolkit getOutboundStatus \
-p integrationId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit getOutboundStatus 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit getOutboundStatus -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'useCases'
Sample Response
{
"useCases": [
{
"useCaseId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"useCaseEnabled": true,
"eventCatalogEvent": "contract.created",
"eventEnabled": true,
"webhooks": [
{
"webhookId": "string",
"webhookName": "string",
"enabled": true
}
],
"status": "ok",
"conflicts": [
{
"type": "event_disabled",
"webhookId": "string",
"message": "string"
}
],
"poll": {
"queue_depth": 0,
"oldest_unconsumed_age_seconds": 0,
"last_poll_at": "1970-01-01T00:00:00.000Z",
"last_ack_at": "1970-01-01T00:00:00.000Z",
"blocked": true,
"dlq_count": 0
},
"file_proxy": [
{
"mapping_id": "string",
"use_case_slug": "string",
"resolved": true,
"target_use_case_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"target_enabled": true,
"target_updated_at": "1970-01-01T00:00:00.000Z",
"unresolved_reason": "not_found"
}
]
}
]
}

getEntitySyncStatusโ€‹

Get the inbound ERP sync status of an entity: when each integration last

GET /v1/integrations/entities/{entityId}/sync-status

Parameters

NameInTypeRequiredDescription
entityIdpathstring (uuid)YesThe entity ID
integration_idquerystring (uuid)NoNarrow the result to a single integration

Sample Call

epilot integration-toolkit getEntitySyncStatus \
-p entityId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit getEntitySyncStatus 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit getEntitySyncStatus -p entityId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'entity_id'
Sample Response
{
"entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"sync_states": [
{
"entity_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"integration_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"entity_slug": "contract",
"use_case_id": "string",
"last_synced_at": "1970-01-01T00:00:00.000Z",
"last_changed_at": "1970-01-01T00:00:00.000Z",
"last_operation": "create",
"last_event_id": "string",
"readings_last_synced_at": "1970-01-01T00:00:00.000Z",
"readings_last_operation": "upsert",
"readings_last_event_id": "string"
}
]
}

pollOutboundMessagesโ€‹

Poll outbound messages for an integration's poll-mode use cases.

POST /v1/integrations/{integrationId}/outbound/messages/poll

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID

Request Body

Sample Call

epilot integration-toolkit pollOutboundMessages \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-d '{"limit":10}'

Using positional args for path parameters:

epilot integration-toolkit pollOutboundMessages 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot integration-toolkit pollOutboundMessages -p integrationId=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit pollOutboundMessages -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'messages'
Sample Response
{
"messages": [
{
"id": "string",
"lease_token": "string",
"use_case_id": "string",
"event_name": "string",
"event_id": "string",
"group": "string",
"payload": {},
"enqueued_at": "1970-01-01T00:00:00.000Z"
}
],
"visibility_timeout_seconds": 0,
"has_more": true
}

ackOutboundMessagesโ€‹

Acknowledge polled outbound messages. Acks are validated against the

POST /v1/integrations/{integrationId}/outbound/messages/ack

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID

Request Body (required)

Sample Call

epilot integration-toolkit ackOutboundMessages \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-d '{"acks":[{"id":"string","lease_token":"string"}]}'

Using positional args for path parameters:

epilot integration-toolkit ackOutboundMessages 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot integration-toolkit ackOutboundMessages -p integrationId=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit ackOutboundMessages -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'results[0]'
Sample Response
{
"results": [
{
"id": "string",
"status": "accepted",
"reason": "stale_lease"
}
]
}

listOutboundDlqMessagesโ€‹

List an integration's dead-lettered outbound queue messages

GET /v1/integrations/{integrationId}/outbound/messages/dlq

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID
limitquerynumberNoMaximum number of DLQ entries to return
next_tokenquerystringNoOpaque pagination token from a previous response

Sample Call

epilot integration-toolkit listOutboundDlqMessages \
-p integrationId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit listOutboundDlqMessages 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit listOutboundDlqMessages -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'items[0]'
Sample Response
{
"items": [
{
"id": "string",
"use_case_id": "string",
"event_name": "string",
"event_id": "string",
"enqueued_at": "1970-01-01T00:00:00.000Z",
"dead_lettered_at": "1970-01-01T00:00:00.000Z",
"delivery_attempts": 0,
"reason": "string",
"expires_at": "1970-01-01T00:00:00.000Z"
}
],
"next_token": "string"
}

redriveOutboundDlqMessagesโ€‹

Redrive selected dead-lettered messages back into the live stream.

POST /v1/integrations/{integrationId}/outbound/messages/dlq/redrive

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID

Request Body (required)

Sample Call

epilot integration-toolkit redriveOutboundDlqMessages \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-d '{"ids":["string"]}'

Using positional args for path parameters:

epilot integration-toolkit redriveOutboundDlqMessages 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot integration-toolkit redriveOutboundDlqMessages -p integrationId=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit redriveOutboundDlqMessages -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'results[0]'
Sample Response
{
"results": [
{
"id": "string",
"status": "redriven"
}
]
}

unblockOutboundStreamโ€‹

Unblock an integration's outbound stream halted by the block

POST /v1/integrations/{integrationId}/outbound/messages/unblock

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID

Request Body

Sample Call

epilot integration-toolkit unblockOutboundStream \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-d '{"reason":"string"}'

Using positional args for path parameters:

epilot integration-toolkit unblockOutboundStream 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot integration-toolkit unblockOutboundStream -p integrationId=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit unblockOutboundStream -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'unblocked'
Sample Response
{
"unblocked": true,
"dead_lettered_id": "string"
}

queryAccessLogsโ€‹

Query API access logs for a specific integration's organization.

POST /v1/integrations/{integrationId}/monitoring/access-logs

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID (used for tenant authorization)

Request Body (required)

Sample Call

epilot integration-toolkit queryAccessLogs \
-p integrationId=123e4567-e89b-12d3-a456-426614174000

With request body:

epilot integration-toolkit queryAccessLogs \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-d '{
"token_id": "api_5ZugdRXasLfWBypHi93Fk",
"service": "entity",
"method": "GET",
"path": "/v1/entity",
"status": 200,
"from_date": "2025-01-01T00:00:00Z",
"to_date": "2025-01-31T23:59:59Z",
"limit": 50,
"cursor": {
"timestamp": "1970-01-01T00:00:00.000Z",
"request_id": "string"
}
}'

Using positional args for path parameters:

epilot integration-toolkit queryAccessLogs 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot integration-toolkit queryAccessLogs -p integrationId=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit queryAccessLogs -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'data'
Sample Response
{
"data": [
{
"timestamp": "1970-01-01T00:00:00.000Z",
"environment": "string",
"service": "string",
"request_id": "string",
"method": "string",
"path": "string",
"status": 0,
"response_latency_ms": 0,
"response_length": 0,
"token_id": "string",
"org_id": "string",
"origin": "string",
"source_ip": "string"
}
],
"next_cursor": {
"timestamp": "1970-01-01T00:00:00.000Z",
"request_id": "string"
},
"has_more": true
}

queryMonitoringEventsV2โ€‹

Query monitoring events from the unified erp_monitoring_v2 table.

POST /v2/integrations/{integrationId}/monitoring/events

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID

Request Body (required)

Sample Call

epilot integration-toolkit queryMonitoringEventsV2 \
-p integrationId=123e4567-e89b-12d3-a456-426614174000

With request body:

epilot integration-toolkit queryMonitoringEventsV2 \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-d '{
"use_case_id": "string",
"use_case_type": "inbound",
"level": "success",
"code": "string",
"event_id": "string",
"correlation_id": "string",
"from_date": "2025-01-01T00:00:00Z",
"to_date": "2025-01-31T23:59:59Z",
"limit": 50,
"cursor": {
"created_at": "1970-01-01T00:00:00.000Z",
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
}
}'

Using positional args for path parameters:

epilot integration-toolkit queryMonitoringEventsV2 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot integration-toolkit queryMonitoringEventsV2 -p integrationId=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit queryMonitoringEventsV2 -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'data'
Sample Response
{
"data": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"org_id": "string",
"integration_id": "string",
"event_id": "string",
"correlation_id": "string",
"use_case_id": "string",
"use_case_type": "inbound",
"level": "success",
"code": "string",
"message": "string",
"detail": {},
"created_at": "1970-01-01T00:00:00.000Z"
}
],
"next_cursor": {
"created_at": "1970-01-01T00:00:00.000Z",
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6"
},
"has_more": true
}

getMonitoringStatsV2โ€‹

Get aggregated statistics from the unified erp_monitoring_v2 table.

POST /v2/integrations/{integrationId}/monitoring/stats

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID

Request Body (required)

Sample Call

epilot integration-toolkit getMonitoringStatsV2 \
-p integrationId=123e4567-e89b-12d3-a456-426614174000

With request body:

epilot integration-toolkit getMonitoringStatsV2 \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-d '{
"from_date": "2025-01-01T00:00:00Z",
"to_date": "2025-01-31T23:59:59Z",
"use_case_type": "inbound",
"use_case_types": ["inbound"],
"group_by": "use_case_id",
"source": "monitoring"
}'

Using positional args for path parameters:

epilot integration-toolkit getMonitoringStatsV2 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot integration-toolkit getMonitoringStatsV2 -p integrationId=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit getMonitoringStatsV2 -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'total_events'
Sample Response
{
"total_events": 0,
"success_count": 0,
"error_count": 0,
"warning_count": 0,
"skipped_count": 0,
"info_count": 0,
"ack_timeout_count": 0,
"success_rate": 0,
"last_error_at": "1970-01-01T00:00:00.000Z",
"breakdown": [
{}
]
}

getMonitoringTimeSeriesV2โ€‹

Get time-series aggregated event counts from the unified erp_monitoring_v2 table.

POST /v2/integrations/{integrationId}/monitoring/time-series

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID

Request Body (required)

Sample Call

epilot integration-toolkit getMonitoringTimeSeriesV2 \
-p integrationId=123e4567-e89b-12d3-a456-426614174000

With request body:

epilot integration-toolkit getMonitoringTimeSeriesV2 \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-d '{
"from_date": "2025-01-01T00:00:00Z",
"to_date": "2025-01-31T23:59:59Z",
"interval": "5m",
"use_case_type": "inbound",
"group_by": "use_case_type"
}'

Using positional args for path parameters:

epilot integration-toolkit getMonitoringTimeSeriesV2 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot integration-toolkit getMonitoringTimeSeriesV2 -p integrationId=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit getMonitoringTimeSeriesV2 -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'interval'
Sample Response
{
"interval": "5m",
"from_date": "1970-01-01T00:00:00.000Z",
"to_date": "1970-01-01T00:00:00.000Z",
"buckets": [
{
"timestamp": "1970-01-01T00:00:00.000Z",
"success_count": 0,
"error_count": 0,
"warning_count": 0,
"skipped_count": 0,
"info_count": 0,
"total_count": 0,
"breakdown": [
{
"use_case_type": "inbound",
"use_case_id": "string",
"success_count": 0,
"error_count": 0,
"warning_count": 0,
"skipped_count": 0,
"info_count": 0,
"total_count": 0
}
]
}
]
}

getAssociatedMonitoringEventsโ€‹

Returns all monitoring events sharing the same event_id, ordered chronologically.

GET /v2/integrations/{integrationId}/monitoring/events/{eventId}/associated

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID
eventIdpathstringYesThe event ID to get associated events for

Sample Call

epilot integration-toolkit getAssociatedMonitoringEvents \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-p eventId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit getAssociatedMonitoringEvents 123e4567-e89b-12d3-a456-426614174000 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit getAssociatedMonitoringEvents -p integrationId=123e4567-e89b-12d3-a456-426614174000 -p eventId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'monitoring_events'
Sample Response
{
"monitoring_events": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"org_id": "string",
"integration_id": "string",
"event_id": "string",
"correlation_id": "string",
"use_case_id": "string",
"use_case_type": "inbound",
"level": "success",
"code": "string",
"message": "string",
"detail": {},
"created_at": "1970-01-01T00:00:00.000Z"
}
],
"inbound_event": {}
}

ingestExternalMonitoringEventsโ€‹

Ingest monitoring spans produced by an EXTERNAL system (e.g. an integration

POST /v2/integrations/{integrationId}/monitoring/external-events

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID

Request Body (required)

Sample Call

epilot integration-toolkit ingestExternalMonitoringEvents \
-p integrationId=123e4567-e89b-12d3-a456-426614174000

With request body:

epilot integration-toolkit ingestExternalMonitoringEvents \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-d '{
"events": [
{
"correlation_id": "string",
"level": "string",
"use_case_slug": "string",
"occurred_at": "1970-01-01T00:00:00.000Z",
"message": "string",
"detail": {}
}
]
}'

Using positional args for path parameters:

epilot integration-toolkit ingestExternalMonitoringEvents 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot integration-toolkit ingestExternalMonitoringEvents -p integrationId=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit ingestExternalMonitoringEvents -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'

getMonitoringTraceByCorrelationโ€‹

Returns the cross-system event trace for a correlation_id: every monitoring

GET /v2/integrations/{integrationId}/monitoring/traces/{correlationId}

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)YesThe integration ID
correlationIdpathstringYesThe trace id (correlation_id) shared across systems

Sample Call

epilot integration-toolkit getMonitoringTraceByCorrelation \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-p correlationId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit getMonitoringTraceByCorrelation 123e4567-e89b-12d3-a456-426614174000 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit getMonitoringTraceByCorrelation -p integrationId=123e4567-e89b-12d3-a456-426614174000 -p correlationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'correlation_id'
Sample Response
{
"correlation_id": "string",
"status": "success",
"started_at": "1970-01-01T00:00:00.000Z",
"ended_at": "1970-01-01T00:00:00.000Z",
"span_count": 0,
"truncated": true,
"spans": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"org_id": "string",
"integration_id": "string",
"event_id": "string",
"correlation_id": "string",
"use_case_id": "string",
"use_case_type": "inbound",
"level": "success",
"code": "string",
"message": "string",
"detail": {},
"created_at": "1970-01-01T00:00:00.000Z"
}
],
"inbound_event": {}
}

listSecureProxiesโ€‹

Lists all secure_proxy use cases across all integrations for the authenticated organization.

GET /v1/integrations/secure-proxies

Sample Call

epilot integration-toolkit listSecureProxies

With JSONata filter:

epilot integration-toolkit listSecureProxies --jsonata 'secure_proxies'
Sample Response
{
"secure_proxies": [
{
"id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"name": "string",
"slug": "string",
"enabled": true,
"vpc_mode": "static_ip",
"allowed_domains": ["string"],
"allowed_ips": ["string"],
"integration_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"integration_name": "string"
}
]
}

secureProxyโ€‹

Routes an HTTP request through a VPC with either static IP egress or VPN secure link access.

POST /v1/secure-proxy

Request Body (required)

Sample Call

epilot integration-toolkit secureProxy

With request body:

epilot integration-toolkit secureProxy \
-d '{
"integration_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"use_case_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"use_case_slug": "string",
"url": "https://example.com/path",
"method": "GET",
"headers": {},
"body": {},
"response_type": "json"
}'

Using stdin pipe:

cat body.json | epilot integration-toolkit secureProxy

With JSONata filter:

epilot integration-toolkit secureProxy --jsonata 'status_code'
Sample Response
{
"status_code": 0,
"headers": {},
"body": {}
}

managedCallExecuteโ€‹

Execute a managed call operation synchronously. The slug in the path acts as the RPC method name.

POST /v1/managed-call/{slug}/execute

Parameters

NameInTypeRequiredDescription
slugpathstringYesUse case slug (acts as the RPC method name)

Request Body (required)

Sample Call

epilot integration-toolkit managedCallExecute \
-p slug=contact \
-d '{"integration_id":"3fa85f64-5717-4562-b3fc-2c963f66afa6","payload":{},"correlation_id":"string"}'

Using positional args for path parameters:

epilot integration-toolkit managedCallExecute contact

Using stdin pipe:

cat body.json | epilot integration-toolkit managedCallExecute -p slug=contact

With JSONata filter:

epilot integration-toolkit managedCallExecute -p slug=contact --jsonata '$'
Sample Response
{}

generateTypesPreviewโ€‹

Analyses the JSONata mappings of all managed-call use cases in the integration and returns scaffolded type descriptors.

POST /v1/integrations/{integrationId}/generate-types-preview

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)Yes

Sample Call

epilot integration-toolkit generateTypesPreview \
-p integrationId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit generateTypesPreview 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit generateTypesPreview -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'integration_name'

generateTypesโ€‹

Generates a complete TypeScript npm package with typed interfaces for all managed-call use cases. This is a stateless op

POST /v1/integrations/{integrationId}/generate-types

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)Yes

Request Body (required)

Sample Call

epilot integration-toolkit generateTypes \
-p integrationId=123e4567-e89b-12d3-a456-426614174000

With request body:

epilot integration-toolkit generateTypes \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-d '{
"package_name": "@epilot/hems-cleverpv",
"version": "1.0.0",
"description": "string",
"domain_package": "@epilot/hems",
"domain_map_name": "HemsUseCaseMap",
"annotations": {}
}'

Using positional args for path parameters:

epilot integration-toolkit generateTypes 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot integration-toolkit generateTypes -p integrationId=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit generateTypes -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'package_name'
Sample Response
{
"package_name": "string",
"version": "string",
"files": {},
"warnings": ["string"]
}

commitTypesโ€‹

Commits the generated types by locking use case configurations and updating version tracking. Should be called after the

POST /v1/integrations/{integrationId}/commit-types

Parameters

NameInTypeRequiredDescription
integrationIdpathstring (uuid)Yes

Request Body (required)

Sample Call

epilot integration-toolkit commitTypes \
-p integrationId=123e4567-e89b-12d3-a456-426614174000 \
-d '{"package_name":"@epilot/hems-cleverpv","version":"1.0.0","annotations":{}}'

Using positional args for path parameters:

epilot integration-toolkit commitTypes 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot integration-toolkit commitTypes -p integrationId=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit commitTypes -p integrationId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'committed'
Sample Response
{
"committed": true,
"warnings": ["string"]
}

listErpImportsโ€‹

List recent pricing-file import jobs for the org, newest first.

GET /v2/erp/imports

Parameters

NameInTypeRequiredDescription
limitquerynumberNoPage size. Values above 100 are clamped to 100.
cursorquerystringNoOpaque cursor from a prior page's next_cursor.

Sample Call

epilot integration-toolkit listErpImports

With JSONata filter:

epilot integration-toolkit listErpImports --jsonata 'results[0]'
Sample Response
{
"results": [
{
"import_id": "string",
"org_id": "string",
"created_by": "string",
"integration_id": "string",
"use_case_slug": "string",
"format": "csv",
"status": "PENDING",
"s3_input_ref": {
"bucket": "string",
"key": "string"
},
"size_bytes": 0,
"column_count": 0,
"validation": {
"total_rows": 0,
"blocking": 0,
"warnings": 0,
"entities": {},
"entity_details": [
{
"mapping_index": 0,
"entity_schema": "string",
"business_key": {},
"variants": 0,
"versions": 0
}
],
"entity_details_truncated": true,
"issues": [
{
"code": "UNIQUE_ID_COLUMN_MISSING",
"severity": "warning",
"columns": [
{
"name": "string",
"entity": "string"
}
],
"subject": "string",
"row": 0
}
]
},
"progress": {
"processed_rows": 0,
"total_rows": 0
},
"error": {
"code": "VALIDATION_BLOCKED",
"message": "string"
},
"correlation_id": "string",
"activity_id": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z"
}
],
"next_cursor": "string"
}

createErpImportโ€‹

Register an already-uploaded file (S3 ref) as a pricing-file import job. Returns the job and a file preview. Nothing run

POST /v2/erp/imports

Request Body (required)

Sample Call

epilot integration-toolkit createErpImport \
-d '{"s3_reference":{"bucket":"string","key":"string"},"include_preview":false,"import_id":"string"}'

Using stdin pipe:

cat body.json | epilot integration-toolkit createErpImport

With JSONata filter:

epilot integration-toolkit createErpImport --jsonata 'job'
Sample Response
{
"job": {
"import_id": "string",
"org_id": "string",
"created_by": "string",
"integration_id": "string",
"use_case_slug": "string",
"format": "csv",
"status": "PENDING",
"s3_input_ref": {
"bucket": "string",
"key": "string"
},
"size_bytes": 0,
"column_count": 0,
"validation": {
"total_rows": 0,
"blocking": 0,
"warnings": 0,
"entities": {},
"entity_details": [
{
"mapping_index": 0,
"entity_schema": "string",
"business_key": {},
"variants": 0,
"versions": 0
}
],
"entity_details_truncated": true,
"issues": [
{
"code": "UNIQUE_ID_COLUMN_MISSING",
"severity": "warning",
"columns": [
{
"name": "string",
"entity": "string"
}
],
"subject": "string",
"row": 0
}
]
},
"progress": {
"processed_rows": 0,
"total_rows": 0
},
"error": {
"code": "VALIDATION_BLOCKED",
"message": "string"
},
"correlation_id": "string",
"activity_id": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z"
},
"preview": {
"columns": ["string"],
"rows": [
["string"]
]
}
}

getErpImportโ€‹

Get a pricing-file import job (status, counts, result links).

GET /v2/erp/imports/{importId}

Parameters

NameInTypeRequiredDescription
importIdpathstringYes

Sample Call

epilot integration-toolkit getErpImport \
-p importId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit getErpImport 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit getErpImport -p importId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'import_id'
Sample Response
{
"import_id": "string",
"org_id": "string",
"created_by": "string",
"integration_id": "string",
"use_case_slug": "string",
"format": "csv",
"status": "PENDING",
"s3_input_ref": {
"bucket": "string",
"key": "string"
},
"size_bytes": 0,
"column_count": 0,
"validation": {
"total_rows": 0,
"blocking": 0,
"warnings": 0,
"entities": {},
"entity_details": [
{
"mapping_index": 0,
"entity_schema": "string",
"business_key": {},
"variants": 0,
"versions": 0
}
],
"entity_details_truncated": true,
"issues": [
{
"code": "UNIQUE_ID_COLUMN_MISSING",
"severity": "warning",
"columns": [
{
"name": "string",
"entity": "string"
}
],
"subject": "string",
"row": 0
}
]
},
"progress": {
"processed_rows": 0,
"total_rows": 0
},
"error": {
"code": "VALIDATION_BLOCKED",
"message": "string"
},
"correlation_id": "string",
"activity_id": "string",
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z"
}

deleteErpImportโ€‹

Remove an import and the file it owns. Allowed from any status: an import whose run is still in flight is stopped by the

DELETE /v2/erp/imports/{importId}

Parameters

NameInTypeRequiredDescription
importIdpathstringYes

Sample Call

epilot integration-toolkit deleteErpImport \
-p importId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit deleteErpImport 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit deleteErpImport -p importId=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'

validateErpImportโ€‹

Choose the use case to read this file with, and start the validate phase.

POST /v2/erp/imports/{importId}:validate

Parameters

NameInTypeRequiredDescription
importIdpathstringYes

Request Body (required)

Sample Call

epilot integration-toolkit validateErpImport \
-p importId=123e4567-e89b-12d3-a456-426614174000 \
-d '{"integration_id":"string","use_case_slug":"string"}'

Using positional args for path parameters:

epilot integration-toolkit validateErpImport 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot integration-toolkit validateErpImport -p importId=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit validateErpImport -p importId=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'

suggestErpImportUseCasesโ€‹

Rank the org's inbound use cases against this file's columns โ€” the input to the ranked picker ("matches 6 of your 7 colu

POST /v2/erp/imports/{importId}:suggest-use-cases

Parameters

NameInTypeRequiredDescription
importIdpathstringYes

Sample Call

epilot integration-toolkit suggestErpImportUseCases \
-p importId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit suggestErpImportUseCases 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit suggestErpImportUseCases -p importId=123e4567-e89b-12d3-a456-426614174000 --jsonata 'file_columns'
Sample Response
{
"file_columns": 0,
"suggestions": [
{
"integration_id": "string",
"integration_name": "string",
"use_case_slug": "string",
"use_case_name": "string",
"entity_types": 0,
"matched_columns": 0
}
]
}

executeErpImportโ€‹

Confirm and run the write phase of a validated import. Only a READY job may be executed; any other status returns 409.

POST /v2/erp/imports/{importId}:execute

Parameters

NameInTypeRequiredDescription
importIdpathstringYes

Request Body

Sample Call

epilot integration-toolkit executeErpImport \
-p importId=123e4567-e89b-12d3-a456-426614174000 \
-d '{"ack_warnings":true}'

Using positional args for path parameters:

epilot integration-toolkit executeErpImport 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot integration-toolkit executeErpImport -p importId=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit executeErpImport -p importId=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'

abortErpImportโ€‹

Ask a running import to stop. Valid while the job is VALIDATING or PROCESSING; any other status returns 409.

POST /v2/erp/imports/{importId}:abort

Parameters

NameInTypeRequiredDescription
importIdpathstringYes

Sample Call

epilot integration-toolkit abortErpImport \
-p importId=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot integration-toolkit abortErpImport 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot integration-toolkit abortErpImport -p importId=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'