Saltar al contenido
Reservas · bookings
Contrato OpenAPI 3.1: openapi.yaml
Referencia

Referencia: Bookings (reservas)

Las reservas en las que tu organización es originadora o ejecutora. Solo lectura en v1.

GET/v1/bookings
bookings:read

Lista paginada, de la más reciente a la más antigua. Los filtros se añaden a tu organización; ninguno puede ampliarla. Ver Paginación.

ParámetroDóndeTipoDescripción
statusqueryBookingStatusUno de los estados públicos (tabla de abajo).
customer_idqueryuuidReservas de ese cliente.
pickup_fromquerydate-timeRecogida ≥ (ISO 8601).
pickup_toquerydate-timeRecogida ≤ (ISO 8601).
created_fromquerydate-timeCreada ≥.
created_toquerydate-timeCreada ≤.
external_idquerystringTu id para la reserva. Anula el resto de filtros: devuelve esa reserva (lista de uno) o una lista vacía.
limitqueryinteger1–100, por defecto 25.
cursorquerystringEl next_cursor anterior.

Petición

curl
curl "https://wearetransfers.com/api/v1/bookings?status=completed&pickup_from=2026-09-01T00:00:00Z&pickup_to=2026-09-30T23:59:59Z&limit=100" \
  -H "Authorization: Bearer $WAT_API_KEY"

Respuesta

json
{
  "data": [
    {
      "id": "0c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
      "reference": "10031234",
      "external_id": "VLC-2026-000123",
      "status": "confirmed",
      "service_type": "transfer",
      "hours": null,
      "pickup_at": "2026-09-18T08:30:00+00:00",
      "end_at": null,
      "pickup": {
        "address": "Aeropuerto de Valencia (VLC)",
        "lat": 39.4893,
        "lng": -0.4816
      },
      "destination": {
        "address": "Hotel Las Arenas, Valencia",
        "lat": 39.4735,
        "lng": -0.3245
      },
      "distance_km": 12.4,
      "flight": {
        "number": "VY1234",
        "pending": false
      },
      "passengers": {
        "count": 2,
        "luggage": 2,
        "luggage_big": 2,
        "luggage_small": 0,
        "baby_seats": 0,
        "child_seats": 0,
        "booster_seats": 0,
        "wheelchair": false
      },
      "vehicle_category": "sedan",
      "customer": {
        "id": "7e6d5c4b-3a2b-4c1d-9e8f-7a6b5c4d3e2f",
        "name": "Hotel Las Arenas"
      },
      "assignment": {
        "external": false,
        "driver": {
          "id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
          "name": "Marta Gil",
          "nickname": "Marta"
        },
        "vehicle": {
          "id": "5f4e3d2c-1b0a-4f9e-8d7c-6b5a4f3e2d1c",
          "plate": "1234 KLM",
          "model": "Mercedes Clase E"
        }
      },
      "role": "originator_and_executor",
      "channel": "customer_engine",
      "confirmation": {
        "mode": "auto",
        "confirmed_at": "2026-09-17T18:02:11+00:00"
      },
      "event_reference": null,
      "created_at": "2026-09-17T18:02:11.204Z"
    }
  ],
  "next_cursor": "WyJib29raW5ncyIsIjIwMjYtMDktMTdUMTg6MDI6MTEuMjA0WiIsIjBjMWQyZTNmLTRhNWItNGM2ZC04ZTdmLTlhMGIxYzJkM2U0ZiJd.q1Zw8N3kPf2LgT7c",
  "has_more": true
}
GET/v1/bookings/{id}
bookings:read

Una reserva por su UUID o por su número de reserva de WAT (solo dígitos). Una reserva de otra organización responde 404, igual que una inexistente.

ParámetroDóndeTipoDescripción
id *pathuuid | númeroUUID o número de reserva (p. ej. 10031234).

Petición

curl
curl https://wearetransfers.com/api/v1/bookings/10031234 \
  -H "Authorization: Bearer $WAT_API_KEY"

Respuesta (clave con passengers:read y pricing:read)

json
{
  "id": "0c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
  "reference": "10031234",
  "external_id": "VLC-2026-000123",
  "status": "confirmed",
  "service_type": "transfer",
  "hours": null,
  "pickup_at": "2026-09-18T08:30:00+00:00",
  "end_at": null,
  "pickup": {
    "address": "Aeropuerto de Valencia (VLC)",
    "lat": 39.4893,
    "lng": -0.4816
  },
  "destination": {
    "address": "Hotel Las Arenas, Valencia",
    "lat": 39.4735,
    "lng": -0.3245
  },
  "distance_km": 12.4,
  "flight": {
    "number": "VY1234",
    "pending": false
  },
  "passengers": {
    "count": 2,
    "luggage": 2,
    "luggage_big": 2,
    "luggage_small": 0,
    "baby_seats": 0,
    "child_seats": 0,
    "booster_seats": 0,
    "wheelchair": false
  },
  "vehicle_category": "sedan",
  "customer": {
    "id": "7e6d5c4b-3a2b-4c1d-9e8f-7a6b5c4d3e2f",
    "name": "Hotel Las Arenas"
  },
  "assignment": {
    "external": false,
    "driver": {
      "id": "1a2b3c4d-5e6f-4a7b-8c9d-0e1f2a3b4c5d",
      "name": "Marta Gil",
      "nickname": "Marta"
    },
    "vehicle": {
      "id": "5f4e3d2c-1b0a-4f9e-8d7c-6b5a4f3e2d1c",
      "plate": "1234 KLM",
      "model": "Mercedes Clase E"
    }
  },
  "role": "originator_and_executor",
  "channel": "customer_engine",
  "confirmation": {
    "mode": "auto",
    "confirmed_at": "2026-09-17T18:02:11+00:00"
  },
  "event_reference": null,
  "created_at": "2026-09-17T18:02:11.204Z",
  "passenger": {
    "name": "Laura Sanz",
    "phone": "+34600000000",
    "email": "laura@example.com"
  },
  "pricing": {
    "currency": "EUR",
    "total": 48,
    "vat_pct": 10,
    "sale_total": null,
    "extras": [
      {
        "name": "Silla de bebé",
        "amount": 5,
        "per_passenger": false
      }
    ],
    "diet": null,
    "parking": null,
    "night_surcharge": null,
    "payment_mode": "cuenta",
    "payment_status": "pendiente",
    "paid_at": null
  }
}

