Connector Sync API: schemas

The request and response bodies of the operations in this API.

AuthoriseSyncScheduleDto

PropertyTypeRequiredDescription
connectionIdstringyesThe connection (integration) the project's binding of this adapter kind uses. authorization-api refuses it unless the project is bound to it.

ConfirmMappingsDto

PropertyTypeRequiredDescription
confirmedMappingsarray of SyncMappingInputDtoyes
excludedResourcesarray of stringnoExternal resource IDs to exclude

ConfirmMappingsResponseDto

PropertyTypeRequiredDescription
mappingCountnumberyes
syncConfigIdstringno

ConfirmMappingsResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataConfirmMappingsResponseDtoyes

CreateMigrationPlanDto

PropertyTypeRequiredDescription
adapterKeySyncAdapterKeyyes
connectionIdstringyesThe connection whose provider the plan scans.
directionone of "export", "import", "merge"noexport = internal→external, import = external→internal, merge = both directions
modeone of "switch_only", "migrate_and_switch", "clone_and_sync"no
sourceProviderstringyesSource provider identifier
targetProviderstringyesTarget provider identifier

CreateSyncConfigDto

PropertyTypeRequiredDescription
adapterKeyone of "DOCUMENTATION", "TRACKER"yesAdapter kind
conflictStrategyone of "INTERNAL_WINS", "EXTERNAL_WINS", "NEWEST_WINS", "MANUAL"noConflict resolution strategy
directionone of "PUSH", "PULL", "BIDIRECTIONAL"noSync direction
syncIntervalMsnumbernoSync interval in milliseconds

ExecuteSyncDto

PropertyTypeRequiredDescription
adapterKeyone of "DOCUMENTATION", "TRACKER"yesAdapter kind to sync
connectionIdstringnoThe connection to sync. Defaults to the one the schedule's authority records.

ExternalResourceDto

PropertyTypeRequiredDescription
childrenarray of ExternalResourceDtonoChild resources
idstringyes
metadataobjectnoExtra metadata (labels, version, etc.)
pathstringnoHierarchical path
titlestringyes
typestringyesResource type

ExternalResourceDtoDataArrayEnvelope

PropertyTypeRequiredDescription
dataarray of ExternalResourceDtoyes

GenerateMappingDto

PropertyTypeRequiredDescription
projectContextMappingProjectContextDtono

MappingProjectContextDto

PropertyTypeRequiredDescription
descriptionstringno
namestringno
tagsarray of stringno

MigrationDecisionDto

PropertyTypeRequiredDescription
deepLinkstring or nullyesDeep link to the ask in the Decisions queue, or null.
idstringyesDecision id.
outcomestring or nullyesSettled outcome, or null while the ask is still answerable.
settledOptionKeystring or nullyesThe option key that settled it, or null.
statusstringyesThe decision's lifecycle state, in decision-api's vocabulary.
titlestringyesHuman-readable title of the ask.

MigrationJobDetailDto

PropertyTypeRequiredDescription
adapterKeySyncAdapterKeyyes
completedAtstring or nullyesWhen execution finished, ISO-8601, or null.
createdAtstringyesWhen the plan was created, ISO-8601.
createdBystringyesActor that planned the migration.
decisionIdstring or nullyesThe decision that gates this job, or null before the ask has been opened. Always PRESENT — null is the value, not an absence.
directionstringyesOne of export | import | merge. export is internal→external, import external→internal, merge both. Typed as a string for the same reason as mode.
errorLogobject or nullyesWhy the job FAILED, or null. Present on the summary because it is the reason a status is FAILED and it is bounded.
failedItemsnumberyes
idstringyesMigration job id.
migratedItemsnumberyes
modestringyesOne of switch_only | migrate_and_switch | clone_and_sync. Typed as a string because the column is an open String, not a Prisma enum — see the note at the top of this file.
orgIdstringyes
planJsonobject or nullyesPreview of what the plan scan found: { totalItems, items[] }, each item an identity { id, type } only; titles stay in the source system. Shaped by the SOURCE system, so it is published as an open object rather than a typed one. Null before a scan has run.
projectIdstringyes
sourceProviderstringyesSource provider identifier.
startedAtstring or nullyesWhen execution began, ISO-8601, or null.
statusMigrationJobStatusyes
targetProviderstringyesTarget provider identifier.
totalItemsnumberyesItems the plan scan found.

MigrationJobDetailDtoDataEnvelope

PropertyTypeRequiredDescription
dataMigrationJobDetailDtoyes

MigrationJobResponseDto

