# Escenario UAT recomendado para partners

Base URL principal: `https://destinotours.com`

Dominio legacy API temporal: `https://destinotour.com`

Moneda de tarifas: `USD`

Soporte: `santiago@destinotours.com`

## Salida recomendada

Seleccionar una salida futura operativa desde disponibilidad:

```bash
curl -H "x-api-key: <api-key>" \
  "https://destinotours.com/api/v1/departures?status=SCHEDULED"
```

Usar preferentemente la primera salida con `status = SCHEDULED`, `capacityAvailable >= 10` y `currencyCode = USD`.

## Flujo mínimo de aceptación

1. Validar healthcheck: `GET /api/v1/health`.
2. Validar catálogo: `GET /api/v1/circuits`.
3. Confirmar que los circuitos devuelven `price`, `currencyCode`, `cancellationPolicy` y `cancellationRules`.
4. Validar disponibilidad: `GET /api/v1/departures?status=SCHEDULED`.
5. Confirmar que disponibilidad devuelve `capacityAvailable`, `currencyCode`, `circuit.price` y `circuit.currencyCode`.
6. Crear reserva UAT con `POST /api/v1/reservations`.
7. Repetir el mismo `POST` con la misma `Idempotency-Key` y confirmar que no duplica plazas.
8. Consultar la reserva con `GET /api/v1/reservations/{reference}`.
9. Cancelar la reserva UAT con `POST /api/v1/reservations/{reference}/cancel`.

## Payload base de reserva

```json
{
  "departureId": "<departureId>",
  "customerName": "UAT Partner Test",
  "customerEmail": "uat@example.com",
  "customerPhone": "+34000000000",
  "passengerCount": 2,
  "adults": 2,
  "children": 0,
  "externalReference": "UAT-001",
  "notes": "Reserva UAT de integración"
}
```

## Resultado esperado al reservar

- `status = CONFIRMED`
- `quotedPrice` calculado
- `currencyCode = USD`
- `reference` informado
- `requestId` informado

## Reglas de cancelación

```json
[
  {
    "numberOfDaysToApply": 30,
    "valuePercent": "0",
    "description": "Cancelación gratuita hasta 30 días antes de la salida."
  },
  {
    "numberOfDaysToApply": 15,
    "valuePercent": "50",
    "description": "Entre 29 y 15 días antes de la salida se aplicará un 50% de gastos de cancelación."
  },
  {
    "numberOfDaysToApply": 0,
    "valuePercent": "100",
    "description": "Entre 14 y 0 días antes de la salida se aplicará un 100% de gastos de cancelación."
  }
]
```
