Ir al contenido

Cerrar (finalizar) una reserva de caja

PATCH
/teams/{teamId}/box-reservations/{reservationId}/close
curl --request PATCH \
--url https://api.dev.lade.com.mx/teams/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/box-reservations/2489E9AD-2EE2-8E00-8EC9-32D5F69181C0/close \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "actualEndAt": "2026-07-30T18:00:00Z" }'

Finaliza una reserva ACTIVA: calcula los días facturables (mínimo 1 día aunque dure horas, redondeado hacia arriba) y el monto total, libera la caja a DISPONIBLE, y — si la renta es facturable y el monto es mayor a 0 — genera un borrador de factura automáticamente (best-effort: si Facturapi falla, la reserva igual queda cerrada y se crea una alerta BOX_RENTAL_INVOICE_DRAFT_FAILED para generar la factura a mano). Falla con 409 si la reserva no está ACTIVA.

teamId
required
string format: uuid

ID del equipo (UUID)

reservationId
required
string format: uuid

ID de la reserva/renta de caja (UUID)

Media typeapplication/json
object
actualEndAt

Default: ahora

string format: date-time
Example
{
"actualEndAt": "2026-07-30T18:00:00Z"
}

Reserva cerrada

Media typeapplication/json
object
message
string
reservationId
string format: uuid
billedDays
integer
totalAmount
number
invoiceId
string
nullable
Example
{
"message": "Box reservation closed successfully",
"reservationId": "dd0e8400-e29b-41d4-a716-446655440008",
"billedDays": 4,
"totalAmount": 1000,
"invoiceId": "990e8400-e29b-41d4-a716-446655440004"
}

Solicitud inválida

Media typeapplication/json
object
error
required
string
message
string
field
string
Example
{
"error": "Validation failed",
"field": "email",
"message": "Invalid email format"
}

Sin permisos

Media typeapplication/json
object
error
required
string
message
string
field
string
Example
{
"error": "Forbidden",
"message": "You don't have permission to access this resource"
}

Recurso no encontrado

Media typeapplication/json
object
error
required
string
message
string
field
string
Example
{
"error": "Not found",
"message": "Resource not found"
}

Conflicto con recurso existente

Media typeapplication/json
object
error
required
string
message
string
field
string
Example
{
"error": "Conflict",
"message": "Resource already exists"
}