POSTlive

Notify the court of a signed evidence export

Requires the evidence_exporter bearer role and all seven exporter Ed25519 transport-signing headers. This signed mutation does not use Idempotency-Key; it deduplicates by the signed exporter and event identity. When the exporter has an enrolled A-Comm artifact-attestation policy, the receiver also verifies required inline artifact attestations natively and persists the exact verification proof. Transport and artifact keys are separate trust domains. Compatibility alias. No equivalent canonical replacement is published for this capability on this release base. Its compatibility window has not started; keep using this route.

/api/v2/evidence-exports/notificationsnotifyEvidenceExportV2

Authentication and authority

Send one of the allowed bearer credential roles. Alternatives are OR; credentials named within one alternative are AND.

evidenceExporterBearer

Credential bound to one evidence_exporter resource.

Parameters

NameLocationRequirementSchema
content-digest

SHA-256 of the exact request bytes, formatted as an RFC 9530-style binary content digest. It is the final line of the canonical signature input.

headerRequired{"type":"string","pattern":"^sha-256=:[A-Za-z0-9+/]{43}=:$"}
x-pc-event-id

Stable signed event identity used for deduplication.

headerRequired{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,160}$"}
x-pc-event-timestamp

Canonical UTC ISO 8601 instant (the value must equal new Date(value).toISOString()).

headerRequired{"type":"string","format":"date-time","pattern":"^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z$"}
x-pc-key-id

Identifier of the Ed25519 verification key.

headerRequired{"type":"string","pattern":"^[A-Za-z0-9._:-]{1,160}$"}
x-pc-schema-version

Signed body schema version; must equal the body schemaVersion.

headerRequired{"type":"string","const":"evidence-export-notification-v1"}
x-pc-signature-version

Signature protocol version. It is validated as a constant; the canonical input is version-defined and does not include this header or the signature itself.

headerRequired{"type":"string","const":"pc-webhook-ed25519-v1"}
x-pc-signature

Ed25519 signature over the documented canonical input.

headerRequired{"type":"string","pattern":"^ed25519=:[A-Za-z0-9+/]{86}==:$"}

Request body

Required request body.

application/json

