Desvy SPP2 PlatformSemantic Evidence Infrastructure

Verify API

POST /api/v1/verify — scope required: verify:write

{
  "proposition_subject": "string, required",
  "boundary_scope": "string, optional",
  "application_id": "uuid, optional",
  "correlation_id": "string, optional -- generated if omitted",
  "evidence": [
    {"object_value": "string", "source": "string", "verification_status": "unverified|verified|disputed"}
  ],
  "invoke_primewave": false,
  "invoke_peip": false
}

Response:

{
  "verification_id": "uuid", "receipt_id": "uuid", "correlation_id": "string",
  "commercial_verdict": "SUPPORTED | UNSUPPORTED | INSUFFICIENT",
  "engine_state": "the raw underlying state",
  "can_assert": true,
  "provenance": {"evidence_count": 1, "independent_corroborator_count": 1},
  "primewave": {"invoked": false, "native_verdict": null, "agreement_with_spp": null},
  "peip": {"invoked": false, "native_verdict": null, "agreement_with_spp": null},
  "latency_ms": 0.6, "engine_version": "2.0.0", "contract_version": "2.0.0"
}

The commercial verdict is a stable, simplified taxonomy. The engine state field carries the underlying vocabulary alongside it — neither ever silently overrides the other. See Errors for the engine-failure shape.

↑