PropertyTypeRequiredDescription
adapterKeySyncAdapterKeyyes
completedAtstring or nullyesWhen execution finished, ISO-8601, or null.
createdAtstringyesWhen the plan was created, ISO-8601.
createdBystringyesActor that planned the migration.
decisionIdstring or nullyesThe decision that gates this job, or null before the ask has been opened. Always PRESENT — null is the value, not an absence.
directionstringyesOne of export | import | merge. export is internal→external, import external→internal, merge both. Typed as a string for the same reason as mode.
errorLogobject or nullyesWhy the job FAILED, or null. Present on the summary because it is the reason a status is FAILED and it is bounded.
failedItemsnumberyes
idstringyesMigration job id.
migratedItemsnumberyes
modestringyesOne of switch_only | migrate_and_switch | clone_and_sync. Typed as a string because the column is an open String, not a Prisma enum — see the note at the top of this file.
orgIdstringyes
projectIdstringyes
sourceProviderstringyesSource provider identifier.
startedAtstring or nullyesWhen execution began, ISO-8601, or null.
statusMigrationJobStatusyes
targetProviderstringyesTarget provider identifier.
totalItemsnumberyesItems the plan scan found.

MigrationJobResponseDtoDataArrayEnvelope

PropertyTypeRequiredDescription
dataarray of MigrationJobResponseDtoyes

MigrationJobStatus

Type: one of "PLANNING", "PENDING_CONFIRMATION", "CONFIRMED", "RUNNING", "COMPLETED", "FAILED", "CANCELLED"

MigrationStatusDto

PropertyTypeRequiredDescription
completedAtstring or nullyesWhen execution finished, ISO-8601, or null.
decisionMigrationDecisionDto or nullyesThe ask, surfaced where its RAISER can see it. PENDING_CONFIRMATION on its own tells an operator that something is waiting and nothing about what — and the person most likely to be watching is barred from answering (selfAnswerAllowed: false) and is therefore filtered out of the decisions queue. Null when no ask has been opened, or when decision-api has no record for this job.
failedItemsnumberyes
idstringyesMigration job id.
migratedItemsnumberyes
progressnumberyesPercent of totalItems migrated, rounded. 0 when the plan is empty.
startedAtstring or nullyesWhen execution began, ISO-8601, or null.
statusMigrationJobStatusyes
totalItemsnumberyes

MigrationStatusDtoDataEnvelope

PropertyTypeRequiredDescription
dataMigrationStatusDtoyes

ProblemActionableBy

Who can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed.

Type: one of "user", "org-admin", "platform", "none"

ProblemDetailsDto

RFC 9457 problem document. The declared members are the reserved core; extension members are TOP-LEVEL and OPEN, owned by the refusing plane.

PropertyTypeRequiredDescription
actionableByProblemActionableBynoWho can act on this refusal: user (correct the input, sign in), org-admin (an administrator of the organisation), platform (the operators of this installation), none (nobody — it cannot succeed). ABSENT when not known; never guessed.
codestringyesSCREAMING_SNAKE_CASE. The machine-branchable refusal, and the value a policy rule, a retry predicate and a UI branch all name.
detailstringnoHuman-readable and specific to THIS occurrence.
errorsarray of ProblemFieldIssueDtonoField-level issues, when the refusal is about the request body.
instancestringnoURI reference identifying the occurrence — a request path, a run, a row.
paramsmap of string or number or booleannoSafe i18n interpolation values for the message keyed by code — typed and allowlisted per code by its declaration. Never server-authored copy, never internal diagnostics.
retryProblemRetrynoWhat a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known.
statusnumberyesThe HTTP status code, repeated in the body so a logged document is self-contained.
titlestringyesShort, human-readable, and STABLE for a given type. Never per-occurrence — that is detail.
traceIdstringnoW3C trace-context trace-id, present when the caller sent a traceparent. Omitted rather than invented when it did not.
typestringyesAbsolute URI identifying the refusal TYPE. Derived one-to-one from code, so a caller may branch on either and can never be told two different things. Never about:blank.

ProblemFieldIssueDto

PropertyTypeRequiredDescription
codestringnoSCREAMING_SNAKE_CASE code of THIS issue, for a frontend i18n key. Present when the issue was minted by a declared problem.
detailstringyesProse for logs and developers. A frontend localises from code + params instead.
paramsmap of string or number or booleannoSafe i18n interpolation values for this issue's code.
pointerstringyesRFC 6901 JSON Pointer into the request body. Root is "/".

ProblemRetry

What a retry can achieve: transient (later, unchanged), after-change (only after someone changes something), never (a defect until a fixed version ships). ABSENT when not known.

Type: one of "transient", "after-change", "never"

SyncAdapterKey