{
  "$ref": "#/components/schemas/EvidenceExportNotification",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "schemaVersion",
    "eventId",
    "eventType",
    "occurredAt",
    "exporterId",
    "specVersion",
    "exportId",
    "exportVersion",
    "bundleHash",
    "contentType",
    "byteLength",
    "downloadUrl",
    "downloadExpiresAt",
    "match"
  ],
  "properties": {
    "schemaVersion": {
      "type": "string",
      "const": "evidence-export-notification-v1"
    },
    "eventId": {
      "type": "string",
      "pattern": "^[A-Za-z0-9._:-]{1,160}$"
    },
    "eventType": {
      "type": "string",
      "const": "evidence.bundle.available"
    },
    "occurredAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z$"
    },
    "exporterId": {
      "type": "string",
      "pattern": "^[A-Za-z0-9._:-]{1,200}$"
    },
    "specVersion": {
      "type": "string",
      "pattern": "^[A-Za-z0-9._:-]{1,200}$"
    },
    "exportId": {
      "type": "string",
      "pattern": "^[A-Za-z0-9._:-]{1,200}$"
    },
    "exportVersion": {
      "type": "integer",
      "minimum": 1
    },
    "supersedes": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "exportId",
        "exportVersion",
        "sha256"
      ],
      "properties": {
        "exportId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9._:-]{1,200}$"
        },
        "exportVersion": {
          "type": "integer",
          "minimum": 1
        },
        "sha256": {
          "type": "string",
          "pattern": "^[a-f0-9]{64}$"
        }
      }
    },
    "bundleHash": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "algorithm",
        "value"
      ],
      "properties": {
        "algorithm": {
          "type": "string",
          "const": "sha256"
        },
        "value": {
          "type": "string",
          "pattern": "^[a-f0-9]{64}$"
        }
      }
    },
    "contentType": {
      "type": "string",
      "const": "application/json"
    },
    "byteLength": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10485760
    },
    "downloadUrl": {
      "type": "string",
      "format": "uri",
      "maxLength": 2048,
      "pattern": "^https://(?![^/?#]*@)(?:[A-Za-z0-9](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?\\.)*[A-Za-z](?:[A-Za-z0-9-]{0,61}[A-Za-z0-9])?(?::(?:0|[1-9][0-9]{0,3}|[1-5][0-9]{4}|6[0-4][0-9]{3}|65[0-4][0-9]{2}|655[0-2][0-9]|6553[0-5]))?(?:[/?][^#\\s]*)?$",
      "description": "HTTPS URL with a conventional DNS hostname whose final label begins with an ASCII letter, an optional canonical decimal port from 0 through 65535, and no user information or fragment. IP literals and other WHATWG normalization forms are intentionally outside this conservative published schema; runtime URL parsing remains authoritative."
    },
    "downloadExpiresAt": {
      "type": "string",
      "format": "date-time",
      "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z$"
    },
    "match": {
      "type": "object",
      "additionalProperties": false,
      "minProperties": 1,
      "properties": {
        "externalCaseId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9._:-]{1,200}$"
        },
        "transactionId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9._:-]{1,200}$"
        },
        "merchantId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9._:-]{1,200}$"
        },
        "network": {
          "type": "string",
          "pattern": "^[A-Za-z0-9._:-]{1,200}$"
        },
        "transactionHash": {
          "type": "string",
          "pattern": "^[A-Za-z0-9._:-]{1,200}$"
        }
      }
    },
    "retention": {
      "type": "object",
      "additionalProperties": false,
      "properties": {
        "profileId": {
          "type": "string",
          "pattern": "^[A-Za-z0-9._:-]{1,200}$"
        },
        "sourceRetentionUntil": {
          "type": "string",
          "format": "date-time",
          "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}T[0-9]{2}:[0-9]{2}:[0-9]{2}\\.[0-9]{3}Z$"
        },
        "sourceLegalHoldActive": {
          "type": "boolean"
        }
      }
    }
  }
}

Responses

200

Duplicate event; the original receipt facts are returned with duplicate status.

application/json

