Skip to main content

Scout API and Integration Reference

Use the product UI for human decisions and the REST API for controlled automation. The OpenAPI document for the deployed environment defines the exact fields and request formats; this page is intended for customer integration teams that already understand the operating workflow.

Authentication and Scope

  • Use the platform authentication flow and an account in the intended tenant.
  • Never accept a tenant ID from an untrusted caller as an authorization decision.
  • Scout endpoints require the matching scout.* permission.
  • Direct Harness API reads require platform.harness.read.
  • Keep service-account credentials in the platform secret system; do not embed them in scripts or evidence artifacts.

Examples below assume:

export BASE_URL='https://your-factverse-host'
export ACCESS_TOKEN='<short-lived token>'

Prerequisites and Inputs

Obtain an account in the intended tenant, the minimum permission for each operation, published requirement and scope identities, and the current Mission or contract IDs. Automation must preserve returned snapshot, row, source, Twin, version, binding, installation, and result identifiers; names alone are not stable integration inputs.

Implemented Scout Endpoints

MethodEndpointPermissionPurpose
POST/api/v1/scout/missionsscout.writeCreate a Mission and bind a governed snapshot.
GET/api/v1/scout/missionsscout.readFilter and page Missions.
GET/api/v1/scout/missions/{missionId}scout.readRead Mission summary and next action.
POST/api/v1/scout/missions/{missionId}/snapshotscout.writeAppend a refreshed snapshot binding.
POST/api/v1/scout/missions/{missionId}/discoveryscout.writeStart discovery when the snapshot is admissible.
GET/api/v1/scout/missions/{missionId}/coveragescout.readRead frozen coverage with filters and pagination.
GET/api/v1/scout/missions/{missionId}/coverage/{rowKey}scout.readRead one frozen coverage row.
GET/api/v1/scout/missions/{missionId}/workbenchscout.readList binding candidates.
POST/api/v1/scout/missions/{missionId}/workbench/candidatesscout.writeCreate a candidate against a frozen row.
POST/api/v1/scout/missions/{missionId}/workbench/candidates/{candidateId}/decisionscout.writeAccept or reject with a reason and expected version.
GET/api/v1/scout/contractsscout.readList IDBC contracts.
GET/api/v1/scout/contracts/{contractId}scout.readRead versions and audit.
POST/api/v1/scout/contracts/{contractId}/versions/{version}/shadowscout.writeMove DRAFT to SHADOW.
POST/api/v1/scout/contracts/{contractId}/versions/{version}/approvescout.approveMove SHADOW to APPROVED.
POST/api/v1/scout/contracts/{contractId}/versions/{version}/deployscout.deployMove APPROVED to DEPLOYED.
GET/api/v1/scout/missions/{missionId}/runtime-evidencescout.readReconcile deployed runtime evidence.

Platform Harness Endpoints

MethodEndpointPurpose
GET/api/v1/platform/harness/v1/capabilitiesDiscover supported snapshot components and limits.
POST/api/v1/platform/harness/v1/snapshotsCreate or resolve an authorized immutable snapshot.
GET/api/v1/platform/harness/v1/snapshots/{snapshotId}Read the frozen manifest.
GET/api/v1/platform/harness/v1/snapshots/{snapshotId}/components/{component}Page one frozen component.

Scout consumes Harness as a platform capability. Do not create a second Scout-private context assembler.

Canonical Automation Sequence

create Mission
-> read Mission and frozen snapshot
-> read Coverage
-> create candidate
-> decide candidate
-> read contract
-> Shadow
-> approve
-> deploy
-> read Runtime Evidence

Reconcile the same Mission, snapshot, row, candidate, contract/version, source, Twin, binding, installation, consumption-evidence, and result IDs. Route success alone is not completion evidence.

Idempotency and Concurrency

Mutation endpoints that create immutable workflow receipts use an Idempotency-Key UUID. Reuse the same key only when retrying the same logical request.

curl -fsS -X POST "$BASE_URL/api/v1/scout/missions/$MISSION_ID/snapshot" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-H "Idempotency-Key: $IDEMPOTENCY_KEY"

Candidate decisions and contract transitions also carry expectedVersion. A conflict means the record changed; reload and review before issuing a new command.

Pagination and Frozen Reads

List and coverage endpoints use zero-based API pages and explicit size. Preserve returned total/page metadata. Do not assemble a supposedly frozen view by mixing pages from different snapshot IDs or source versions.

Error Handling

ConditionIntegration response
401Refresh authentication; do not retry indefinitely.
403Validate entitlement, module, tenant, and permission.
404Validate tenant-scoped ID and route. Do not enumerate other tenants.
409 or version conflictReload current state and re-review.
Stale/rejected snapshotStop the mutation sequence and resolve the named evidence issue.
429Respect the server window and back off.
5xxCapture trace ID and first broken stage; retry only safe idempotent operations.

Integration Boundaries

  • DFS owns connectors, source contracts, source points, Mapping V2, and native point bindings.
  • Digital Twin owns Twin and schema/attribute identity.
  • ClickHouse routing owns canonical time-series reads.
  • Predictive Maintenance owns installation and consumer result semantics.
  • Scout owns Mission, frozen coverage, binding decision, IDBC lifecycle, and cross-stage evidence.

The current release does not provide a public Scout MCP toolset or signed external snapshot export. Use only the endpoints published in the OpenAPI document for your environment.