pcc_capture_upload
Upload a capture (photo / video / audio / sensor clip) with its CaptureManifest for G1..G6 verification. Bytes are base64-encoded inline; optional base64 C2PA manifest bytes can be supplied for CC3+ claims. The server runs the 6-gate CaptureVerifier and persists a PASS/PARTIAL/FAIL verdict. Returns {verdictId, verdict, verifiedClass, gatesPassed, gatesFailed, warnings, anchorCandidate, captureHash, manifestHash}.
Input Schema
| Name | Required | Description | Default |
|---|---|---|---|
| jobId | No | Job ID for telemetry binding. Falls back to manifest.jobId if omitted. | |
| manifest | Yes | CaptureManifest — ALCOA+-ready metadata: class, declaredAt (ISO-8601), deviceFingerprint, mediaHash (sha256:<hex>), optional challengeId. See CaptureManifestSchema in @pcc/spec. | |
| operatorId | No | Explicit operator ID. Falls back to the authenticated session userId. | |
| challengeId | No | Challenge UUID to re-bind to the in-memory challenge cache (G3 freshness gate). | |
| submittedAt | No | Client-submitted timestamp (epoch ms). Used in drift detection. | |
| visualNonceEcho | No | The visual nonce value the operator rendered in-scene (QR payload, audio tone id, etc.). | |
| c2paManifestBase64 | No | Optional base64-encoded C2PA manifest JUMBF bytes. Required when manifest.class >= CC3. | |
| captureBytesBase64 | Yes | Base64-encoded capture bytes (image / video / audio / sensor clip). Hash must match manifest.mediaHash. |