Skip to main content
Partner routes take no Idempotency-Key header. Each route is made safe to retry in its own way.

Flight totals

PUT /v1/partner/grants/{grant_id}/flight-totals sends a whole state, not a change, and as_of makes a retry safe:
  • as_of is required. It names the instant of the logbook’s state, in RFC 3339, and is compared to the microsecond.
  • It may not be more than 5 minutes ahead of the server’s clock. A later as_of is refused with 400 invalid_request.
  • Sending the same as_of and the same totals again, for example after a lost answer, answers 200 and applies nothing, while that push is still the grant’s last accepted push.
  • After a newer push has been accepted, the same retry answers 409 conflict with reason stale_totals. So does any push whose as_of is older than the last accepted one. Nothing is applied. Send the logbook’s current state.
  • A retry is recognized by its as_of and by the totals it sums to, not by its bytes: two different bodies sent with one as_of that sum to the same totals are the same push.
The 15 minute throttle comes after these checks: a retry of the last accepted push is 200 even inside the window, an older as_of is 409 stale_totals, and only a new push inside the window answers 429 push_throttled. MyPilotIndex raises each hour column to the logbook’s value when it is higher and never lowers one, so a repeated push cannot add time twice.

Code exchange

A code works once. Exchanging it again, after a lost answer, answers 400 invalid_request with reason invalid_grant, as in OAuth. Restart the consent to get a new code.

Reads

Reading calls are safe to repeat.