Alta de vehículos
Dar de alta un vehículo tiene dos pasos: crearlo en Credikul y registrarlo en cada plataforma.
1. Crear el vehículo
curl -X POST https://api.credikul.com/v1/vehicles \
-H "Authorization: Bearer ck_live_TU_LLAVE" \
-H "Content-Type: application/json" \
-d '{
"plate": "ABC-123-D",
"brand": "Nissan",
"model": "Versa",
"year": 2023,
"color": "Blanco",
"city": "Monterrey",
"vin": "3N1CN7AD0KL812345",
"platforms": ["didi", "indrive"]
}'
Tres reglas importantes:
- La placa y el VIN son únicos en TODA la flota Credikul, no solo en tu flotilla — una misma unidad física no puede existir dos veces en la plataforma. Un duplicado responde
409 CONFLICTcon un mensaje que te dice cuál campo chocó. cityes el nombre humano de la ciudad de operación (p. ej."Monterrey"). Es requisito para el registro en didi; consulta los nombres válidos enGET /v1/catalog/didi/cities.- El color debe ser un color del catálogo de didi (ver abajo). Un color que no existe en didi responde
400 VALIDATION.
La respuesta incluye registrations — el estado en cada plataforma, que arranca en none.
El color
El color de un vehículo es siempre un color del catálogo de didi — los mismos con los que se registra la unidad en la plataforma. Consulta la lista (fija, no cambia entre llamadas):
curl https://api.credikul.com/v1/catalog/didi/colors \
-H "Authorization: Bearer ck_live_TU_LLAVE"
# → { "data": [ { "id": 2, "name": "Blanco" }, { "id": 4, "name": "Plateado" }, … ] }
En el alta envía color, colorId o ambos (al menos uno es obligatorio):
color— el nombre del catálogo (p. ej."Plateado"). No distingue mayúsculas ni acentos y acepta sinónimos claros ("Plata"→"Plateado","Guinda"→"Vino"). Un nombre genérico con dos variantes ("Gris","Azul","Verde","Café") se toma como la variante claro — para evitar sorpresas envía el nombre exacto ("Gris oscuro") o el id.colorId— eliddel catálogo (p. ej.6para"Gris oscuro").
Si envías ambos deben ser el mismo color (400 VALIDATION si no; un nombre genérico como "Gris" coincide con cualquiera de sus dos variantes). La respuesta siempre trae el nombre canónico en color y su id en colorId — p. ej. enviar "Plata" devuelve "color": "Plateado", "colorId": 4.
2a. Registrar en didi (asíncrono, 3 pasos)
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" }'
El flujo completo en didi:
- Registro (esta llamada) — el vehículo queda
pendingydocumentsRequired: true. - Documentos — sube la tarjeta de circulación (guía). Sin ella, la revisión no arranca.
- Revisión de DiDi — horas o días. Consulta el estado hasta que sea
approved:
# Estado almacenado (barato — ideal para polling)
curl https://api.credikul.com/v1/vehicles/{id}/registrations/didi \
-H "Authorization: Bearer ck_live_TU_LLAVE"
# Forzar consulta en vivo a la plataforma y persistir el veredicto
curl -X POST https://api.credikul.com/v1/vehicles/{id}/registrations/didi/refresh \
-H "Authorization: Bearer ck_live_TU_LLAVE"
Estados de la registración didi: none → pending → approved | rejected. Si rejected con docReviewStatus: "rejected", la tarjeta fue el problema — vuelve a subirla sin filtros ni ediciones.
Errores comunes: 422 CITY_REQUIRED (asigna city con PATCH /v1/vehicles/{id} primero).
El vehículo se registra en didi con su color de catálogo; a partir de ahí ese color queda fijo mientras esté registrado (ver Campos editables después).
2b. Registrar en indrive (instantáneo)
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": "indrive" }'
indrive registra con placa + VIN en una sola llamada síncrona — sin documentos ni revisión. El estado queda registered de inmediato. Si el vehículo no tiene VIN responde 422; asígnalo con PATCH /v1/vehicles/{id}.
Idempotencia
Repetir el POST …/registrations de un vehículo ya registrado responde 200 con el mismo objeto (no 201) — es seguro reintentar.
Campos editables después
PATCH /v1/vehicles/{id} acepta city, color / colorId (mismas reglas que en el alta), vin, status (activo / mantenimiento / inactivo) y notes. La placa, marca, modelo y año son inmutables por API — contacta a soporte si necesitas corregirlos.
El color no se puede cambiar mientras el vehículo está registrado en didi: didi no permite editar el color de una unidad ya registrada, así que un PATCH con otro color responde 409 VEHICLE_COLOR_LOCKED y no guarda ningún cambio de esa llamada. Enviar el mismo color que ya tiene es válido. Para cambiarlo, elimina el vehículo de didi y vuelve a registrarlo.