{
  "$ref": "#/components/schemas/EvidenceIngestReceiptEnvelope",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "data",
    "requestId"
  ],
  "properties": {
    "data": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "receipt"
      ],
      "properties": {
        "receipt": {
          "$ref": "#/components/schemas/EvidenceIngestReceipt",
          "type": "object",
          "additionalProperties": false,
          "required": [
            "schemaVersion",
            "id",
            "partnerId",
            "exporterId",
            "eventId",
            "exportId",
            "exportVersion",
            "bundleHash",
            "status",
            "receivedAt",
            "verificationStatus"
          ],
          "properties": {
            "schemaVersion": {
              "type": "string",
              "const": "evidence-ingest-receipt-v1"
            },
            "id": {
              "type": "string"
            },
            "partnerId": {
              "type": "string"
            },
            "exporterId": {
              "type": "string"
            },
            "eventId": {
              "type": "string"
            },
            "exportId": {
              "type": "string"
            },
            "exportVersion": {
              "type": "integer",
              "minimum": 1
            },
            "bundleHash": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            },
            "status": {
              "type": "string",
              "enum": [
                "accepted",
                "quarantined",
                "rejected",
                "duplicate"
              ]
            },
            "receivedAt": {
              "type": "string",
              "format": "date-time"
            },
            "verificationStatus": {
              "type": "string",
              "enum": [
                "passed",
                "passed_with_warnings",
                "failed",
                "not_run"
              ]
            },
            "exportRecordId": {
              "type": "string"
            },
            "detailCode": {
              "type": "string",
              "description": "New bundle validation failures use bundle_parse_failed. Historical receipts may contain invalid_notification; they remain unchanged on reads and replay.",
              "enum": [
                "invalid_notification",
                "unregistered_origin",
                "download_expired",
                "invalid_supersession",
                "retention_profile_unavailable",
                "download_failed",
                "download_origin_blocked",
                "download_redirect_refused",
                "download_oversized",
                "content_type_mismatch",
                "byte_length_mismatch",
                "digest_mismatch",
                "bundle_parse_failed",
                "unsupported_case_match",
                "incomplete_case_match",
                "ambiguous_case_match",
                "attestation_missing",
                "attestation_malformed",
                "attestation_coverage_invalid",
                "attestation_key_unknown",
                "attestation_key_unusable",
                "attestation_digest_mismatch",
                "attestation_context_mismatch",
                "attestation_time_invalid",
                "attestation_signature_invalid"
              ]
            },
            "validationError": {
              "type": "object",
              "additionalProperties": false,
              "description": "Optional parser-authored diagnostic for a bundle validation failure. Field paths refer to the outer evidence-bundle-v1 envelope, with $ denoting its root. Contains no rejected values; absent on historical receipts and unrelated failure types.",
              "required": [
                "field",
                "message"
              ],
              "properties": {
                "field": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "message": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 500
                }
              }
            },
            "verificationProfile": {
              "type": "string",
              "const": "acomm-attestation-ed25519-v1"
            },
            "attestationsVerified": {
              "type": "integer",
              "minimum": 1
            },
            "attestationTrustBasis": {
              "type": "string",
              "enum": [
                "synthetic_same_channel",
                "authenticated_out_of_band"
              ]
            }
          }
        }
      }
    },
    "requestId": {
      "type": "string"
    }
  }
}
202

New evidence notification processed.

application/json

{
  "$ref": "#/components/schemas/EvidenceIngestReceiptEnvelope",
  "type": "object",
  "additionalProperties": false,
  "required": [
    "data",
    "requestId"
  ],
  "properties": {
    "data": {
      "type": "object",
      "additionalProperties": false,
      "required": [
        "receipt"
      ],
      "properties": {
        "receipt": {
          "$ref": "#/components/schemas/EvidenceIngestReceipt",
          "type": "object",
          "additionalProperties": false,
          "required": [
            "schemaVersion",
            "id",
            "partnerId",
            "exporterId",
            "eventId",
            "exportId",
            "exportVersion",
            "bundleHash",
            "status",
            "receivedAt",
            "verificationStatus"
          ],
          "properties": {
            "schemaVersion": {
              "type": "string",
              "const": "evidence-ingest-receipt-v1"
            },
            "id": {
              "type": "string"
            },
            "partnerId": {
              "type": "string"
            },
            "exporterId": {
              "type": "string"
            },
            "eventId": {
              "type": "string"
            },
            "exportId": {
              "type": "string"
            },
            "exportVersion": {
              "type": "integer",
              "minimum": 1
            },
            "bundleHash": {
              "type": "string",
              "pattern": "^[a-f0-9]{64}$"
            },
            "status": {
              "type": "string",
              "enum": [
                "accepted",
                "quarantined",
                "rejected",
                "duplicate"
              ]
            },
            "receivedAt": {
              "type": "string",
              "format": "date-time"
            },
            "verificationStatus": {
              "type": "string",
              "enum": [
                "passed",
                "passed_with_warnings",
                "failed",
                "not_run"
              ]
            },
            "exportRecordId": {
              "type": "string"
            },
            "detailCode": {
              "type": "string",
              "description": "New bundle validation failures use bundle_parse_failed. Historical receipts may contain invalid_notification; they remain unchanged on reads and replay.",
              "enum": [
                "invalid_notification",
                "unregistered_origin",
                "download_expired",
                "invalid_supersession",
                "retention_profile_unavailable",
                "download_failed",
                "download_origin_blocked",
                "download_redirect_refused",
                "download_oversized",
                "content_type_mismatch",
                "byte_length_mismatch",
                "digest_mismatch",
                "bundle_parse_failed",
                "unsupported_case_match",
                "incomplete_case_match",
                "ambiguous_case_match",
                "attestation_missing",
                "attestation_malformed",
                "attestation_coverage_invalid",
                "attestation_key_unknown",
                "attestation_key_unusable",
                "attestation_digest_mismatch",
                "attestation_context_mismatch",
                "attestation_time_invalid",
                "attestation_signature_invalid"
              ]
            },
            "validationError": {
              "type": "object",
              "additionalProperties": false,
              "description": "Optional parser-authored diagnostic for a bundle validation failure. Field paths refer to the outer evidence-bundle-v1 envelope, with $ denoting its root. Contains no rejected values; absent on historical receipts and unrelated failure types.",
              "required": [
                "field",
                "message"
              ],
              "properties": {
                "field": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 200
                },
                "message": {
                  "type": "string",
                  "minLength": 1,
                  "maxLength": 500
                }
              }
            },
            "verificationProfile": {
              "type": "string",
              "const": "acomm-attestation-ed25519-v1"
            },
            "attestationsVerified": {
              "type": "integer",
              "minimum": 1
            },
            "attestationTrustBasis": {
              "type": "string",
              "enum": [
                "synthetic_same_channel",
                "authenticated_out_of_band"
              ]
            }
          }
        }
      }
    },
    "requestId": {
      "type": "string"
    }
  }
}
409

