> ## Documentation Index
> Fetch the complete documentation index at: https://developers.mypilotindex.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Idempotencia

> Cómo cada ruta de socio se puede reintentar sin riesgo.

Las rutas de socio no aceptan el encabezado `Idempotency-Key`. Cada ruta se puede reintentar sin riesgo a su manera.

## Totales de vuelo

`PUT /v1/partner/grants/{grant_id}/flight-totals` envía un estado completo, no un cambio, y `as_of` hace que un reintento sea seguro:

* `as_of` es obligatorio. Indica el instante del estado del logbook, en RFC 3339, y se compara al microsegundo.
* No puede estar más de 5 minutos adelantado respecto del reloj del servidor. Un `as_of` posterior se rechaza con `400 invalid_request`.
* Enviar de nuevo el mismo `as_of` y los mismos totales, por ejemplo después de perder la respuesta, responde `200` y no aplica nada, mientras ese envío siga siendo el último aceptado del grant.
* Después de que se acepta un envío más reciente, el mismo reintento responde `409 conflict` con el motivo `stale_totals`. Lo mismo ocurre con cualquier envío cuyo `as_of` sea anterior al último aceptado. No se aplica nada. Envía el estado actual del logbook.
* Un reintento se reconoce por su `as_of` y por los totales que suma, no por sus bytes: dos cuerpos distintos enviados con un mismo `as_of` que suman los mismos totales son el mismo envío.

El límite de 15 minutos viene después de estas verificaciones: un reintento del último envío aceptado es `200` incluso dentro de la ventana, un `as_of` anterior es `409 stale_totals`, y solo un envío nuevo dentro de la ventana responde `429 push_throttled`.

MyPilotIndex sube cada columna de horas al valor del logbook cuando este es mayor y nunca baja ninguna, así que un envío repetido no puede sumar tiempo dos veces.

## Intercambio del código

Un código sirve una sola vez. Intercambiarlo de nuevo, después de perder la respuesta, responde `400 invalid_request` con el motivo `invalid_grant`, como en OAuth. Reinicia el consentimiento para obtener un código nuevo.

## Lecturas

Las llamadas de lectura se pueden repetir sin riesgo.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.