REFERENCIA · v1.0.0

Referencia de la API

Generada del contrato OpenAPI — el mismo que valida cada solicitud. Descargar openapi.json para importarla en Postman o generar clientes.

Cuenta

GET/v1/health

Liveness (sin autenticación)

Respuestas

200OK
curl https://api.credikul.com/v1/health \
  -H "Authorization: Bearer ck_live_TU_LLAVE"
GET/v1/me

Introspección de la llave (tenant, scopes, entorno)

Respuestas

200Identidad de la llave
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
429Límite de solicitudes excedido (revisa Retry-After)
curl https://api.credikul.com/v1/me \
  -H "Authorization: Bearer ck_live_TU_LLAVE"
GET/v1/catalog/didi/cities

Catálogo de ciudades didi (para el alta de vehículos)

Respuestas

200Ciudades
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
429Límite de solicitudes excedido (revisa Retry-After)
curl https://api.credikul.com/v1/catalog/didi/cities \
  -H "Authorization: Bearer ck_live_TU_LLAVE"
GET/v1/catalog/didi/colors

Catálogo de colores didi

Respuestas

200Colores
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
429Límite de solicitudes excedido (revisa Retry-After)
curl https://api.credikul.com/v1/catalog/didi/colors \
  -H "Authorization: Bearer ck_live_TU_LLAVE"

Vehículos

GET/v1/vehicles

Listar vehículos

Scope: `vehicles:read`. Paginación por cursor (`startingAfter`).

Parámetros de consulta

CampoTipoRequerido
limitinteger
startingAfteruuid
platestring
status"activo" | "mantenimiento" | "inactivo" | "pending_didi"

Respuestas

200Página de vehículos
400Entrada inválida (VALIDATION)
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
429Límite de solicitudes excedido (revisa Retry-After)
curl https://api.credikul.com/v1/vehicles \
  -H "Authorization: Bearer ck_live_TU_LLAVE"
POST/v1/vehicles

Crear vehículo

Scope: `vehicles:write`. La placa y el VIN son únicos en TODA la flota Credikul (409 si ya existen).

Cuerpo (JSON)

CampoTipoRequerido
platestring
brandstring
modelstring
yearinteger
colorstring
citystring
vinstring
platformsarray<"didi" | "indrive">

Respuestas

201Vehículo creado
400Entrada inválida (VALIDATION)
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
409Conflicto (duplicado, estado incompatible)
429Límite de solicitudes excedido (revisa Retry-After)
curl -X POST https://api.credikul.com/v1/vehicles \
  -H "Authorization: Bearer ck_live_TU_LLAVE" \
  -H "Content-Type: application/json" \
  -d '{"plate":"<string>","brand":"<string>","model":"<string>","year":"<integer>","color":"<string>"}'
GET/v1/vehicles/{id}

Obtener vehículo

Parámetros de ruta

CampoTipoRequerido
iduuid

Respuestas

200Vehículo
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
404Recurso no encontrado
429Límite de solicitudes excedido (revisa Retry-After)
curl https://api.credikul.com/v1/vehicles/{id} \
  -H "Authorization: Bearer ck_live_TU_LLAVE"
PATCH/v1/vehicles/{id}

Actualizar vehículo (city/color/vin/status/notes)

Parámetros de ruta

CampoTipoRequerido
iduuid

Cuerpo (JSON)

CampoTipoRequerido
citystring
colorstring
vinstring | null
status"activo" | "mantenimiento" | "inactivo"
notesstring

Respuestas

200Vehículo actualizado
400Entrada inválida (VALIDATION)
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
404Recurso no encontrado
409Conflicto (duplicado, estado incompatible)
429Límite de solicitudes excedido (revisa Retry-After)
curl -X PATCH https://api.credikul.com/v1/vehicles/{id} \
  -H "Authorization: Bearer ck_live_TU_LLAVE" \
  -H "Content-Type: application/json" \
  -d '{}'
POST/v1/vehicles/{id}/registrations

Registrar el vehículo en una plataforma (alta)

Scope: `vehicles:write`. didi: registro asíncrono (queda `pending` y requiere la tarjeta de circulación). indrive: instantáneo (requiere VIN). Idempotente: si ya está registrado responde 200 con el mismo objeto.

Parámetros de ruta

CampoTipoRequerido
iduuid

Cuerpo (JSON)

CampoTipoRequerido
platform"didi" | "indrive"

Respuestas

200Ya estaba registrado
201Registro iniciado
400Entrada inválida (VALIDATION)
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
404Recurso no encontrado
422La operación no procede (estado del recurso / plataforma)
429Límite de solicitudes excedido (revisa Retry-After)
curl -X POST https://api.credikul.com/v1/vehicles/{id}/registrations \
  -H "Authorization: Bearer ck_live_TU_LLAVE" \
  -H "Content-Type: application/json" \
  -d '{"platform":"<\"didi\" | \"indrive\">"}'