The event/export identity conflicted, or the authenticated exporter attestation policy changed during ingest. No receipt, export record, or blob is committed on a policy-fence conflict.

application/problem+json

{
  "$ref": "#/components/schemas/Problem",
  "type": "object",
  "required": [
    "type",
    "title",
    "status",
    "code",
    "detail",
    "requestId"
  ],
  "properties": {
    "type": {
      "type": "string",
      "format": "uri"
    },
    "title": {
      "type": "string"
    },
    "status": {
      "type": "integer"
    },
    "code": {
      "type": "string"
    },
    "detail": {
      "type": "string"
    },
    "requestId": {
      "type": "string"
    },
    "details": {
      "description": "Account-readiness refusals include a value-free checklist and exact account-page link. Other error codes may provide different details.",
      "anyOf": [
        {
          "$ref": "#/components/schemas/AccountReadinessDetails",
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ready",
            "accountSetupUrl",
            "missing"
          ],
          "properties": {
            "ready": {
              "type": "boolean"
            },
            "accountSetupUrl": {
              "type": "string",
              "format": "uri"
            },
            "missing": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/AccountReadinessRequirement",
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "code",
                  "label",
                  "section",
                  "accountUrl"
                ],
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "section": {
                    "type": "string",
                    "enum": [
                      "email",
                      "identity",
                      "legal_documents"
                    ]
                  },
                  "accountUrl": {
                    "type": "string",
                    "format": "uri"
                  }
                }
              }
            }
          }
        },
        {
          "$ref": "#/components/schemas/LegalDocumentsRequiredDetails",
          "type": "object",
          "additionalProperties": false,
          "required": [
            "legalDocumentsUrl"
          ],
          "properties": {
            "legalDocumentsUrl": {
              "type": "string",
              "format": "uri",
              "description": "Absolute account-page URL where the person reviews and accepts the current Terms and Privacy Notice. Uses the configured public application origin. After accepting the documents, retry the original operation."
            },
            "ready": {
              "type": "boolean"
            },
            "accountSetupUrl": {
              "type": "string",
              "format": "uri"
            },
            "missing": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/AccountReadinessRequirement",
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "code",
                  "label",
                  "section",
                  "accountUrl"
                ],
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "section": {
                    "type": "string",
                    "enum": [
                      "email",
                      "identity",
                      "legal_documents"
                    ]
                  },
                  "accountUrl": {
                    "type": "string",
                    "format": "uri"
                  }
                }
              }
            }
          }
        },
        {}
      ]
    }
  }
}
default

