Saltar al contenido principal

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 photos y voicenotes, aunque sea como arreglos vacíos ([]): si se omiten, la API responde 400 (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.

NombreTipoRequeridoDescripción
slugStringSíTipo de actividad. Puede tomar uno de los siguientes valores:
- entrega
- traffic
- load-handle
- stop
- break
- gas
- start_workday
- end_workday
- other
dateStringSíFecha y hora de la actividad en formato ISO 8601, por ejemplo 2024-05-28T00:21:31Z.
driverIdStringSíID del conductor. Acepta el ID que tu empresa usó al crearlo o el airbagId.
messageStringSíMensaje o descripción, escrito por el conductor, ligado a la actividad. En una entrega no exitosa (wasDeliverySuccess: false) debe tener contenido.
position.accNumberSíPrecisión del GPS al tomar la posición.
position.latNumberSíLatitud donde se generó la actividad.
position.lonNumberSíLongitud donde se generó la actividad.
position.spdNumberSíVelocidad a la que se encontraba el conductor al realizar el reporte.
photosArray<String>Sí (ver aviso)Fotos en base64. Se permiten máximo 3 fotos. Envía [] si no hay fotos.
voicenotesArray<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.
wasDeliverySuccessBooleanSólo si slug es entregaIndica si la entrega fue exitosa.
gasCostNumberSólo si slug es gasTotal pagado por el combustible. Puede ser 0.
gasLitersNumberSólo si slug es gasLitros cargados. Puede ser 0.
gasTypeStringSólo si slug es gasTipo de combustible:
- diesel
- green
- red
gasMileageKmNumberSólo si slug es gasKilometraje del vehículo al cargar combustible. Puede ser 0.
handleArrivingBooleanNoEn load-handle: true al llegar a cargar, false al salir.
stopTypeStringNoEn stop, tipo de pausa:
- REST
- FOOD
- BATHROOM
- OTHER
otherTypeStringNoEn other, tipo de registro:
- MAINTENANCE
- OTHER

Headers​

Content-TypeAuthorization
application/jsonapikey {{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"
}
MensajeCausa
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 listslug, 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 foundEl driverId no corresponde a ningún conductor de tu empresa.
Otros mensajesValidaciones del tipo de actividad (por ejemplo, una entrega sin wasDeliverySuccess o una carga de combustible incompleta): se devuelve el mensaje de rechazo tal cual.