GET/v1/vehicles/{id}/registrations

Estado de registro en todas las plataformas

Parámetros de ruta

CampoTipoRequerido
iduuid

Respuestas

200Registros
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
404Recurso no encontrado
429Límite de solicitudes excedido (revisa Retry-After)
curl https://api.credikul.com/v1/vehicles/{id}/registrations \
  -H "Authorization: Bearer ck_live_TU_LLAVE"
GET/v1/vehicles/{id}/registrations/{platform}

Estado de registro en una plataforma (objetivo de polling)

Parámetros de ruta

CampoTipoRequerido
iduuid
platform"didi" | "indrive"

Respuestas

200Registro
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
404Recurso no encontrado
429Límite de solicitudes excedido (revisa Retry-After)
curl https://api.credikul.com/v1/vehicles/{id}/registrations/{platform} \
  -H "Authorization: Bearer ck_live_TU_LLAVE"
POST/v1/vehicles/{id}/registrations/{platform}/refresh

Refrescar el veredicto de revisión en vivo (solo didi)

Parámetros de ruta

CampoTipoRequerido
iduuid
platform"didi" | "indrive"

Respuestas

200Estado actualizado
400Entrada inválida (VALIDATION)
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
404Recurso no encontrado
409Conflicto (duplicado, estado incompatible)
429Límite de solicitudes excedido (revisa Retry-After)
curl -X POST https://api.credikul.com/v1/vehicles/{id}/registrations/{platform}/refresh \
  -H "Authorization: Bearer ck_live_TU_LLAVE"

Documentos

POST/v1/vehicles/{id}/documents

Subir la tarjeta de circulación (frente)

Scope: `documents:write`. Multipart: campo `file` (JPEG/PNG, máx 4 MB) + `type=circulation_card_front`. Requiere registro didi previo (409 si falta).

Parámetros de ruta

CampoTipoRequerido
iduuid

Respuestas

201Documento enviado a revisión
400Entrada inválida (VALIDATION)
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
404Recurso no encontrado
409Conflicto (duplicado, estado incompatible)
413Archivo demasiado grande (FILE_TOO_LARGE)
422La operación no procede (estado del recurso / plataforma)
429Límite de solicitudes excedido (revisa Retry-After)
curl -X POST https://api.credikul.com/v1/vehicles/{id}/documents \
  -H "Authorization: Bearer ck_live_TU_LLAVE" \
  -F "type=circulation_card_front" \
  -F "file=@tarjeta-frente.jpg"
GET/v1/vehicles/{id}/documents

Historial de documentos del vehículo

Parámetros de ruta

CampoTipoRequerido
iduuid

Respuestas

200Documentos
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
404Recurso no encontrado
429Límite de solicitudes excedido (revisa Retry-After)
curl https://api.credikul.com/v1/vehicles/{id}/documents \
  -H "Authorization: Bearer ck_live_TU_LLAVE"

Conductores

GET/v1/drivers

Listar conductores

Parámetros de consulta

CampoTipoRequerido
limitinteger
startingAfteruuid
whatsappstring

Respuestas

200Página de conductores
400Entrada inválida (VALIDATION)
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
429Límite de solicitudes excedido (revisa Retry-After)
curl https://api.credikul.com/v1/drivers \
  -H "Authorization: Bearer ck_live_TU_LLAVE"
POST/v1/drivers

Crear conductor

Scope: `drivers:write`. El WhatsApp es único en toda la flota Credikul (409). `vehicleId` opcional abre la asignación.

Cuerpo (JSON)

CampoTipoRequerido
namestring
whatsappstring
citystring
emailstring
licensestring
vehicleIduuid

Respuestas

201Conductor creado
400Entrada inválida (VALIDATION)
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
404Recurso no encontrado
409Conflicto (duplicado, estado incompatible)
429Límite de solicitudes excedido (revisa Retry-After)
curl -X POST https://api.credikul.com/v1/drivers \
  -H "Authorization: Bearer ck_live_TU_LLAVE" \
  -H "Content-Type: application/json" \
  -d '{"name":"<string>","whatsapp":"<string>","city":"<string>"}'
GET/v1/drivers/{id}

Obtener conductor

Parámetros de ruta

CampoTipoRequerido
iduuid

Respuestas

200Conductor
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
404Recurso no encontrado
429Límite de solicitudes excedido (revisa Retry-After)
curl https://api.credikul.com/v1/drivers/{id} \
  -H "Authorization: Bearer ck_live_TU_LLAVE"
PATCH/v1/drivers/{id}

Actualizar conductor

El WhatsApp se congela cuando el conductor ya aceptó la invitación (409).

Parámetros de ruta