Type: one of "DOCUMENTATION", "TRACKER"

SyncAnalysisResponseDto

PropertyTypeRequiredDescription
adapterKeystringyes
ambiguitiesarray of object or nullnoResources that could not be auto-mapped
connectionIdstringyes
createdAtstringyes
errorCodestring or nullno
errorMessagestring or nullno
idstringyes
mappingProposalarray of object or nullnoProposed internal ↔ external mapping
orgIdstringyes
projectIdstringyes
statusone of "SCANNING", "COMPLETED", "FAILED"yes
updatedAtstringyes

SyncAnalysisResponseDtoDataArrayEnvelope

PropertyTypeRequiredDescription
dataarray of SyncAnalysisResponseDtoyes

SyncAnalysisResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataSyncAnalysisResponseDtoyes

SyncAuthorityDto

PropertyTypeRequiredDescription
connectionIdstring or nullnoThe connection the authority is for.
ownerIdstring or nullno
ownerKindone of "USER", "ORG" or nullno
stateone of "not_required", "required", "unprovisioned", "held", "ended"yes
statusLinestring or nullnoThe status line: "authority currently unavailable: <owner> lacks <right> on <scope>" after a denial, or why an ended authority stopped. Cleared by the next successful run.
statusLineAtstring or nullno

SyncConfigResponseDto

PropertyTypeRequiredDescription
adapterKeyone of "DOCUMENTATION", "TRACKER"yes
authoritySyncAuthorityDtoyes
conflictStrategyone of "INTERNAL_WINS", "EXTERNAL_WINS", "NEWEST_WINS", "MANUAL"yes
createdAtstringyes
directionone of "PUSH", "PULL", "BIDIRECTIONAL"yes
enabledbooleanyes
idstringyes
lastSyncAtstring or nullno
orgIdstringyes
pausedbooleanyes
projectIdstringyes
syncIntervalMsnumberyes
updatedAtstringyes

SyncConfigResponseDtoDataArrayEnvelope

PropertyTypeRequiredDescription
dataarray of SyncConfigResponseDtoyes

SyncConfigResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataSyncConfigResponseDtoyes

SyncConfigStatusDto

PropertyTypeRequiredDescription
configSyncConfigResponseDtoyes
latestExecutionSyncExecutionSummaryDto or nullno

SyncExecutionResponseDto

PropertyTypeRequiredDescription
executionIdstringyes
itemsFailednumberyes
itemsProcessednumberyes
itemsSkippednumberyes
statusone of "RUNNING", "COMPLETED", "PARTIAL", "FAILED"yes

SyncExecutionResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataSyncExecutionResponseDtoyes

SyncExecutionSummaryDto

PropertyTypeRequiredDescription
completedAtstring or nullno
errorCodestring or nullnoDURABLE_DELEGATION_AUTHORITY_UNAVAILABLE (denied: the next run may succeed), DURABLE_DELEGATION_ENDED (ended: needs authorising again), or another failure code.
errorSummarystring or nullno
idstringyes
itemsFailednumberyes
itemsProcessednumberyes
itemsSkippednumberyes
startedAtstringyes
statusone of "RUNNING", "COMPLETED", "PARTIAL", "FAILED"yes
triggerone of "MANUAL", "SCHEDULED"yes

SyncMappingInputDto

PropertyTypeRequiredDescription
externalIdstringyesExternal resource ID
internalIdstringyesInternal resource ID
itemTypestringyesItem type (kb_page, kb_space, artifact, etc.)

SyncStatusResponseDto

PropertyTypeRequiredDescription
configsarray of SyncConfigStatusDtoyes
mappingStatsmap of numberyesMapping counts by sync status, across the project.

SyncStatusResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataSyncStatusResponseDtoyes

TriggerAnalysisDto

PropertyTypeRequiredDescription
connectionIdstringyesThe connection the project's documentation binding uses.

TriggerAnalysisResponseDto

PropertyTypeRequiredDescription
analysisIdstringyes
statusone of "SCANNING", "COMPLETED", "FAILED"yes

TriggerAnalysisResponseDtoDataEnvelope

PropertyTypeRequiredDescription
dataTriggerAnalysisResponseDtoyes

UpdateSyncConfigDto

PropertyTypeRequiredDescription
conflictStrategyone of "INTERNAL_WINS", "EXTERNAL_WINS", "NEWEST_WINS", "MANUAL"no
directionone of "PUSH", "PULL", "BIDIRECTIONAL"noChanging the direction changes what the schedule invokes; a held authorisation that does not lend exactly that is revoked and the schedule needs authorising again.
enabledbooleanno
syncIntervalMsnumberno