Create App Location Event
Endpoint que permite delimitar una sección geográfica y asociarla a una aplicación (dada por el campo app_id), registrando una acción que se ejecutará cuando la aplicación genere algún reporte de posición en esa sección. El conjunto de información sección/acción se denomina como evento, el cual queda almacenado en el servicio y es monitoreado en segundo plano por el servicio. Para que se registre adecuadamente el evento, se debe respetar la composición del cuerpo de la solicitud.
Endpoint
Headers
Key | Value | Description |
---|---|---|
Content-Type | application/json | |
Authorization | Bearer {{access_token}} | access_token obtained in Atenea |
Method: POST
URL: https://api.trust.lat/lighthouse/api/v1/event
Recuerda que para utilizar este endpoint es necesario un access token obtenido en el servicio Atenea.
Body
Fields
- listener_type: Texto que indica que tipo de interacción activa al evento. En este caso, el valor de este campo debe ser app_location. Obligatorio.
- app_id: Identificador de aplicación provisto por empresa Trust. Obligatorio.
- company_id: Identificador de compañia provisto por empresa Trust. Obligatorio.
- location: Estructura que permite definir la sección geográfica. Obligatorio.
- type: Texto que indica el tipo de perímetro utilizado para delimitar la sección. Actualmente solo se encuentra operativo el valor square. Obligatorio.
- lat_point_1: Latitud del primer punto de referencia. Obligatorio.
- lng_point_1: Longitud del primer punto de referencia. Obligatorio.
- lat_point_2: Latitud del segundo punto de referencia. Obligatorio.
- lng_point_2: Longitud del segundo punto de referencia. Obligatorio.
- inner_space: Variable booleana que indica si se debe considerar el área contenida por el perímetro de la sección. Opcional.
- action: Estructura que contiene la información sobre la acción a ejecutar cuando se active un evento. Obligatorio.
- external_action: Variable booleana que indica si la acción debe ser manejada por un servicio externo o por este servicio. Actualmente solo se encuentran implementadas las acciones externas, as í que el valor de este campo debe ser true. Obligatorio.
- callback_type: Variable que indica que tipo de función se lleva a cabo cuando se activa un evento. Actualmente sólo se permite como valor webhook Obligatorio.
- callback_url: Dirección URL a la que se envía un aviso de la activación del evento. Obligatorio.
- delete_after_action: Valor booleano que indica si el evento debe eliminarse al finalizar su activación. Si el valor es falso, el evento se ejecutará hasta que sea eliminado de forma manual. Opcional.
Example
{
"listener_type": "app_location",
"app_id": "99",
"company_id": "99",
"location": {
"type": "square",
"lat_point_1": -34.04168267,
"lng_point_1": -70.39076881,
"lat_point_2": -32.04168267,
"lng_point_2": -72.39076881,
"inner_space": true
},
"action": {
"external_action": true,
"callback_type": "webhook",
"callback_url": "https://webhook.site/11111111-1111-1111-1111-111111111111",
"delete_after_action": true
}
}
callback_url
Como se menciona anteriormente, este campo almacena una url que se utiliza para avisar al backend del integrador que un evento registrado ha sido detectado. Este aviso se realiza en forma de una solicitud web, llamada que se realiza en un formato similar al siguiente:
curl --location --request POST 'callback_url' \
--header 'Content-Type: application/json' \
--data-raw '{
"event_id": "ffffffff-ffff-ffff-ffff-ffffffffffff",
"room_id": "",
"callback_url": "https://webhook.site/11111111-1111-1111-1111-111111111111",
"callback_type": "webhook",
"data": {
"trust_id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa"
}
}'
El endpoint que se asigne en el campo callback_url debe ser capaz de tolerar un alto nivel de llamadas paralelas
Code Examples
- Curl
- JavaScript
- Python
curl --location --request POST 'https://api.trust.lat/lighthouse/api/v1/event' \
--header 'Authorization: Bearer *********' \
--header 'Content-Type: application/json' \
--data-raw '{
"listener_type": "app_location",
"app_id": "99",
"company_id": "99",
"location": {
"type": "square",
"lat_point_1": -34.04168267,
"lng_point_1": -70.39076881,
"lat_point_2": -32.04168267,
"lng_point_2": -72.39076881,
"inner_space": true
},
"action": {
"external_action": true,
"callback_type": "webhook",
"callback_url": "https://webhook.site/11111111-1111-1111-1111-111111111111",
"delete_after_action": true
}
}'
import requests
url = "https://api.trust.lat/lighthouse/api/v1/event"
payload="{\n \"listener_type\": \"app_location\",\n \"app_id\": \"99\",\n \"company_id\": \"99\",\n \"location\": {\n \"type\": \"square\",\n \"lat_point_1\": -34.04168267,\n \"lng_point_1\": -70.39076881,\n \"lat_point_2\": -32.04168267,\n \"lng_point_2\": -72.39076881,\n \"inner_space\": true\n },\n \"action\": {\n \"external_action\": true,\n \"callback_type\": \"webhook\",\n \"callback_url\": \"https://webhook.site/11111111-1111-1111-1111-111111111111\",\n \"delete_after_action\": true\n }\n}"
headers = {
'Authorization': 'Bearer *********',
'Content-Type': 'application/json'
}
response = requests.request("POST", url, headers=headers, data=payload)
print(response.text)
var axios = require('axios');
var data = JSON.stringify({"listener_type":"app_location","app_id":"99","company_id":"99","location":{"type":"square","lat_point_1":-34.04168267,"lng_point_1":-70.39076881,"lat_point_2":-32.04168267,"lng_point_2":-72.39076881,"inner_space":true},"action":{"external_action":true,"callback_type":"webhook","callback_url":"https://webhook.site/11111111-1111-1111-1111-111111111111","delete_after_action":true}});
var config = {
method: 'post',
url: 'https://api.trust.lat/lighthouse/api/v1/event',
headers: {
'Authorization': 'Bearer *********',
'Content-Type': 'application/json'
},
data : data
};
axios(config)
.then(function (response) {
console.log(JSON.stringify(response.data));
})
.catch(function (error) {
console.log(error);
});
Responses
HTTP Code: 201 Created
Event registered successfully
{
"status": "Created",
"value": {
"event_id": "aaaaaaaa-aaaa-aaaa-aaaa-aaaaaaaaaaaa",
"listener_type": "app_location",
"company_id": "99",
"app_id": "99"
}
}
HTTP Code: 422 Unprocessable Entity
App_id missing
{
"code": 422,
"message": "Validation fail",
"errors": {
"text": "Problem with app_location event type",
"data": null,
"data2": null,
"validations": {
"app_id": "app_id not present"
}
}
}