GET /{o}/{p}/import-sourcesList import sources
List registered cross-source drift import sources for this project.
Auth: Bearer token required · Permission:
data:read
Path parameters
| Name | Type | Description |
|---|---|---|
o | string | |
p | string |
Responses
| Status | Description | Schema |
|---|---|---|
200 | Import sources | ImportSourceList |
POST /{o}/{p}/import-sourcesRegister (or refresh) an import source
Idempotent registration keyed on (project, env, uri). Returns 201 for a new source, 200 when refreshing an existing one.
Auth: Bearer token required · Permission:
data:write
Path parameters
| Name | Type | Description |
|---|---|---|
o | string | |
p | string |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
envName | string | (required) |
sourceKind | tf-state | atmos-manifests | (required) |
sourceUri | string | (required) |
reconciliationPolicy | auto-update | human-approval |
Responses
| Status | Description | Schema |
|---|---|---|
200 | Refreshed existing import source | ImportSource |
201 | Registered new import source | ImportSource |
400 | Environment not found | Error |
GET /{o}/{p}/import-sources/{id}/driftGet drift summary for an import source
Per-entity drift status and pending proposals for the entities synced from this source.
Auth: Bearer token required · Permission:
data:read
Path parameters
| Name | Type | Description |
|---|---|---|
o | string | |
p | string | |
id | string |
Responses
| Status | Description | Schema |
|---|---|---|
200 | Drift summary | ImportSourceDrift |
404 | Import source not found | Error |
GET /{o}/{p}/import-sources/{id}Get an import source by id
Auth: Bearer token required · Permission:
data:read
Path parameters
| Name | Type | Description |
|---|---|---|
o | string | |
p | string | |
id | string |
Responses
| Status | Description | Schema |
|---|---|---|
200 | The import source | ImportSource |
404 | Import source not found | Error |
POST /{o}/{p}/import-sources/{id}/rescanRescan an import source
Reconcile the source's declarations against the catalog. Auto-update applies directly; human-approval creates drift proposals for existing entities.
Auth: Bearer token required · Permission:
data:write
Path parameters
| Name | Type | Description |
|---|---|---|
o | string | |
p | string | |
id | string |
Request body (application/json)
| Field | Type | Description |
|---|---|---|
envName | string | (required) |
items | object | object | object | object | object | object | object[] | (required) |
deletions | object[] |
Responses
| Status | Description | Schema |
|---|---|---|
200 | Rescan result | ImportSourceRescanResult |
400 | Environment not found | Error |
404 | Import source not found | Error |
POST /{o}/{p}/import-sources/{id}/drift-proposals/{proposalId}/approveApprove a drift proposal
Apply the proposed changes to the target entity and mark the proposal approved.
Auth: Bearer token required · Permission:
data:write
Path parameters
| Name | Type | Description |
|---|---|---|
o | string | |
p | string | |
id | string | |
proposalId | string |
Responses
| Status | Description | Schema |
|---|---|---|
200 | Approved drift proposal | DriftProposal |
404 | Import source or proposal not found | Error |
409 | Proposal already decided | Error |
POST /{o}/{p}/import-sources/{id}/drift-proposals/{proposalId}/rejectReject a drift proposal
Mark the proposal rejected without changing the target entity.
Auth: Bearer token required · Permission:
data:write
Path parameters
| Name | Type | Description |
|---|---|---|
o | string | |
p | string | |
id | string | |
proposalId | string |
Responses
| Status | Description | Schema |
|---|---|---|
200 | Rejected drift proposal | DriftProposal |
404 | Import source or proposal not found | Error |
409 | Proposal already decided | Error |
DriftProposal| Field | Type | Description |
|---|---|---|
id | string(uuid) | (required) |
importSourceId | string(uuid) | (required) |
projectId | string,null | (required) |
envId | string(uuid) | (required) |
entityId | string(uuid) | (required) |
proposedChanges | object | |
status | string | (required) |
decidedAt | string | string | null | (required) |
decidedBy | string,null | (required) |
Error| Field | Type | Description |
|---|---|---|
error | string | (required) |
code | string |
ImportSource| Field | Type | Description |
|---|---|---|
id | string(uuid) | (required) |
projectId | string,null | (required) |
envId | string(uuid) | (required) |
sourceKind | tf-state | atmos-manifests | (required) |
sourceUri | string | (required) |
reconciliationPolicy | auto-update | human-approval | (required) |
lastScannedAt | string | string | null | (required) |
lastScanStatus | string,null | (required) |
lastScanSummary | null | |
createdAt | string | string | (required) |
updatedAt | string | string | (required) |
ImportSourceDrift| Field | Type | Description |
|---|---|---|
source | ImportSource | (required) |
totals | object | (required) |
entities | object[] | (required) |
pendingProposals | object[] | (required) |
ImportSourceListType: ImportSource[]
ImportSourceRescanResult| Field | Type | Description |
|---|---|---|
scan | object | (required) |
lastScannedAt | string | (required) |
lastScanStatus | string | (required) |