Skip to main content

Configuration Hub API

Lightweight index API for exploring epilot organization configurations.

Quick Startโ€‹

# List available operations
epilot configuration-hub

# Call an operation
epilot configuration-hub listConfigTypes

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โ€‹

Configs

  • listConfigTypes โ€” Returns the static list of available configuration types with display metadata.
  • listConfigs โ€” List configs of a given type with pagination. Returns summary metadata only
  • getConfigDependencies โ€” Get configs that are referenced by the given config.
  • getConfigUsedBy โ€” Get configs that reference the given config (reverse dependencies).
  • getIndex โ€” Return the current index build state for the caller's organization.
  • rebuildIndex โ€” Rebuild the configuration index for the caller's organization.
  • getConfigInventory โ€” Returns a fresh inventory of an org's configuration resources โ€” { type, id } identities only,

Health

  • startHealthScan โ€” Start an asynchronous org health scan โ€” fire-and-forget, mirrors
  • getHealthReport โ€” Return the caller org's current health report: scan status, summary
  • requestHealthCoverage โ€” Send a request for configuration the health check does not cover yet.
  • startHealthCleanup โ€” Remove references that are already inert: dangling $relation entries
  • setHealthFindingsIgnored โ€” Acknowledge findings as intentional (or undo that). An ignored