Request rejected. Pre-ingest authentication or authorization failures return no evidence receipt or export record.

application/problem+json

{
  "$ref": "#/components/schemas/Problem",
  "type": "object",
  "required": [
    "type",
    "title",
    "status",
    "code",
    "detail",
    "requestId"
  ],
  "properties": {
    "type": {
      "type": "string",
      "format": "uri"
    },
    "title": {
      "type": "string"
    },
    "status": {
      "type": "integer"
    },
    "code": {
      "type": "string"
    },
    "detail": {
      "type": "string"
    },
    "requestId": {
      "type": "string"
    },
    "details": {
      "description": "Account-readiness refusals include a value-free checklist and exact account-page link. Other error codes may provide different details.",
      "anyOf": [
        {
          "$ref": "#/components/schemas/AccountReadinessDetails",
          "type": "object",
          "additionalProperties": false,
          "required": [
            "ready",
            "accountSetupUrl",
            "missing"
          ],
          "properties": {
            "ready": {
              "type": "boolean"
            },
            "accountSetupUrl": {
              "type": "string",
              "format": "uri"
            },
            "missing": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/AccountReadinessRequirement",
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "code",
                  "label",
                  "section",
                  "accountUrl"
                ],
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "section": {
                    "type": "string",
                    "enum": [
                      "email",
                      "identity",
                      "legal_documents"
                    ]
                  },
                  "accountUrl": {
                    "type": "string",
                    "format": "uri"
                  }
                }
              }
            }
          }
        },
        {
          "$ref": "#/components/schemas/LegalDocumentsRequiredDetails",
          "type": "object",
          "additionalProperties": false,
          "required": [
            "legalDocumentsUrl"
          ],
          "properties": {
            "legalDocumentsUrl": {
              "type": "string",
              "format": "uri",
              "description": "Absolute account-page URL where the person reviews and accepts the current Terms and Privacy Notice. Uses the configured public application origin. After accepting the documents, retry the original operation."
            },
            "ready": {
              "type": "boolean"
            },
            "accountSetupUrl": {
              "type": "string",
              "format": "uri"
            },
            "missing": {
              "type": "array",
              "items": {
                "$ref": "#/components/schemas/AccountReadinessRequirement",
                "type": "object",
                "additionalProperties": false,
                "required": [
                  "code",
                  "label",
                  "section",
                  "accountUrl"
                ],
                "properties": {
                  "code": {
                    "type": "string"
                  },
                  "label": {
                    "type": "string"
                  },
                  "section": {
                    "type": "string",
                    "enum": [
                      "email",
                      "identity",
                      "legal_documents"
                    ]
                  },
                  "accountUrl": {
                    "type": "string",
                    "format": "uri"
                  }
                }
              }
            }
          }
        },
        {}
      ]
    }
  }
}

Example response

Successful response

{
  "data": {
    "receipt": {
      "schemaVersion": "evidence-ingest-receipt-v1",
      "id": "id_test",
      "partnerId": "partner_test_123",
      "exporterId": "exporterId_test",
      "eventId": "event_test_123",
      "exportId": "exportId_test",
      "exportVersion": 1,
      "bundleHash": "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa",
      "status": "accepted",
      "receivedAt": "2026-08-09T12:00:00.000Z",
      "verificationStatus": "passed"
    }
  },
  "requestId": "requestId_test"
}

Errors

Read the response status and stable error code. See errors and rate limits for recovery. Refresh the resource before resolving a state or digest conflict.

Idempotency and retries

  • For throttling, honor Retry-After when present. Back off on retryable server failures.
  • The request is accepted only when its credential, authority, case state, and resource preconditions are satisfied.