CampoTipoRequerido
iduuid

Cuerpo (JSON)

CampoTipoRequerido
namestring
whatsappstring
emailstring | null
citystring
licensestring | null

Respuestas

200Conductor actualizado
400Entrada inválida (VALIDATION)
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
404Recurso no encontrado
409Conflicto (duplicado, estado incompatible)
429Límite de solicitudes excedido (revisa Retry-After)
curl -X PATCH https://api.credikul.com/v1/drivers/{id} \
  -H "Authorization: Bearer ck_live_TU_LLAVE" \
  -H "Content-Type: application/json" \
  -d '{}'

Invitaciones

POST/v1/drivers/{id}/invitations

Invitar al conductor a una plataforma

Scope: `drivers:write`. didi: envía la invitación que el conductor acepta en su app (consulta el estado con GET/refresh). indrive: no disponible en v1 (403 PLATFORM_NOT_ENABLED). Idempotente: si ya hay invitación responde 200.

Parámetros de ruta

CampoTipoRequerido
iduuid

Cuerpo (JSON)

CampoTipoRequerido
platform"didi" | "indrive"

Respuestas

200Ya existía una invitación
201Invitación enviada
400Entrada inválida (VALIDATION)
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
404Recurso no encontrado
409Conflicto (duplicado, estado incompatible)
422La operación no procede (estado del recurso / plataforma)
429Límite de solicitudes excedido (revisa Retry-After)
curl -X POST https://api.credikul.com/v1/drivers/{id}/invitations \
  -H "Authorization: Bearer ck_live_TU_LLAVE" \
  -H "Content-Type: application/json" \
  -d '{"platform":"<\"didi\" | \"indrive\">"}'
GET/v1/drivers/{id}/invitations

Estado de invitaciones del conductor

Parámetros de ruta

CampoTipoRequerido
iduuid

Respuestas

200Invitaciones
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
404Recurso no encontrado
429Límite de solicitudes excedido (revisa Retry-After)
curl https://api.credikul.com/v1/drivers/{id}/invitations \
  -H "Authorization: Bearer ck_live_TU_LLAVE"
GET/v1/drivers/{id}/invitations/{platform}

¿Ya aceptó? — estado almacenado de la invitación

Parámetros de ruta

CampoTipoRequerido
iduuid
platform"didi" | "indrive"

Respuestas

200Invitación
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
404Recurso no encontrado
429Límite de solicitudes excedido (revisa Retry-After)
curl https://api.credikul.com/v1/drivers/{id}/invitations/{platform} \
  -H "Authorization: Bearer ck_live_TU_LLAVE"
POST/v1/drivers/{id}/invitations/didi/refresh

Consultar la plataforma en vivo y persistir el estado

Parámetros de ruta

CampoTipoRequerido
iduuid

Respuestas

200Estado actualizado
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
404Recurso no encontrado
409Conflicto (duplicado, estado incompatible)
429Límite de solicitudes excedido (revisa Retry-After)
curl -X POST https://api.credikul.com/v1/drivers/{id}/invitations/didi/refresh \
  -H "Authorization: Bearer ck_live_TU_LLAVE"
DELETE/v1/drivers/{id}/invitations/didi

Cancelar la invitación / desvincular al conductor

Parámetros de ruta

CampoTipoRequerido
iduuid

Respuestas

200Invitación cancelada (status none)
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
404Recurso no encontrado
429Límite de solicitudes excedido (revisa Retry-After)
curl -X DELETE https://api.credikul.com/v1/drivers/{id}/invitations/didi \
  -H "Authorization: Bearer ck_live_TU_LLAVE"

Asignaciones

GET/v1/assignments

Listar asignaciones conductor↔vehículo

Parámetros de consulta

CampoTipoRequerido
limitinteger
startingAfteruuid
vehicleIduuid
driverIduuid
status"active" | "ended"

Respuestas

200Página de asignaciones
400Entrada inválida (VALIDATION)
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
429Límite de solicitudes excedido (revisa Retry-After)
curl https://api.credikul.com/v1/assignments \
  -H "Authorization: Bearer ck_live_TU_LLAVE"
POST/v1/assignments

Asignar un conductor a un vehículo

Scope: `drivers:write`. Un vehículo y un conductor solo pueden tener UNA asignación activa: crear una nueva desplaza (termina) la anterior en cualquiera de los dos lados. La asignación local gobierna la vinculación en la plataforma.

Cuerpo (JSON)

CampoTipoRequerido
vehicleIduuid
driverIduuid

Respuestas

201Asignación activa
400Entrada inválida (VALIDATION)
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
404Recurso no encontrado
429Límite de solicitudes excedido (revisa Retry-After)
curl -X POST https://api.credikul.com/v1/assignments \
  -H "Authorization: Bearer ck_live_TU_LLAVE" \
  -H "Content-Type: application/json" \
  -d '{"vehicleId":"<uuid>","driverId":"<uuid>"}'
