Skip to main content
TransportOperatorQuotaUsage registra cada movimento de cota gerado por uma Trip. Ele evita dupla contagem e permite auditar por que uma cota foi reservada, consumida ou liberada.

Campos

CampoTipoDescrição
transportOperatorQuotaUsageIdUUIDIdentificador único
transportOperatorQuotaIdUUIDCota movimentada
cooperativeIdUUIDCooperativa da cota
transportOperatorIdUUIDPermissionário controlado
routeIdUUIDRota controlada
tripIdUUIDTrip que originou o movimento
typeTransportOperatorQuotaUsageTypeTipo do movimento
statusTransportOperatorQuotaUsageStatusEstado do movimento
periodStartDateTimeInício do período da cota
periodEndDateTimeFim do período da cota
idempotencyKeyStringChave única para evitar dupla contagem
createdByUUID?Usuário que criou o movimento, quando aplicável
createdAtDateTimeData de criação do movimento

Relacionamentos

Regras de Negócio

  • RESERVE é criado quando uma Trip entra em IN_PROGRESS.
  • CONSUME é criado quando uma Trip entra em COMPLETED.
  • RELEASE é criado quando uma Trip reservada é cancelada antes de consumir cota definitiva.
  • idempotencyKey deve ser única para transportOperatorQuotaId + tripId + type.
  • A mesma Trip não pode consumir a mesma cota mais de uma vez.
  • Movimentos são append-only. Correções devem criar novo movimento compensatório.

Enums

TransportOperatorQuotaUsageType

ValorDescrição
RESERVEReserva temporária de cota
CONSUMEConsumo definitivo de cota
RELEASELiberação de reserva

TransportOperatorQuotaUsageStatus

ValorDescrição
APPLIEDMovimento aplicado na cota
REVERSEDMovimento revertido por compensação

Example

{
  "transportOperatorQuotaUsageId": "01980d35-f7cd-79e0-9e2a-b2a974a61d52",
  "transportOperatorQuotaId": "01980d35-99f1-76f9-a0c9-5c5ff0ea8cf6",
  "cooperativeId": "0197a800-24e6-76a2-90ed-ff0f6fba7b0c",
  "transportOperatorId": "01980d30-6a3c-7a42-9182-17ad6324d3aa",
  "routeId": "0197a80c-4204-7b77-9005-48cc23677587",
  "tripId": "0197a80f-2d8f-7710-b243-b67fb477a1c0",
  "type": "CONSUME",
  "status": "APPLIED",
  "periodStart": "2026-07-01T00:00:00.000Z",
  "periodEnd": "2026-07-31T23:59:59.999Z",
  "idempotencyKey": "quota-consume-01980d35-99f1-76f9-a0c9-5c5ff0ea8cf6-0197a80f-2d8f-7710-b243-b67fb477a1c0",
  "createdBy": "0197a805-0910-7eb2-bae7-90a13df2a9b2",
  "createdAt": "2026-07-04T12:30:00.000Z"
}