ImportSources


GET /{o}/{p}/import-sources

List import sources

List registered cross-source drift import sources for this project.

Auth: Bearer token required · Permission: data:read

Path parameters

NameTypeDescription
ostring
pstring

Responses

StatusDescriptionSchema
200Import sourcesImportSourceList

POST /{o}/{p}/import-sources

Register (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

NameTypeDescription
ostring
pstring

Request body (application/json)

FieldTypeDescription
envNamestring(required)
sourceKindtf-state | atmos-manifests(required)
sourceUristring(required)
reconciliationPolicyauto-update | human-approval

Responses

StatusDescriptionSchema
200Refreshed existing import sourceImportSource
201Registered new import sourceImportSource
400Environment not foundError

GET /{o}/{p}/import-sources/{id}/drift

Get 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

NameTypeDescription
ostring
pstring
idstring

Responses

StatusDescriptionSchema
200Drift summaryImportSourceDrift
404Import source not foundError

GET /{o}/{p}/import-sources/{id}

Get an import source by id

Auth: Bearer token required · Permission: data:read

Path parameters

NameTypeDescription
ostring
pstring
idstring

Responses

StatusDescriptionSchema
200The import sourceImportSource
404Import source not foundError

POST /{o}/{p}/import-sources/{id}/rescan

Rescan 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

NameTypeDescription
ostring
pstring
idstring

Request body (application/json)

FieldTypeDescription
envNamestring(required)
itemsobject | object | object | object | object | object | object[](required)
deletionsobject[]

Responses

StatusDescriptionSchema
200Rescan resultImportSourceRescanResult
400Environment not foundError
404Import source not foundError

POST /{o}/{p}/import-sources/{id}/drift-proposals/{proposalId}/approve

Approve 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

NameTypeDescription
ostring
pstring
idstring
proposalIdstring

Responses

StatusDescriptionSchema
200Approved drift proposalDriftProposal
404Import source or proposal not foundError
409Proposal already decidedError

POST /{o}/{p}/import-sources/{id}/drift-proposals/{proposalId}/reject

Reject a drift proposal

Mark the proposal rejected without changing the target entity.

Auth: Bearer token required · Permission: data:write

Path parameters

NameTypeDescription
ostring
pstring
idstring
proposalIdstring

Responses

StatusDescriptionSchema
200Rejected drift proposalDriftProposal
404Import source or proposal not foundError
409Proposal already decidedError

Schemas

DriftProposal

FieldTypeDescription
idstring(uuid)(required)
importSourceIdstring(uuid)(required)
projectIdstring,null(required)
envIdstring(uuid)(required)
entityIdstring(uuid)(required)
proposedChangesobject
statusstring(required)
decidedAtstring | string | null(required)
decidedBystring,null(required)

Error

FieldTypeDescription
errorstring(required)
codestring

ImportSource

FieldTypeDescription
idstring(uuid)(required)
projectIdstring,null(required)
envIdstring(uuid)(required)
sourceKindtf-state | atmos-manifests(required)
sourceUristring(required)
reconciliationPolicyauto-update | human-approval(required)
lastScannedAtstring | string | null(required)
lastScanStatusstring,null(required)
lastScanSummarynull
createdAtstring | string(required)
updatedAtstring | string(required)

ImportSourceDrift

FieldTypeDescription
sourceImportSource(required)
totalsobject(required)
entitiesobject[](required)
pendingProposalsobject[](required)

ImportSourceList

Type: ImportSource[]

ImportSourceRescanResult

FieldTypeDescription
scanobject(required)
lastScannedAtstring(required)
lastScanStatusstring(required)