GET/v1/assignments/{id}

Obtener asignación

Parámetros de ruta

CampoTipoRequerido
iduuid

Respuestas

200Asignación
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
404Recurso no encontrado
429Límite de solicitudes excedido (revisa Retry-After)
curl https://api.credikul.com/v1/assignments/{id} \
  -H "Authorization: Bearer ck_live_TU_LLAVE"
DELETE/v1/assignments/{id}

Terminar la asignación

Parámetros de ruta

CampoTipoRequerido
iduuid

Respuestas

200Asignación terminada
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
404Recurso no encontrado
429Límite de solicitudes excedido (revisa Retry-After)
curl -X DELETE https://api.credikul.com/v1/assignments/{id} \
  -H "Authorization: Bearer ck_live_TU_LLAVE"

Lotes

POST/v1/drivers/invitations/batch

Invitar varios conductores (didi) — async

Scope: `drivers:write`. Responde 202 con `jobId`; consulta el avance en GET /v1/jobs/{id}. `skipped` = conductores no elegibles (ya invitados, inexistentes).

Cuerpo (JSON)

CampoTipoRequerido
platform"didi" | "indrive"
driverIdsarray<uuid>

Respuestas

202Job aceptado
400Entrada inválida (VALIDATION)
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
429Límite de solicitudes excedido (revisa Retry-After)
curl -X POST https://api.credikul.com/v1/drivers/invitations/batch \
  -H "Authorization: Bearer ck_live_TU_LLAVE" \
  -H "Content-Type: application/json" \
  -d '{"platform":"<\"didi\" | \"indrive\">","driverIds":"<array<uuid>>"}'
POST/v1/vehicles/registrations/batch

Registrar varios vehículos en una plataforma — async

Scope: `vehicles:write`. Responde 202 con `jobId`; consulta el avance en GET /v1/jobs/{id}.

Cuerpo (JSON)

CampoTipoRequerido
platform"didi" | "indrive"
vehicleIdsarray<uuid>

Respuestas

202Job aceptado
400Entrada inválida (VALIDATION)
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
429Límite de solicitudes excedido (revisa Retry-After)
curl -X POST https://api.credikul.com/v1/vehicles/registrations/batch \
  -H "Authorization: Bearer ck_live_TU_LLAVE" \
  -H "Content-Type: application/json" \
  -d '{"platform":"<\"didi\" | \"indrive\">","vehicleIds":"<array<uuid>>"}'
GET/v1/jobs/{id}

Avance de un job por lotes

Parámetros de ruta

CampoTipoRequerido
iduuid

Respuestas

200Estado del job
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
404Recurso no encontrado
429Límite de solicitudes excedido (revisa Retry-After)
curl https://api.credikul.com/v1/jobs/{id} \
  -H "Authorization: Bearer ck_live_TU_LLAVE"

Viajes

GET/v1/rides

Listar viajes (por plataforma)

Scope: `rides:read`. `platform` es requerido. Dinero como string decimal MXN; fechas en día calendario CDMX (−06:00 fijo). Las métricas de indrive se asientan hasta 16 días — re-consulta ventanas recientes.

Parámetros de consulta

CampoTipoRequerido
limitinteger
startingAfteruuid
platform"didi" | "indrive"
fromstring
tostring
driverIduuid
vehicleIduuid
statusenum (6 valores)

Respuestas

200Página de viajes
400Entrada inválida (VALIDATION)
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
429Límite de solicitudes excedido (revisa Retry-After)
curl https://api.credikul.com/v1/rides \
  -H "Authorization: Bearer ck_live_TU_LLAVE"
GET/v1/earnings/daily

Ganancias diarias por conductor

Parámetros de consulta

CampoTipoRequerido
limitinteger
startingAfteruuid
platform"didi" | "indrive"
fromstring
tostring
driverIduuid

Respuestas

200Página de días
400Entrada inválida (VALIDATION)
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
429Límite de solicitudes excedido (revisa Retry-After)
curl https://api.credikul.com/v1/earnings/daily \
  -H "Authorization: Bearer ck_live_TU_LLAVE"
GET/v1/earnings/summary

Totales del periodo

Parámetros de consulta

CampoTipoRequerido
platform"didi" | "indrive"
fromstring
tostring
driverIduuid

Respuestas

200Totales
400Entrada inválida (VALIDATION)
401Llave API faltante, inválida o revocada (UNAUTHORIZED)
403Scope insuficiente, cuenta en revisión o plataforma no habilitada
429Límite de solicitudes excedido (revisa Retry-After)
curl https://api.credikul.com/v1/earnings/summary \
  -H "Authorization: Bearer ck_live_TU_LLAVE"