Envio de posicionamiento de señales V-16 activas
Versión
Fecha | Versión |
---|---|
23-02-2020 | 1.0 |
Contacto de Soporte
Para solventar cualquier duda o incidencia se ha abierto un buzón de correo en el que se atenderán estas
Información práctica
Documentación del API de conexión a señal V16
- Instrucción 18/ V- 132
- La información del API de la Bandeja de de conexión a señal V16 se encuentra en las siguientes url: Swagger
- Documentación descriptiva del servicio Definición de protocolos e interfaces para la recogida de notificaciones de la señal V16 v0.3
Entornos
- Preproducción: dgt30v16input-dev.cmobility30.es
Para la ejecución de las pruebas es necesario el uso de un Cliente REST. Se propone la descarga de Postman como cliente para el seguimiento del workshop.
Generación automática de un cliente
Al estar basado en SWAGGER la publicación del API, es posible utilizar la utilidad swagger-codegen-cli para generar una aplicación completa, a partir del fichero JSON obtenido de la descarga
Mensaje a enviar con la notificación de un evento
La conjunto de los atributos del mensaje se encuentra descrita en el documento
{
"message_ver" : "1.0",
"idcompany":"v16.example.com",
"token": "asdfasdfasdfasdf",
"actionid": "1",
"event_detection_type":1,
"detection_time": "2020-02-24 07:17:27",
"lon": -3.5 ,
"lat": 40.5,
"device_event_type": 1,
"device_event_type_value": 1,
"information_quality": 1,
"heading": 100,
"station_type": 1,
"speed": 0,
"ambient_temperature": 25,
"lane_position": 1,
"use": 1
}
Tablas maestras
Para interpretar la codificación contenida en el mensaje POST a enviar al servicio, es necesario consultar ciertas Tablas Auxiliares.
Los atributos están codificados y pueden consultarse invocando al método GET de la tabla maestra correspondiente. Estas están constantemente actualizadas en https://app.swaggerhub.com/apis-docs/jgcasta/DGT3.0-v16/1.0#/
Cambios en las tablas Maestras
Los cambios en alguna de las tablas es posible conocerlos consultando la operación /api/masterTables/1.0/getChangeTables que devuelve la última fecha de actualización de cada tabla
{
"info_code": 0,
"info_desc": "OK",
"data": [
{
"ts": "2020-02-24T07:53:24.090+0000",
"name": "v16_device_events_types"
},
{
"ts": "2020-02-24T07:54:21.671+0000",
"name": "v16_event_detection_types"
},
{
"ts": "2020-02-24T07:54:21.680+0000",
"name": "v16_lane_positions"
},
{
"ts": "2020-02-24T07:54:21.681+0000",
"name": "v16_station_types"
},
{
"ts": "2020-02-24T07:54:21.683+0000",
"name": "v16_uses"
}
]
}
Ejercicios prácticos
Identificación en el servicio
Para llevar a cabo las operaciones del API es necesario obtener un token de sesión que caducará de forma aleatoria a lo largo de la misma. La operación que permite obtenerlo es /api/1.0/getToken que devuelve el siguiente resultado:
{
"info_code": 0,
"info_desc": "OK",
"data": [
{
"token": "28a9e96167a6ee0f84bb9c46e8a3b381032f7d9de59ce882539db044e4ee691f"
}
]
}
El proceso de autenticación está basado en certificados digitales de cliente. Para la realización de pruebas y posterior pase a producción, el cliente deberá cumplimentar la documentación proporcionada en la que se le solicitan los datos necesarios de la empresa que vaya a consumir los servicios. El certificado será emitido por la PKI de la plataforma y entregado físicamente al responsable del mismo.
En caso de no tener permisos tanto en esta operación como en el envío de eventos, se devolverá un mensaje del tipo
{
"info_code": 99,
"info_desc": "Authorization error",
"data": []
}
Se trata de una identificación correcta gracias a la introducción de los valores
token
eidcompany
. El token es el proporcionado temporalmente por el servicio, e idcompany corresponde al campo CN del certificado digital de cliente.
Envío de evento
Desde un cliente, una vez obtenido el token de autorización, solo hay que invocar a la operación POST /api/v16/1.0/postincidence
{
"message_ver" : "1.0",
"idcompany":"v16.example.com",
"token": "asdfasdfasdfasdf",
"actionid": "1",
"event_detection_type":1,
"detection_time": "2020-02-24 07:17:27",
"lon": -3.5 ,
"lat": 40.5,
"device_event_type": 1,
"device_event_type_value": 1,
"information_quality": 1,
"heading": 100,
"station_type": 1,
"speed": 0,
"ambient_temperature": 25,
"lane_position": 1,
"use": 1
}
El resultado de esta operación será, si todo ha ido correctamente
{
"info_code": 0,
"info_desc": "OK",
"data": []
}
En el caso de producirse algún error durante el procesamiento se devolverá el error correspondiente listado en la operacion /api/masterTables/1.0/getInfos
© 2021 DGT. Todos los derechos reservados.