Compare

  • compareConfigs โ€” Compare the caller org's configs of a single type against another
  • suggestMatches โ€” Run the sync-grade heuristic match (lookupByHeuristic โ€” name / slug /
  • confirmLineage โ€” Persist a lineage entry pairing a source-org config with a config in
  • breakLineage โ€” Delete a lineage entry from the caller org's partition (caller as sync

Sync

  • listSyncJobs โ€” List sync jobs scoped to the caller's organization, paginated with an opaque
  • createSyncJob โ€” Create a new cross-org sync job. The job is enqueued for asynchronous execution
  • getSyncJob โ€” Fetch a single sync job by ID. Returns the job header, counts summary,
  • getSyncJobHealth โ€” Targeted health check of an applied (non-dry-run) sync job. When the job
  • runSyncJobHealth โ€” Start the targeted health check of a finished, applied sync job again:
  • retrySyncJob โ€” Retry the unresolved resources from a prior sync job: failed rows, plus
  • planSyncJobRetry โ€” Preview what retrySyncJob would re-run for the same resources,
  • cancelSyncJob โ€” Cancel a running sync job. Marks the job cancelled with a finished_at
  • listSyncJobEvents โ€” Full activity log of a sync job, latest first: one event per resource
  • listSyncJobResources โ€” List the per-resource rows for a sync job. Supports filtering by status
  • getSyncPlan โ€” Summary of a plan: a dry-run sync job (createSyncJob with
  • listSyncPlanDiffs โ€” Field-level diffs of a plan, one per planned resource: what the target
  • getSyncPlanDiff โ€” Field-level diff of one planned resource. See listSyncPlanDiffs.
  • applySyncPlan โ€” Run a finished plan for real. Creates a new sync job (it carries
  • replanSyncPlan โ€” Plan some rows of a plan again, in place, e.g. after fixing a

Delete

  • listDeleteJobs โ€” List bulk-delete jobs scoped to the caller's organization, paginated
  • createDeleteJob โ€” Create a bulk-delete job for the caller's organization. The selected
  • getDeleteJob โ€” Fetch a single bulk-delete job by ID. Returns the job header and counts
  • listDeleteJobResources โ€” List the per-resource rows for a delete job, cursor-paginated. Used by

Previews

  • listPreviews โ€” Lists the previews requested from the caller's current org, newest first (max 50).
  • createPreview โ€” Starts a preview of the caller's current org (internal callers: the org in x-ivy-org-id,
  • getPreview โ€” Returns a preview requested from the caller's current org, with its progress.

listConfigTypesโ€‹

Returns the static list of available configuration types with display metadata.

GET /v1/configs/types

Sample Call

epilot configuration-hub listConfigTypes

With JSONata filter:

epilot configuration-hub listConfigTypes --jsonata 'results[0]'
Sample Response
{
"results": [
{
"type": "journey",
"label": "Journeys",
"icon": "Route",
"source_api": "https://journey.sls.epilot.io",
"sdk_client": "@epilot/sdk/journey",
"deletable": true
}
]
}

listConfigsโ€‹

List configs of a given type with pagination. Returns summary metadata only

GET /v1/configs/{type}

Parameters

NameInTypeRequiredDescription
typepath"journey" | "datasource" | "automation_flow" | "workflow_definition" | "closing_reason" | "flow_template" | "schema" | "emailtemplate" | "product" | "price" | "tax" | "coupon" | "file" | "document_template" | "webhook" | "saved_view" | "dashboard" | "kanban" | "role" | "usergroup" | "validation_rule" | "integration" | "app" | "designbuilder" | "notification_template" | "custom_variable" | "environment_variable" | "taxonomy" | "taxonomy_classification" | "entity_mapping" | "portal_config" | "target" | "product_recommendation" | "access_token" | "email_signature" | "shared_inbox" | "org_setting"YesConfiguration resource type
cursorquerystringNoOpaque cursor for fetching the next page. Omit for the first page.
sizequerynumberNoNumber of items per page
qquerystringNoSearch query to filter configs by name/title
updated_afterquerystring (date-time)NoFilter configs updated after this date (ISO 8601)
updated_beforequerystring (date-time)NoFilter configs updated before this date (ISO 8601)
purposesquerystringNoFilter by purpose classification IDs (comma-separated)
blueprint_idsquerystringNoFilter by installed-blueprint IDs (comma-separated). Only configs installed by one of the listed blueprints are returned.
sortquery"updated_at" | "usage" | "name"NoSort order. updated_at (default) sorts by most recently modified.

usage sorts by the type-specific usage metric descending (submissions for journeys, executions for automations, entities for schem | | active_only | query | boolean | No | If true, filter out configs that are explicitly inactive (active=false). Configs with no active field are always included. |

Sample Call

epilot configuration-hub listConfigs \
-p type=example

Using positional args for path parameters:

epilot configuration-hub listConfigs example

With JSONata filter:

epilot configuration-hub listConfigs -p type=example --jsonata 'results[0]'
Sample Response
{
"type": "journey",
"label": "string",
"icon": "string",
"total": 0,
"next_cursor": "string",
"results": [
{
"type": "journey",
"id": "string",
"title": "string",
"updated_at": "1970-01-01T00:00:00.000Z",
"updated_by": "string",
"tags": ["string"],
"aliases": ["string"],
"purposes": ["string"],
"link": "https://example.com/path",
"active": true,
"blueprints": [
{
"id": "string",
"title": "string"
}
],
"metadata": {}
}
]
}

getConfigDependenciesโ€‹

Get configs that are referenced by the given config.

GET /v1/configs/{type}/{id}/dependencies

Parameters

NameInTypeRequiredDescription
typepath"journey" | "datasource" | "automation_flow" | "workflow_definition" | "closing_reason" | "flow_template" | "schema" | "emailtemplate" | "product" | "price" | "tax" | "coupon" | "file" | "document_template" | "webhook" | "saved_view" | "dashboard" | "kanban" | "role" | "usergroup" | "validation_rule" | "integration" | "app" | "designbuilder" | "notification_template" | "custom_variable" | "environment_variable" | "taxonomy" | "taxonomy_classification" | "entity_mapping" | "portal_config" | "target" | "product_recommendation" | "access_token" | "email_signature" | "shared_inbox" | "org_setting"YesConfiguration resource type
idpathstringYesConfiguration resource ID
cursorquerystringNoOpaque cursor for fetching the next page. Omit for the first page.
sizequerynumberNoNumber of items per page

Sample Call

epilot configuration-hub getConfigDependencies \
-p type=example \
-p id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot configuration-hub getConfigDependencies example 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot configuration-hub getConfigDependencies -p type=example -p id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'results[0]'
Sample Response
{
"total": 0,
"next_cursor": "string",
"results": [
{
"type": "journey",
"id": "string",
"title": "string",
"updated_at": "1970-01-01T00:00:00.000Z",
"updated_by": "string",
"tags": ["string"],
"aliases": ["string"],
"purposes": ["string"],
"link": "https://example.com/path",
"active": true,
"blueprints": [
{
"id": "string",
"title": "string"
}
],
"metadata": {}
}
]
}

getConfigUsedByโ€‹

Get configs that reference the given config (reverse dependencies).

GET /v1/configs/{type}/{id}/used_by

Parameters

NameInTypeRequiredDescription
typepath"journey" | "datasource" | "automation_flow" | "workflow_definition" | "closing_reason" | "flow_template" | "schema" | "emailtemplate" | "product" | "price" | "tax" | "coupon" | "file" | "document_template" | "webhook" | "saved_view" | "dashboard" | "kanban" | "role" | "usergroup" | "validation_rule" | "integration" | "app" | "designbuilder" | "notification_template" | "custom_variable" | "environment_variable" | "taxonomy" | "taxonomy_classification" | "entity_mapping" | "portal_config" | "target" | "product_recommendation" | "access_token" | "email_signature" | "shared_inbox" | "org_setting"YesConfiguration resource type
idpathstringYesConfiguration resource ID

Sample Call

epilot configuration-hub getConfigUsedBy \
-p type=example \
-p id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot configuration-hub getConfigUsedBy example 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot configuration-hub getConfigUsedBy -p type=example -p id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'results[0]'
Sample Response
{
"total": 0,
"next_cursor": "string",
"results": [
{
"type": "journey",
"id": "string",
"title": "string",
"updated_at": "1970-01-01T00:00:00.000Z",
"updated_by": "string",
"tags": ["string"],
"aliases": ["string"],
"purposes": ["string"],
"link": "https://example.com/path",
"active": true,
"blueprints": [
{
"id": "string",
"title": "string"
}
],
"metadata": {}
}
]
}

getIndexโ€‹

Return the current index build state for the caller's organization.

GET /v1/configs/index

Sample Call

epilot configuration-hub getIndex

With JSONata filter:

epilot configuration-hub getIndex --jsonata 'status'
Sample Response
{
"status": "missing",
"org_id": "string",
"last_built_at": "1970-01-01T00:00:00.000Z",
"total_items": 0,
"build_duration_ms": 0
}

startHealthScanโ€‹

Start an asynchronous org health scan โ€” fire-and-forget, mirrors

POST /v1/configs/health:scan

Sample Call

epilot configuration-hub startHealthScan

With JSONata filter:

epilot configuration-hub startHealthScan --jsonata '$'

getHealthReportโ€‹

Return the caller org's current health report: scan status, summary

GET /v1/configs/health

Sample Call

epilot configuration-hub getHealthReport

With JSONata filter:

epilot configuration-hub getHealthReport --jsonata 'status'
Sample Response
{
"status": "missing",
"last_scanned_at": "1970-01-01T00:00:00.000Z",
"scan_duration_ms": 0,
"scanned_configs": 0,
"scanned_by_type": {},
"counts": {
"error": 0,
"warning": 0,
"info": 0
},
"new_since_previous": 0,
"resolved_since_previous": 0,
"last_cleanup_at": "1970-01-01T00:00:00.000Z",
"cleaned_count": 0,
"history": [
{
"scanned_at": "1970-01-01T00:00:00.000Z",
"clean": 0,
"total": 0
}
],
"error": "string",
"findings": [
{
"id": "string",
"code": "broken_reference",
"severity": "error",
"source_type": "string",
"source_id": "string",
"source_title": "string",
"message": "string",
"message_key": "string",
"message_params": {},
"ref_type": "string",
"ref_id": "string",
"ref_title": "string",
"source_link": "string",
"ref_link": "string",
"owner_type": "string",
"owner_id": "string",
"owner_title": "string",
"owner_link": "string",
"path": "string",
"cleanable": true,
"ignored": true,
"ignored_at": "1970-01-01T00:00:00.000Z",
"ignored_by": "string",
"ignored_reason": "string",
"first_seen": "1970-01-01T00:00:00.000Z",
"last_seen": "1970-01-01T00:00:00.000Z"
}
]
}

requestHealthCoverageโ€‹

Send a request for configuration the health check does not cover yet.

POST /v1/configs/health:coverage-request

Request Body (required)

Sample Call

epilot configuration-hub requestHealthCoverage \
-d '{"message":"string"}'

Using stdin pipe:

cat body.json | epilot configuration-hub requestHealthCoverage

With JSONata filter:

epilot configuration-hub requestHealthCoverage --jsonata '$'

startHealthCleanupโ€‹

Remove references that are already inert: dangling $relation entries

POST /v1/configs/health:cleanup

Request Body

Sample Call

epilot configuration-hub startHealthCleanup \
-d '{"finding_ids":["string"]}'

Using stdin pipe:

cat body.json | epilot configuration-hub startHealthCleanup

With JSONata filter:

epilot configuration-hub startHealthCleanup --jsonata '$'

setHealthFindingsIgnoredโ€‹

Acknowledge findings as intentional (or undo that). An ignored

POST /v1/configs/health:ignore

Request Body (required)

Sample Call

epilot configuration-hub setHealthFindingsIgnored \
-d '{"finding_ids":["string"],"ignored":true,"reason":"string"}'

Using stdin pipe:

cat body.json | epilot configuration-hub setHealthFindingsIgnored

With JSONata filter:

epilot configuration-hub setHealthFindingsIgnored --jsonata 'status'
Sample Response
{
"status": "ok",
"count": 0
}

compareConfigsโ€‹

Compare the caller org's configs of a single type against another

POST /v1/configs/compare

Request Body (required)

Sample Call

epilot configuration-hub compareConfigs \
-d '{"source_org_id":"string","source_auth_token":"string","type":"journey"}'

Using stdin pipe:

cat body.json | epilot configuration-hub compareConfigs

With JSONata filter:

epilot configuration-hub compareConfigs --jsonata 'type'
Sample Response
{
"type": "journey",
"label": "string",
"icon": "string",
"rows": [
{
"match_status": "matched",
"current": {
"type": "journey",
"id": "string",
"title": "string",
"updated_at": "1970-01-01T00:00:00.000Z",
"updated_by": "string",
"tags": ["string"],
"aliases": ["string"],
"purposes": ["string"],
"link": "https://example.com/path",
"active": true,
"blueprints": [
{
"id": "string",
"title": "string"
}
],
"metadata": {}
},
"source": {
"type": "journey",
"id": "string",
"title": "string",
"updated_at": "1970-01-01T00:00:00.000Z",
"updated_by": "string",
"tags": ["string"],
"aliases": ["string"],
"purposes": ["string"],
"link": "https://example.com/path",
"active": true,
"blueprints": [
{
"id": "string",
"title": "string"
}
],
"metadata": {}
},
"lineage": {
"direction": "pull",
"last_synced_at": "1970-01-01T00:00:00.000Z",
"last_sync_job_id": "string",
"origin": "string"
}
}
],
"counts": {
"matched": 0,
"only_current": 0,
"only_source": 0
}
}

suggestMatchesโ€‹

Run the sync-grade heuristic match (lookupByHeuristic โ€” name / slug /

POST /v1/configs/compare/suggestions

Request Body (required)

Sample Call

epilot configuration-hub suggestMatches \
-d '{"source_org_id":"string","source_auth_token":"string","type":"journey","source_ids":["string"]}'

Using stdin pipe:

cat body.json | epilot configuration-hub suggestMatches

With JSONata filter:

epilot configuration-hub suggestMatches --jsonata 'type'
Sample Response
{
"type": "journey",
"suggestions": [
{
"source_id": "string",
"candidate": {
"id": "string",
"title": "string"
}
}
]
}

confirmLineageโ€‹

Persist a lineage entry pairing a source-org config with a config in

POST /v1/configs/lineage

Request Body (required)

Sample Call

epilot configuration-hub confirmLineage \
-d '{"type":"journey","source_org_id":"string","source_id":"string","target_id":"string"}'

Using stdin pipe:

cat body.json | epilot configuration-hub confirmLineage

With JSONata filter:

epilot configuration-hub confirmLineage --jsonata 'type'
Sample Response
{
"type": "journey",
"target_org_id": "string",
"source_org_id": "string",
"source_id": "string",
"target_id": "string",
"last_synced_at": "1970-01-01T00:00:00.000Z",
"origin": "string"
}

breakLineageโ€‹

Delete a lineage entry from the caller org's partition (caller as sync

DELETE /v1/configs/lineage

Parameters

NameInTypeRequiredDescription
typequery"journey" | "datasource" | "automation_flow" | "workflow_definition" | "closing_reason" | "flow_template" | "schema" | "emailtemplate" | "product" | "price" | "tax" | "coupon" | "file" | "document_template" | "webhook" | "saved_view" | "dashboard" | "kanban" | "role" | "usergroup" | "validation_rule" | "integration" | "app" | "designbuilder" | "notification_template" | "custom_variable" | "environment_variable" | "taxonomy" | "taxonomy_classification" | "entity_mapping" | "portal_config" | "target" | "product_recommendation" | "access_token" | "email_signature" | "shared_inbox" | "org_setting"YesConfiguration resource type of the lineage entry
source_idquerystringYesSource-org config id the lineage entry is keyed by

Sample Call

epilot configuration-hub breakLineage \
-p type=example \
-p source_id=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot configuration-hub breakLineage -p type=example -p source_id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'deleted'
Sample Response
{
"deleted": true
}

listSyncJobsโ€‹

List sync jobs scoped to the caller's organization, paginated with an opaque

GET /v1/configs/sync-jobs

Parameters

NameInTypeRequiredDescription
cursorquerystringNoOpaque cursor for fetching the next page. Omit for the first page.
sizequerynumberNoNumber of items per page
statusquery"pending" | "in_progress" | "succeeded" | "partial" | "failed" | "cancelled"NoFilter jobs by status

Sample Call

epilot configuration-hub listSyncJobs

With JSONata filter:

epilot configuration-hub listSyncJobs --jsonata 'results[0]'
Sample Response
{
"next_cursor": "string",
"results": [
{
"id": "string",
"name": "string",
"status": "pending",
"direction": "push",
"source_org_id": "string",
"target_org_id": "string",
"dry_run": true,
"counts": {},
"current_phase": "phase_0",
"current_batch": {},
"started_at": "1970-01-01T00:00:00.000Z",
"finished_at": "1970-01-01T00:00:00.000Z",
"health_check": {},
"events": [],
"created_by": "string",
"retry_of": "string",
"retried_by": ["string"],
"plan_only": true,
"plan_summary": {},
"planned_at": "1970-01-01T00:00:00.000Z",
"expires_at": "1970-01-01T00:00:00.000Z",
"applied_from_plan": "string",
"applied_by": ["string"],
"approved_by": "string",
"approved_at": "1970-01-01T00:00:00.000Z",
"approvals": [],
"errors_sample": []
}
]
}

createSyncJobโ€‹

Create a new cross-org sync job. The job is enqueued for asynchronous execution

POST /v1/configs/sync-jobs

Request Body (required)

Sample Call

epilot configuration-hub createSyncJob

With request body:

epilot configuration-hub createSyncJob \
-d '{
"source_org_id": "string",
"target_org_id": "string",
"target_auth_token": "string",
"name": "string",
"dry_run": false,
"include_dependencies": true,
"sync_portal_widgets": true,
"resources": [
{
"type": "string",
"id": "string"
}
]
}'

Using stdin pipe:

cat body.json | epilot configuration-hub createSyncJob

With JSONata filter:

epilot configuration-hub createSyncJob --jsonata 'id'
Sample Response
{
"id": "string",
"name": "string",
"status": "pending",
"direction": "push",
"source_org_id": "string",
"target_org_id": "string",
"dry_run": true,
"counts": {
"total": 0,
"pending": 0,
"in_progress": 0,
"succeeded": 0,
"failed": 0,
"skipped_unchanged": 0
},
"current_phase": "phase_0",
"current_batch": {
"index": 0,
"of": 0,
"level": 0
},
"started_at": "1970-01-01T00:00:00.000Z",
"finished_at": "1970-01-01T00:00:00.000Z",
"health_check": {
"status": "pending",
"counts": {
"error": 0,
"warning": 0,
"info": 0
}
},
"events": [
{
"id": "string",
"kind": "resource",
"seq": 0,
"ts": "1970-01-01T00:00:00.000Z",
"phase": "phase_0",
"type": "string",
"source_id": "string",
"target_id": "string",
"title": "string",
"status": "pending",
"attempt": 0,
"message": "string",
"error": "string",
"dependency": {}
}
],
"created_by": "string",
"retry_of": "string",
"retried_by": ["string"],
"plan_only": true,
"plan_summary": {
"total": 0,
"create": 0,
"update": 0,
"no_change": 0,
"skip": 0,
"failed": 0,
"not_compared": 0
},
"planned_at": "1970-01-01T00:00:00.000Z",
"expires_at": "1970-01-01T00:00:00.000Z",
"applied_from_plan": "string",
"applied_by": ["string"],
"approved_by": "string",
"approved_at": "1970-01-01T00:00:00.000Z",
"approvals": [
{
"job_id": "string",
"approved_by": "string",
"approved_at": "1970-01-01T00:00:00.000Z"
}
],
"errors_sample": [
{
"type": "string",
"source_id": "string",
"error": "string"
}
]
}

getSyncJobโ€‹

Fetch a single sync job by ID. Returns the job header, counts summary,

GET /v1/configs/sync-jobs/{id}

Parameters

NameInTypeRequiredDescription
idpathstringYesSync job ID

Sample Call

epilot configuration-hub getSyncJob \
-p id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot configuration-hub getSyncJob 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot configuration-hub getSyncJob -p id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'id'
Sample Response
{
"id": "string",
"name": "string",
"status": "pending",
"direction": "push",
"source_org_id": "string",
"target_org_id": "string",
"dry_run": true,
"counts": {
"total": 0,
"pending": 0,
"in_progress": 0,
"succeeded": 0,
"failed": 0,
"skipped_unchanged": 0
},
"current_phase": "phase_0",
"current_batch": {
"index": 0,
"of": 0,
"level": 0
},
"started_at": "1970-01-01T00:00:00.000Z",
"finished_at": "1970-01-01T00:00:00.000Z",
"health_check": {
"status": "pending",
"counts": {
"error": 0,
"warning": 0,
"info": 0
}
},
"events": [
{
"id": "string",
"kind": "resource",
"seq": 0,
"ts": "1970-01-01T00:00:00.000Z",
"phase": "phase_0",
"type": "string",
"source_id": "string",
"target_id": "string",
"title": "string",
"status": "pending",
"attempt": 0,
"message": "string",
"error": "string",
"dependency": {}
}
],
"created_by": "string",
"retry_of": "string",
"retried_by": ["string"],
"plan_only": true,
"plan_summary": {
"total": 0,
"create": 0,
"update": 0,
"no_change": 0,
"skip": 0,
"failed": 0,
"not_compared": 0
},
"planned_at": "1970-01-01T00:00:00.000Z",
"expires_at": "1970-01-01T00:00:00.000Z",
"applied_from_plan": "string",
"applied_by": ["string"],
"approved_by": "string",
"approved_at": "1970-01-01T00:00:00.000Z",
"approvals": [
{
"job_id": "string",
"approved_by": "string",
"approved_at": "1970-01-01T00:00:00.000Z"
}
],
"errors_sample": [
{
"type": "string",
"source_id": "string",
"error": "string"
}
]
}

getSyncJobHealthโ€‹

Targeted health check of an applied (non-dry-run) sync job. When the job

GET /v1/configs/sync-jobs/{id}/health

Parameters

NameInTypeRequiredDescription
idpathstringYesSync job ID

Sample Call

epilot configuration-hub getSyncJobHealth \
-p id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot configuration-hub getSyncJobHealth 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot configuration-hub getSyncJobHealth -p id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'status'
Sample Response
{
"status": "pending",
"started_at": "1970-01-01T00:00:00.000Z",
"finished_at": "1970-01-01T00:00:00.000Z",
"scanned": 0,
"counts": {
"error": 0,
"warning": 0,
"info": 0
},
"error": "string",
"findings": [
{
"id": "string",
"code": "broken_reference",
"severity": "error",
"source_type": "string",
"source_id": "string",
"source_title": "string",
"message": "string",
"message_key": "string",
"message_params": {},
"ref_type": "string",
"ref_id": "string",
"ref_title": "string",
"source_link": "string",
"ref_link": "string",
"owner_type": "string",
"owner_id": "string",
"owner_title": "string",
"owner_link": "string",
"path": "string",
"cleanable": true,
"ignored": true,
"ignored_at": "1970-01-01T00:00:00.000Z",
"ignored_by": "string",
"ignored_reason": "string",
"first_seen": "1970-01-01T00:00:00.000Z",
"last_seen": "1970-01-01T00:00:00.000Z"
}
]
}

runSyncJobHealthโ€‹

Start the targeted health check of a finished, applied sync job again:

POST /v1/configs/sync-jobs/{id}/health:run

Parameters

NameInTypeRequiredDescription
idpathstringYesSync job ID

Sample Call

epilot configuration-hub runSyncJobHealth \
-p id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot configuration-hub runSyncJobHealth 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot configuration-hub runSyncJobHealth -p id=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'

retrySyncJobโ€‹

Retry the unresolved resources from a prior sync job: failed rows, plus

POST /v1/configs/sync-jobs/{id}/retry

Parameters

NameInTypeRequiredDescription
idpathstringYesSync job ID

Request Body

Sample Call

epilot configuration-hub retrySyncJob \
-p id=123e4567-e89b-12d3-a456-426614174000 \
-d '{"target_auth_token":"string","resources":[{"type":"string","source_id":"string"}],"payload_overrides":{}}'

Using positional args for path parameters:

epilot configuration-hub retrySyncJob 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot configuration-hub retrySyncJob -p id=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot configuration-hub retrySyncJob -p id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'id'
Sample Response
{
"id": "string",
"name": "string",
"status": "pending",
"direction": "push",
"source_org_id": "string",
"target_org_id": "string",
"dry_run": true,
"counts": {
"total": 0,
"pending": 0,
"in_progress": 0,
"succeeded": 0,
"failed": 0,
"skipped_unchanged": 0
},
"current_phase": "phase_0",
"current_batch": {
"index": 0,
"of": 0,
"level": 0
},
"started_at": "1970-01-01T00:00:00.000Z",
"finished_at": "1970-01-01T00:00:00.000Z",
"health_check": {
"status": "pending",
"counts": {
"error": 0,
"warning": 0,
"info": 0
}
},
"events": [
{
"id": "string",
"kind": "resource",
"seq": 0,
"ts": "1970-01-01T00:00:00.000Z",
"phase": "phase_0",
"type": "string",
"source_id": "string",
"target_id": "string",
"title": "string",
"status": "pending",
"attempt": 0,
"message": "string",
"error": "string",
"dependency": {}
}
],
"created_by": "string",
"retry_of": "string",
"retried_by": ["string"],
"plan_only": true,
"plan_summary": {
"total": 0,
"create": 0,
"update": 0,
"no_change": 0,
"skip": 0,
"failed": 0,
"not_compared": 0
},
"planned_at": "1970-01-01T00:00:00.000Z",
"expires_at": "1970-01-01T00:00:00.000Z",
"applied_from_plan": "string",
"applied_by": ["string"],
"approved_by": "string",
"approved_at": "1970-01-01T00:00:00.000Z",
"approvals": [
{
"job_id": "string",
"approved_by": "string",
"approved_at": "1970-01-01T00:00:00.000Z"
}
],
"errors_sample": [
{
"type": "string",
"source_id": "string",
"error": "string"
}
]
}

planSyncJobRetryโ€‹

Preview what retrySyncJob would re-run for the same resources,

POST /v1/configs/sync-jobs/{id}/retry-plan

Parameters

NameInTypeRequiredDescription
idpathstringYesSync job ID

Request Body

Sample Call

epilot configuration-hub planSyncJobRetry \
-p id=123e4567-e89b-12d3-a456-426614174000 \
-d '{"resources":[{"type":"string","source_id":"string"}]}'

Using positional args for path parameters:

epilot configuration-hub planSyncJobRetry 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot configuration-hub planSyncJobRetry -p id=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot configuration-hub planSyncJobRetry -p id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'selected'
Sample Response
{
"selected": [
{
"type": "string",
"source_id": "string",
"target_id": "string",
"title": "string",
"required_by": {
"type": "string",
"source_id": "string",
"title": "string",
"reason": "typed_reference"
},
"status": "pending",
"phase": "phase_0",
"attempt": 0,
"error": "string",
"updated_at": "1970-01-01T00:00:00.000Z",
"source_link": "string",
"target_link": "string",
"plan": {
"action": "create",
"match": "lineage",
"diff_status": "computed",
"change_count": 0,
"changed_paths": ["string"],
"note": "string",
"depends_on": [
{
"type": "string",
"source_id": "string"
}
]
},
"excluded_from_apply": "unchanged"
}
],
"added_dependencies": [
{
"type": "string",
"source_id": "string",
"target_id": "string",
"title": "string",
"required_by": {
"type": "string",
"source_id": "string",
"title": "string",
"reason": "typed_reference"
},
"status": "pending",
"phase": "phase_0",
"attempt": 0,
"error": "string",
"updated_at": "1970-01-01T00:00:00.000Z",
"source_link": "string",
"target_link": "string",
"plan": {
"action": "create",
"match": "lineage",
"diff_status": "computed",
"change_count": 0,
"changed_paths": ["string"],
"note": "string",
"depends_on": [
{
"type": "string",
"source_id": "string"
}
]
},
"excluded_from_apply": "unchanged"
}
],
"dependency_resolution": "exact"
}

cancelSyncJobโ€‹

Cancel a running sync job. Marks the job cancelled with a finished_at

POST /v1/configs/sync-jobs/{id}/cancel

Parameters

NameInTypeRequiredDescription
idpathstringYesSync job ID

Sample Call

epilot configuration-hub cancelSyncJob \
-p id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot configuration-hub cancelSyncJob 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot configuration-hub cancelSyncJob -p id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'id'
Sample Response
{
"id": "string",
"name": "string",
"status": "pending",
"direction": "push",
"source_org_id": "string",
"target_org_id": "string",
"dry_run": true,
"counts": {
"total": 0,
"pending": 0,
"in_progress": 0,
"succeeded": 0,
"failed": 0,
"skipped_unchanged": 0
},
"current_phase": "phase_0",
"current_batch": {
"index": 0,
"of": 0,
"level": 0
},
"started_at": "1970-01-01T00:00:00.000Z",
"finished_at": "1970-01-01T00:00:00.000Z",
"health_check": {
"status": "pending",
"counts": {
"error": 0,
"warning": 0,
"info": 0
}
},
"events": [
{
"id": "string",
"kind": "resource",
"seq": 0,
"ts": "1970-01-01T00:00:00.000Z",
"phase": "phase_0",
"type": "string",
"source_id": "string",
"target_id": "string",
"title": "string",
"status": "pending",
"attempt": 0,
"message": "string",
"error": "string",
"dependency": {}
}
],
"created_by": "string",
"retry_of": "string",
"retried_by": ["string"],
"plan_only": true,
"plan_summary": {
"total": 0,
"create": 0,
"update": 0,
"no_change": 0,
"skip": 0,
"failed": 0,
"not_compared": 0
},
"planned_at": "1970-01-01T00:00:00.000Z",
"expires_at": "1970-01-01T00:00:00.000Z",
"applied_from_plan": "string",
"applied_by": ["string"],
"approved_by": "string",
"approved_at": "1970-01-01T00:00:00.000Z",
"approvals": [
{
"job_id": "string",
"approved_by": "string",
"approved_at": "1970-01-01T00:00:00.000Z"
}
],
"errors_sample": [
{
"type": "string",
"source_id": "string",
"error": "string"
}
]
}

listSyncJobEventsโ€‹

Full activity log of a sync job, latest first: one event per resource

GET /v1/configs/sync-jobs/{id}/events

Parameters

NameInTypeRequiredDescription
idpathstringYesSync job ID
cursorquerystringNoOpaque cursor for fetching the next page. Omit for the first page.
sizequerynumberNoNumber of events per page
afterquerystringNoOnly return events strictly newer than this event id (max 500,

latest first). truncated: true means more new events existed than were returned โ€” reload from the first page. | | kind | query | string | No | Comma-separated event kinds to return (resource, dependency, step), e.g. dependency,step. Omit for every kind. Applies to pages, after polling and total. |

Sample Call

epilot configuration-hub listSyncJobEvents \
-p id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot configuration-hub listSyncJobEvents 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot configuration-hub listSyncJobEvents -p id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'results[0]'
Sample Response
{
"results": [
{
"id": "string",
"kind": "resource",
"seq": 0,
"ts": "1970-01-01T00:00:00.000Z",
"phase": "phase_0",
"type": "string",
"source_id": "string",
"target_id": "string",
"title": "string",
"status": "pending",
"attempt": 0,
"message": "string",
"error": "string",
"dependency": {
"outcome": "added",
"reason": "typed_reference",
"required_by": {
"type": "string",
"source_id": "string",
"title": "string"
},
"depth": 0
}
}
],
"next_cursor": "string",
"total": 0,
"truncated": true,
"source": "events"
}

listSyncJobResourcesโ€‹

List the per-resource rows for a sync job. Supports filtering by status

GET /v1/configs/sync-jobs/{id}/resources

Parameters

NameInTypeRequiredDescription
idpathstringYesSync job ID
cursorquerystringNoOpaque cursor for fetching the next page. Omit for the first page.
sizequerynumberNoNumber of items per page
statusquery"pending" | "in_progress" | "created" | "patched" | "skipped" | "would_create" | "would_patch" | "would_skip_unchanged" | "would_match_heuristic" | "failed"NoFilter resources by status
typequerystringNoFilter resources by resource type
plan_actionquery"create" | "update" | "no_change" | "skip"NoFilter resources by plan action (plan.action). Only rows of plan

jobs and of jobs applying a plan carry one. |

Sample Call

epilot configuration-hub listSyncJobResources \
-p id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot configuration-hub listSyncJobResources 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot configuration-hub listSyncJobResources -p id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'results[0]'
Sample Response
{
"next_cursor": "string",
"results": [
{
"type": "string",
"source_id": "string",
"target_id": "string",
"title": "string",
"required_by": {
"type": "string",
"source_id": "string",
"title": "string",
"reason": "typed_reference"
},
"status": "pending",
"phase": "phase_0",
"attempt": 0,
"error": "string",
"updated_at": "1970-01-01T00:00:00.000Z",
"source_link": "string",
"target_link": "string",
"plan": {
"action": "create",
"match": "lineage",
"diff_status": "computed",
"change_count": 0,
"changed_paths": ["string"],
"note": "string",
"depends_on": [
{
"type": "string",
"source_id": "string"
}
]
},
"excluded_from_apply": "unchanged"
}
]
}

getSyncPlanโ€‹

Summary of a plan: a dry-run sync job (createSyncJob with

GET /v1/configs/sync-jobs/{id}/plan

Parameters

NameInTypeRequiredDescription
idpathstringYesSync job ID

Sample Call

epilot configuration-hub getSyncPlan \
-p id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot configuration-hub getSyncPlan 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot configuration-hub getSyncPlan -p id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'job_id'
Sample Response
{
"job_id": "string",
"status": "pending",
"ready": true,
"applicable": true,
"expires_at": "1970-01-01T00:00:00.000Z",
"planned_at": "1970-01-01T00:00:00.000Z",
"replanned_at": "1970-01-01T00:00:00.000Z",
"source_org_id": "string",
"target_org_id": "string",
"started_at": "1970-01-01T00:00:00.000Z",
"finished_at": "1970-01-01T00:00:00.000Z",
"summary": {
"total": 0,
"create": 0,
"update": 0,
"no_change": 0,
"skip": 0,
"failed": 0,
"not_compared": 0
},
"by_type": [
{
"total": 0,
"create": 0,
"update": 0,
"no_change": 0,
"skip": 0,
"failed": 0,
"not_compared": 0,
"type": "string"
}
],
"applied_by": ["string"]
}

listSyncPlanDiffsโ€‹

Field-level diffs of a plan, one per planned resource: what the target

GET /v1/configs/sync-jobs/{id}/plan/diffs

Parameters

NameInTypeRequiredDescription
idpathstringYesSync job ID
cursorquerystringNoOpaque cursor for fetching the next page. Omit for the first page.
sizequerynumberNoNumber of diffs per page
typequerystringNoOnly diffs of this resource type
actionquery"create" | "update" | "no_change" | "skip"NoOnly diffs with this plan action

Sample Call

epilot configuration-hub listSyncPlanDiffs \
-p id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot configuration-hub listSyncPlanDiffs 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot configuration-hub listSyncPlanDiffs -p id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'results[0]'
Sample Response
{
"next_cursor": "string",
"results": [
{
"type": "string",
"source_id": "string",
"target_id": "string",
"title": "string",
"action": "create",
"match": "lineage",
"diff_status": "computed",
"change_count": 0,
"changes": [
{
"path": "string",
"kind": "added",
"before": {},
"after": {}
}
],
"truncated": true,
"note": "string",
"planned_at": "1970-01-01T00:00:00.000Z"
}
]
}

getSyncPlanDiffโ€‹

Field-level diff of one planned resource. See listSyncPlanDiffs.

GET /v1/configs/sync-jobs/{id}/plan/diffs/{type}/{source_id}

Parameters

NameInTypeRequiredDescription
idpathstringYesSync job ID
typepathstringYesResource type
source_idpathstringYesSource-org resource id

Sample Call

epilot configuration-hub getSyncPlanDiff \
-p id=123e4567-e89b-12d3-a456-426614174000 \
-p type=example \
-p source_id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot configuration-hub getSyncPlanDiff 123e4567-e89b-12d3-a456-426614174000 example 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot configuration-hub getSyncPlanDiff -p id=123e4567-e89b-12d3-a456-426614174000 -p type=example -p source_id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'type'
Sample Response
{
"type": "string",
"source_id": "string",
"target_id": "string",
"title": "string",
"action": "create",
"match": "lineage",
"diff_status": "computed",
"change_count": 0,
"changes": [
{
"path": "string",
"kind": "added",
"before": {},
"after": {}
}
],
"truncated": true,
"note": "string",
"planned_at": "1970-01-01T00:00:00.000Z"
}

applySyncPlanโ€‹

Run a finished plan for real. Creates a new sync job (it carries

POST /v1/configs/sync-jobs/{id}/plan/apply

Parameters

NameInTypeRequiredDescription
idpathstringYesSync job ID

Request Body (required)

Sample Call

epilot configuration-hub applySyncPlan \
-p id=123e4567-e89b-12d3-a456-426614174000

With request body:

epilot configuration-hub applySyncPlan \
-p id=123e4567-e89b-12d3-a456-426614174000 \
-d '{
"target_auth_token": "string",
"name": "string",
"resources": [
{
"type": "string",
"source_id": "string"
}
],
"exclude": [
{
"type": "string",
"source_id": "string"
}
],
"allow_missing_dependencies": false
}'

Using positional args for path parameters:

epilot configuration-hub applySyncPlan 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot configuration-hub applySyncPlan -p id=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot configuration-hub applySyncPlan -p id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'id'
Sample Response
{
"id": "string",
"name": "string",
"status": "pending",
"direction": "push",
"source_org_id": "string",
"target_org_id": "string",
"dry_run": true,
"counts": {
"total": 0,
"pending": 0,
"in_progress": 0,
"succeeded": 0,
"failed": 0,
"skipped_unchanged": 0
},
"current_phase": "phase_0",
"current_batch": {
"index": 0,
"of": 0,
"level": 0
},
"started_at": "1970-01-01T00:00:00.000Z",
"finished_at": "1970-01-01T00:00:00.000Z",
"health_check": {
"status": "pending",
"counts": {
"error": 0,
"warning": 0,
"info": 0
}
},
"events": [
{
"id": "string",
"kind": "resource",
"seq": 0,
"ts": "1970-01-01T00:00:00.000Z",
"phase": "phase_0",
"type": "string",
"source_id": "string",
"target_id": "string",
"title": "string",
"status": "pending",
"attempt": 0,
"message": "string",
"error": "string",
"dependency": {}
}
],
"created_by": "string",
"retry_of": "string",
"retried_by": ["string"],
"plan_only": true,
"plan_summary": {
"total": 0,
"create": 0,
"update": 0,
"no_change": 0,
"skip": 0,
"failed": 0,
"not_compared": 0
},
"planned_at": "1970-01-01T00:00:00.000Z",
"expires_at": "1970-01-01T00:00:00.000Z",
"applied_from_plan": "string",
"applied_by": ["string"],
"approved_by": "string",
"approved_at": "1970-01-01T00:00:00.000Z",
"approvals": [
{
"job_id": "string",
"approved_by": "string",
"approved_at": "1970-01-01T00:00:00.000Z"
}
],
"errors_sample": [
{
"type": "string",
"source_id": "string",
"error": "string"
}
]
}

replanSyncPlanโ€‹

Plan some rows of a plan again, in place, e.g. after fixing a

POST /v1/configs/sync-jobs/{id}/plan/replan

Parameters

NameInTypeRequiredDescription
idpathstringYesSync job ID

Request Body (required)

Sample Call

epilot configuration-hub replanSyncPlan \
-p id=123e4567-e89b-12d3-a456-426614174000 \
-d '{"target_auth_token":"string","resources":[{"type":"string","source_id":"string"}]}'

Using positional args for path parameters:

epilot configuration-hub replanSyncPlan 123e4567-e89b-12d3-a456-426614174000

Using stdin pipe:

cat body.json | epilot configuration-hub replanSyncPlan -p id=123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot configuration-hub replanSyncPlan -p id=123e4567-e89b-12d3-a456-426614174000 --jsonata '$'

listDeleteJobsโ€‹

List bulk-delete jobs scoped to the caller's organization, paginated

GET /v1/configs/delete-jobs

Parameters

NameInTypeRequiredDescription
cursorquerystringNoOpaque cursor for fetching the next page. Omit for the first page.
sizequerynumberNoNumber of items per page

Sample Call

epilot configuration-hub listDeleteJobs

With JSONata filter:

epilot configuration-hub listDeleteJobs --jsonata 'results[0]'
Sample Response
{
"next_cursor": "string",
"results": [
{
"id": "string",
"name": "string",
"status": "pending",
"org_id": "string",
"counts": {
"total": 0,
"pending": 0,
"in_progress": 0,
"deleted": 0,
"skipped": 0,
"failed": 0
},
"started_at": "1970-01-01T00:00:00.000Z",
"finished_at": "1970-01-01T00:00:00.000Z",
"rebuild_triggered": true
}
]
}

createDeleteJobโ€‹

Create a bulk-delete job for the caller's organization. The selected

POST /v1/configs/delete-jobs

Request Body (required)

Sample Call

epilot configuration-hub createDeleteJob \
-d '{"name":"string","resources":[{"type":"string","id":"string","title":"string"}]}'

Using stdin pipe:

cat body.json | epilot configuration-hub createDeleteJob

With JSONata filter:

epilot configuration-hub createDeleteJob --jsonata 'id'
Sample Response
{
"id": "string",
"name": "string",
"status": "pending",
"org_id": "string",
"counts": {
"total": 0,
"pending": 0,
"in_progress": 0,
"deleted": 0,
"skipped": 0,
"failed": 0
},
"started_at": "1970-01-01T00:00:00.000Z",
"finished_at": "1970-01-01T00:00:00.000Z",
"rebuild_triggered": true
}

getDeleteJobโ€‹

Fetch a single bulk-delete job by ID. Returns the job header and counts

GET /v1/configs/delete-jobs/{id}

Parameters

NameInTypeRequiredDescription
idpathstringYesDelete job ID

Sample Call

epilot configuration-hub getDeleteJob \
-p id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot configuration-hub getDeleteJob 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot configuration-hub getDeleteJob -p id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'id'
Sample Response
{
"id": "string",
"name": "string",
"status": "pending",
"org_id": "string",
"counts": {
"total": 0,
"pending": 0,
"in_progress": 0,
"deleted": 0,
"skipped": 0,
"failed": 0
},
"started_at": "1970-01-01T00:00:00.000Z",
"finished_at": "1970-01-01T00:00:00.000Z",
"rebuild_triggered": true
}

listDeleteJobResourcesโ€‹

List the per-resource rows for a delete job, cursor-paginated. Used by

GET /v1/configs/delete-jobs/{id}/resources

Parameters

NameInTypeRequiredDescription
idpathstringYesDelete job ID
cursorquerystringNoOpaque cursor for fetching the next page. Omit for the first page.
sizequerynumberNoNumber of items per page

Sample Call

epilot configuration-hub listDeleteJobResources \
-p id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot configuration-hub listDeleteJobResources 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot configuration-hub listDeleteJobResources -p id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'results[0]'
Sample Response
{
"next_cursor": "string",
"results": [
{
"type": "string",
"id": "string",
"title": "string",
"status": "pending",
"attempt": 0,
"error": "string",
"updated_at": "1970-01-01T00:00:00.000Z"
}
]
}

rebuildIndexโ€‹

Rebuild the configuration index for the caller's organization.

POST /v1/configs/index:rebuild

Sample Call

epilot configuration-hub rebuildIndex

With JSONata filter:

epilot configuration-hub rebuildIndex --jsonata 'status'
Sample Response
{
"status": "ready",
"last_built_at": "1970-01-01T00:00:00.000Z",
"total_items": 0,
"build_duration_ms": 0,
"failed_types": ["string"]
}

getConfigInventoryโ€‹

Returns a fresh inventory of an org's configuration resources โ€” { type, id } identities only,

GET /v1/configs/inventory

Parameters

NameInTypeRequiredDescription
include_dependency_onlyquerybooleanNoWhen true (default), include dependency-only types (e.g. entity_mapping)

in the inventory in addition to the top-level registered types. |

Sample Call

epilot configuration-hub getConfigInventory

With JSONata filter:

epilot configuration-hub getConfigInventory --jsonata 'inventory_id'
Sample Response
{
"inventory_id": "string",
"org_id": "string",
"indexed_at": "1970-01-01T00:00:00.000Z",
"resources_count": 0,
"resources": [
{
"type": "journey",
"id": "string"
}
],
"skipped_types": [
{
"type": "string",
"reason": "string"
}
]
}

listPreviewsโ€‹

Lists the previews requested from the caller's current org, newest first (max 50).

GET /v1/previews

Sample Call

epilot configuration-hub listPreviews

With JSONata filter:

epilot configuration-hub listPreviews --jsonata 'results[0]'
Sample Response
{
"results": [
{
"id": "string",
"name": "string",
"status": "creating_org",
"source_org_id": "string",
"preview_org_id": "string",
"sync_job_id": "string",
"sync_status": "string",
"requested_by": {
"user_id": "string",
"email": "string"
},
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z",
"error": "string"
}
]
}

createPreviewโ€‹

Starts a preview of the caller's current org (internal callers: the org in x-ivy-org-id,

POST /v1/previews

Request Body

Sample Call

epilot configuration-hub createPreview \
-d '{"name":"string","requester":{"user_id":"string","email":"user@example.com","display_name":"string","language":"de"}}'

Using stdin pipe:

cat body.json | epilot configuration-hub createPreview

With JSONata filter:

epilot configuration-hub createPreview --jsonata '$'

getPreviewโ€‹

Returns a preview requested from the caller's current org, with its progress.

GET /v1/previews/{id}

Parameters

NameInTypeRequiredDescription
idpathstringYes

Sample Call

epilot configuration-hub getPreview \
-p id=123e4567-e89b-12d3-a456-426614174000

Using positional args for path parameters:

epilot configuration-hub getPreview 123e4567-e89b-12d3-a456-426614174000

With JSONata filter:

epilot configuration-hub getPreview -p id=123e4567-e89b-12d3-a456-426614174000 --jsonata 'id'
Sample Response
{
"id": "string",
"name": "string",
"status": "creating_org",
"source_org_id": "string",
"preview_org_id": "string",
"sync_job_id": "string",
"sync_status": "string",
"requested_by": {
"user_id": "string",
"email": "string"
},
"created_at": "1970-01-01T00:00:00.000Z",
"updated_at": "1970-01-01T00:00:00.000Z",
"error": "string"
}