Crear actividad
[ POST ]
https://sync.airbagtech.io/activities
Crea una actividad para un conductor. Dependiendo del tipo de actividad (slug) se requieren algunos campos adicionales.
aviso
- Por ahora envía siempre
photosyvoicenotes, aunque sea como arreglos vacíos ([]): si se omiten, la API responde400(Photos photos must be an array). Se está corrigiendo para que sean realmente opcionales. - Las descargas de mercancía (
UNLOAD_HANDLE) no se pueden registrar por ahora a través de esta API. Se está corrigiendo.
Campos
Se envían dentro del objeto activity. Un campo que la API no reconoce se rechaza con 400.
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| slug | String | Sí | Tipo de actividad. Puede tomar uno de los siguientes valores: - entrega - traffic - load-handle - stop - break - gas - start_workday - end_workday - other |
| date | String | Sí | Fecha y hora de la actividad en formato ISO 8601, por ejemplo 2024-05-28T00:21:31Z. |
| driverId | String | Sí | ID del conductor. Acepta el ID que tu empresa usó al crearlo o el airbagId. |
| message | String | Sí | Mensaje o descripción, escrito por el conductor, ligado a la actividad. En una entrega no exitosa (wasDeliverySuccess: false) debe tener contenido. |
| position.acc | Number | Sí | Precisión del GPS al tomar la posición. |
| position.lat | Number | Sí | Latitud donde se generó la actividad. |
| position.lon | Number | Sí | Longitud donde se generó la actividad. |
| position.spd | Number | Sí | Velocidad a la que se encontraba el conductor al realizar el reporte. |
| photos | Array<String> | Sí (ver aviso) | Fotos en base64. Se permiten máximo 3 fotos. Envía [] si no hay fotos. |
| voicenotes | Array<String> | Sí (ver aviso) | Notas de voz en base64. Se permite máximo 1 nota de voz. Envía [] si no hay notas de voz. |
| wasDeliverySuccess | Boolean | Sólo si slug es entrega | Indica si la entrega fue exitosa. |
| gasCost | Number | Sólo si slug es gas | Total pagado por el combustible. Puede ser 0. |
| gasLiters | Number | Sólo si slug es gas | Litros cargados. Puede ser 0. |
| gasType | String | Sólo si slug es gas | Tipo de combustible: - diesel - green - red |
| gasMileageKm | Number | Sólo si slug es gas | Kilometraje del vehículo al cargar combustible. Puede ser 0. |
| handleArriving | Boolean | No | En load-handle: true al llegar a cargar, false al salir. |
| stopType | String | No | En stop, tipo de pausa:- REST - FOOD - BATHROOM - OTHER |
| otherType | String | No | En other, tipo de registro:- MAINTENANCE - OTHER |
Headers
| Content-Type | Authorization |
|---|---|
| application/json | apikey {{API_KEY}} |
Ejemplo
{
"activity": {
"driverId": "EMP-1042",
"slug": "entrega",
"message": "Entregado en almacén",
"wasDeliverySuccess": true,
"date": "2024-05-28T00:21:31Z",
"position": {
"lat": 19.5,
"lon": -99.3,
"acc": 1,
"spd": 0
},
"photos": ["/9j/4AAQSkZJRgABAQEAAAAAAAD..."],
"voicenotes": []
}
}
Curl
curl -X POST "https://sync.airbagtech.io/activities" \
-H "Content-Type: application/json" \
-H "Authorization: apikey {{API_KEY}}" \
-d '{
"activity": {
"driverId": "EMP-1042",
"slug": "entrega",
"message": "Entregado en almacén",
"wasDeliverySuccess": true,
"date": "2024-05-28T00:21:31Z",
"position": {"lat": 19.5, "lon": -99.3, "acc": 1, "spd": 0},
"photos": [],
"voicenotes": []
}
}'
Respuestas
✅ Respuesta exitosa (200 OK)
Devuelve los datos enviados en activity, con un campo adicional versionCode de uso interno. La respuesta no incluye el ID de la actividad creada: para obtenerlo, consulta el listado con Consultar actividades.
{
"status": true,
"activity": {
"driverId": "EMP-1042",
"slug": "entrega",
"message": "Entregado en almacén",
"wasDeliverySuccess": true,
"date": "2024-05-28T00:21:31Z",
"position": {"lat": 19.5, "lon": -99.3, "acc": 1, "spd": 0},
"photos": [],
"voicenotes": [],
"versionCode": -1
}
}
❌ Respuesta con error (400 Bad Request)
{
"status": false,
"message": "Message can't be blank",
"errorId": "sentry_error_id_123"
}
| Mensaje | Causa |
|---|---|
Message can't be blank, Position acc can't be blank, etc. | Falta un campo obligatorio. Si faltan varios, los mensajes llegan separados por comas. |
<valor> is not included in the list | slug, gasType, stopType u otherType con un valor no permitido. |
Error: Activity has unknown parameters: <campos> | Se envió un campo que la API no reconoce. |
Error: Driver not found | El driverId no corresponde a ningún conductor de tu empresa. |
| Otros mensajes | Validaciones del tipo de actividad (por ejemplo, una entrega sin wasDeliverySuccess o una carga de combustible incompleta): se devuelve el mensaje de rechazo tal cual. |