REST API

API de Flota

Integra las operaciones de tu flota — gestiona reservas, asigna conductores y sincroniza actualizaciones de estado programáticamente.

URL base https://7transfers.com/api/driver
Autenticación Bearer token

Comenzando

Incluye estos encabezados en cada solicitud después de iniciar sesión:

Cabeceras
Accept: application/json
Content-Type: application/json
Authorization: Bearer {token}
POST /api/driver/login

Iniciar sesión — obtener token

Autenticar con credenciales de la flota para recibir un token Bearer para solicitudes posteriores.

Solicitud

Cuerpo JSON
{
  "email": "fleet@example.com",
  "password": "your-password"
}

Respuesta 200

JSON
{
  "success": true,
  "token": "1|xxxxxxxxxxxxxxxxxxxx",
  "user": {
    "id": 123,
    "name": "Malaga Fleet",
    "email": "fleet@example.com",
    "is_driver": false,
    "is_fleet": true
  }
}
GET /api/driver/bookings

Listar reservas asignadas a la flota

Parámetros de consulta opcional

statusall o assigned, accepted, onroute, arrived, onboard, completed, canceled, noshow, rejected, market
from_dateYYYY-MM-DD
to_dateYYYY-MM-DD
per_page1–100 (predeterminado 20)

Ejemplo

GET
https://7transfers.com/api/driver/bookings?status=assigned&from_date=2026-04-11&per_page=50

Respuesta 200

JSON
{
  "success": true,
  "data": [
    {
      "id": 9876,
      "ref_number": "T2S-12345",
      "status": "assigned",
      "status_label": "Assigned",
      "date": "2026-04-15 10:30:00",
      "from_address": "Malaga Airport (AGP)",
      "to_address": "Hotel Marbella Club",
      "passengers": 3,
      "vehicle_list": "Business Van",
      "luggage": 4,
      "hand_luggage": 3,
      "assigned_driver": null,
      "commission": 0,
      "flight_number": "FR1234",
      "meet_and_greet": true,
      "coordinate_start_lat": 36.6749,
      "coordinate_start_lon": -4.4991,
      "coordinate_end_lat": 36.5098,
      "coordinate_end_lon": -4.8826
    }
  ],
  "meta": {
    "current_page": 1,
    "last_page": 3,
    "per_page": 20,
    "total": 47
  }
}
Las cancelaciones no se envían a tu sistema. Incluye status=canceled (o usa status=all) en tu sondeo para detectar reservas canceladas por la oficina y elimínalas en tu lado.
GET /api/driver/bookings/{id}

Detalles de la reserva

Devuelve la reserva completa: pasajero, contacto, direcciones, coordenadas, historial de estado, botones de acción, extras (asientos para niños, silla de ruedas, tiempo de espera, etc.) y archivos adjuntos.

Los teléfonos del pasajero (contact_mobile, lead_passenger_mobile) solo se devuelven en este endpoint — nunca en el listado de reservas — y únicamente mientras la reserva está en un estado activo (accepted, onroute, arrived, onboard). Mientras la reserva sigue en assigned, o después de completada o cancelada, los campos de teléfono se devuelven como null. Acepta la reserva primero y luego consulta el detalle para obtener el teléfono.
PATCH /api/driver/bookings/{id}/status

Actualizar estado de la reserva

Solicitud

Cuerpo JSON
{
  "status": "accepted",
  "status_notes": "Nota opcional"
}
Valores de estado válidos: accepted, rejected, onroute, arrived, onboard, noshow, completed, canceled
  • status_notes es obligatorio cuando el estado es rejected.
  • Los estados onroute, arrived, onboard, noshow y completed requieren una ubicación GPS reciente del conductor (en los últimos 5 minutos). Para integraciones desde oficina, usa accepted, rejected o canceled.
Una vez que la oficina ha cancelado una reserva, ya no puede reactivarse: cualquier intento de cambiar su estado (p. ej. a accepted) devuelve un error 422. Vuelve a comprobar el estado actual antes de aceptar reservas encoladas de un sondeo anterior.

Respuesta 200

JSON
{
  "success": true,
  "data": { "id": 9876, "status": "accepted" }
}
GET /api/driver/fleet/drivers

Listar conductores propios de la flota

Respuesta

JSON
{
  "success": true,
  "data": [
    { "id": 55, "name": "Juan Perez", "email": "juan@example.com" }
  ]
}
PATCH /api/driver/fleet/bookings/{id}/assign-driver

Asignar un conductor a una reserva

Solicitud

Cuerpo JSON
{
  "driver_id": 55,
  "commission": 10.00,
  "fleet_commission": 5.00
}

Respuesta

JSON
{
  "success": true,
  "message": "Conductor asignado.",
  "data": {
    "id": 9876,
    "driver_id": 55,
    "driver_name": "Juan Perez",
    "commission": 10.00,
    "fleet_commission": 5.00
  }
}
POST /api/driver/logout

Cerrar sesión

Revoca el token Bearer actual.

Formato de error

Todos los errores devuelven JSON con un mensaje legible para humanos.

JSON
{ "success": false, "message": "Mensaje legible" }
401 Credenciales o token no válidos
403 No es usuario de flota / la reserva no pertenece a la flota
404 Reserva no encontrada
422 Error de validación o transición de estado no válida