ReviewCampaignExport
Phase 8: one requested campaign evidence export (async NDJSON job in review-svc). PENDING while the job streams the file; COMPLETED carries the downloadable file id (GET /api/files/:file_id) + item_count; FAILED carries the reason and no file. One export may be in flight per campaign at a time; finished exports may be repeated (each is a new record + a new file). The requester is notified (review.campaign_export_ready) when the job finishes either way.
type ReviewCampaignExport {
completed_at: DateTimeISO
error: String
file_id: ID
id: ID!
item_count: Int
requested_at: DateTimeISO!
requested_by: ID!
status: ReviewCampaignExportStatus!
}
Fields
ReviewCampaignExport.completed_at ● DateTimeISO scalar
ReviewCampaignExport.error ● String scalar
Failure reason (FAILED only).
ReviewCampaignExport.file_id ● ID scalar
files row id of the completed NDJSON object — download via the files flow (GET /api/files/:id). Null while PENDING and for FAILED exports.
ReviewCampaignExport.id ● ID! non-null scalar
ReviewCampaignExport.item_count ● Int scalar
Number of per-item evidence packets in the file (excludes the manifest line).
ReviewCampaignExport.requested_at ● DateTimeISO! non-null scalar
ReviewCampaignExport.requested_by ● ID! non-null scalar
ReviewCampaignExport.status ● ReviewCampaignExportStatus! non-null enum
Returned By
exportCampaignEvidence mutation ● reviewCampaignExports query