El objeto Booking

CampoTipoQué es
iduuidIdentificador estable.
referencestring | nullNúmero de reserva de WAT. Vale como id en GET /bookings/{id}.
external_idstring | nullTu id para esta reserva, si lo guardaste (por integración).
statusBookingStatusEstado público (tabla de abajo).
service_typetransfer | hourlyTraslado o disposición por horas.
hoursnumber | nullSolo en hourly.
pickup_at · end_atdate-timeRecogida y fin previsto (end_at puede ser null).
pickup · destinationPlace | nullDirección y coordenadas. destination es null en disposiciones sin destino.
distance_kmnumber | nullDistancia estimada.
flightobject | nullnumber y pending (el pasajero aún no ha dado el vuelo).
passengersobjectcount, luggage, luggage_big, luggage_small, baby_seats, child_seats, booster_seats, wheelchair.
vehicle_categoryVehicleCategory | nullCategoría pedida (tabla de abajo).
customerobject | nullid y name del cliente por el que entró.
assignmentobjectexternal, driver, vehicle. Si la ejecuta otra empresa (bolsa), external: true y driver/vehicle son null.
roleBookingRoleoriginator · executor · originator_and_executor: qué papel tiene tu organización.
channelBookingChannel | nullPor dónde entró (tabla de abajo).
confirmationobjectmode y confirmed_at.
event_referencestring | nullReferencia de evento o grupo, si forma parte de uno.
created_atdate-timeCreación.
passengerobjectSolo con passengers:read. name, phone, email.
pricingobjectSolo con pricing:read. Su forma depende de role. Si eres originadora (originator, originator_and_executor): currency (EUR), total, vat_pct, sale_total, extras[], diet, parking, night_surcharge, payment_mode, payment_status, paid_at. Si solo la ejecutas (executor, bolsa): currency y net_executor, tu neto; el precio del originador y el de venta de su cliente no se exponen.
Sin scope, sin propiedad

Si la clave no tiene passengers:read, la propiedad passenger no existe (no es null). Igual con pricing.

pricing de una reserva que ejecutas para otra empresa (role: executor):

json
{
  "currency": "EUR",
  "net_executor": 41.4
}

Estados

statusInternoQué significa
requestedsolicitadaSolicitada por el cliente; la empresa aún no la ha aceptado.
unconfirmedno_seguraAceptada pero sin confirmar al pasajero.
confirmedconfirmadaConfirmada.
en_routeen_caminoEl conductor va hacia la recogida.
in_progressen_cursoEl pasajero va a bordo.
completedcompletadaTerminada.
cancelledcanceladaCancelada.
no_showno_showEl pasajero no se presentó.
rejectedrechazadaRechazada por la empresa.

El nombre interno aparece en previous_status de los eventos y de los webhooks.

Categorías de vehículo

vehicle_categoryQué es
sedanTurismo estándar
vanMinivan estándar
sedan_vipTurismo VIP
van_vipMinivan VIP

Canales

channelQué es
customer_engineEl motor de reservas de un cliente (su enlace).
public_engineEl motor público de la empresa.
manualApuntada a mano en el panel.
bulk_uploadCarga masiva por Excel.
recurringReserva recurrente.
apiCreada por la API (próximamente).

Ejemplo: reserva que ejecuta otra empresa

json
{
  "id": "0c1d2e3f-4a5b-4c6d-8e7f-9a0b1c2d3e4f",
  "reference": "10031234",
  "external_id": null,
  "status": "confirmed",
  "service_type": "transfer",
  "hours": null,
  "pickup_at": "2026-09-18T08:30:00+00:00",
  "end_at": null,
  "pickup": {
    "address": "Aeropuerto de Valencia (VLC)",
    "lat": 39.4893,
    "lng": -0.4816
  },
  "destination": {
    "address": "Hotel Las Arenas, Valencia",
    "lat": 39.4735,
    "lng": -0.3245
  },
  "distance_km": 12.4,
  "flight": {
    "number": "VY1234",
    "pending": false
  },
  "passengers": {
    "count": 2,
    "luggage": 2,
    "luggage_big": 2,
    "luggage_small": 0,
    "baby_seats": 0,
    "child_seats": 0,
    "booster_seats": 0,
    "wheelchair": false
  },
  "vehicle_category": "sedan",
  "customer": {
    "id": "7e6d5c4b-3a2b-4c1d-9e8f-7a6b5c4d3e2f",
    "name": "Hotel Las Arenas"
  },
  "assignment": {
    "external": true,
    "driver": null,
    "vehicle": null
  },
  "role": "originator",
  "channel": "customer_engine",
  "confirmation": {
    "mode": "auto",
    "confirmed_at": "2026-09-17T18:02:11+00:00"
  },
  "event_reference": null,
  "created_at": "2026-09-17T18:02:11.204Z"
}
Referencia: Bookings (reservas) · API de WAT