Documentation menu

Approval workflow

Carbon-source records move through submit → review → approve. Only approved records count toward an event's computed carbon result, which is what makes the output defensible: every reported number traces back to reviewed source data.

The three transitions

POST https://api.carbon-calculator.eventzero.io/api/v2/events/{eventId}/{type}/{recordId}/submit    # supplier or member → sets submitted
POST https://api.carbon-calculator.eventzero.io/api/v2/events/{eventId}/{type}/{recordId}/review    # manager+ → sets reviewed (+ feedback)
POST https://api.carbon-calculator.eventzero.io/api/v2/events/{eventId}/{type}/{recordId}/approve   # manager+ → sets approved
  • Submit — a supplier or org member hands the record to the event team. Sets submitted: true.
  • Review — a manager checks the record and can attach free-text feedback, which the supplier sees. Sets reviewed: true.
  • Approve — a manager signs the record off. Sets approved: true; the record now counts in the event's carbon calculation.
Review with feedback
curl -X POST https://api.carbon-calculator.eventzero.io/api/v2/events/<eventId>/flights/<recordId>/review \
  -H "Authorization: Bearer <accessToken>" \
  -H "Content-Type: application/json" \
  -d '{"feedback": "Passenger count looks high — please confirm against the manifest."}'

The workflow flags and feedback are server-controlled: writing them directly through create/update is silently ignored — the transitions are the only way to change them.

Which record types have the workflow

12 of the 16 record types support the workflow. The remaining types don't track submission state — their records are plain CRUD, and the transition endpoints don't exist for them (calling one returns 404).

Record typesubmit / review / approveSupplier rows pinned
accommodation
flights
travel
transport
transport-overseas
private-jets
activityshared across suppliers
food-beverage
drinks
venue
virtual
waste
printed-materials
production-items
productshared across suppliers
serviceshared across suppliers
Recalculation: Results are recalculated server-side from approved records. After approving, re-read GET /events/{eventId}/results to pick up the updated figure; a 404 RESULT_NOT_FOUND means no result exists yet.