... | @@ -8,15 +8,14 @@ Dado que el estado actual de los vehiculos no permiten obtener una muestra de da |
... | @@ -8,15 +8,14 @@ Dado que el estado actual de los vehiculos no permiten obtener una muestra de da |
|
|
|
|
|
Asi mismo, dentro de este caso de uso también se publicarán y difundirán las informaciones de congestión obtenidas directamente por el Sistema de Gestión de Tráfico de la DGT con el que habrá que establecer una capa de integración.
|
|
Asi mismo, dentro de este caso de uso también se publicarán y difundirán las informaciones de congestión obtenidas directamente por el Sistema de Gestión de Tráfico de la DGT con el que habrá que establecer una capa de integración.
|
|
|
|
|
|
La plataforma, a diferencia de otros casos de uso, únicamente cuenta con la funcionalidad de **suscripción (recepción)** de información. Esta se realiza a través de un servicio de API REST, el cual se describe más adelante.
|
|
La plataforma, a diferencia de otros casos de uso, únicamente cuenta con la funcionalidad de **suscripción (recepción)** de información. Esta se realiza a través de un servicio de API REST, el cual se describe más adelante.
|
|
|
|
|
|
Dicha funcionalidad de recepción requiere de un certificado de acceso, el cual debe ser solicitado y suministrado por DGT 3.0. Este certificado, de no haber sido solicitado ya, se deberá solicitar a *[soporte@cmobility30.es](mailto:soporte@cmobility30.es)*.
|
|
Dicha funcionalidad de recepción requiere de un certificado de acceso, el cual debe ser solicitado y suministrado por DGT 3.0. Este certificado, de no haber sido solicitado ya, se deberá solicitar a [_soporte@cmobility30.es_](mailto:soporte@cmobility30.es).
|
|
|
|
|
|
A continuación se muestran las URLs de acceso a las funcionalidades del caso de uso.
|
|
A continuación se muestran las URLs de acceso a las funcionalidades del caso de uso.
|
|
|
|
| Modo | URL | Descripción |
|
|
| Modo | URL | Descripción |
|
|
|------|-----|-------------|
|
|
| ----------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
|
|
| Suscripción | <https://pre.cmobility30.es/use-case-7> | Endpoint del entorno de integración para la suscripción |
|
|
| Suscripción | https://pre.cmobility30.es/use-case-7 | Endpoint del entorno de integración para la suscripción |
|
|
|
|
|
|
|
|
## Suscripción
|
|
## Suscripción
|
|
|
|
|
... | @@ -27,116 +26,31 @@ Este caso de uso tiene un comportamiento similar al que ofrece la interfa de ban |
... | @@ -27,116 +26,31 @@ Este caso de uso tiene un comportamiento similar al que ofrece la interfa de ban |
|
En el endpoint se publican las velocidades recomendadas en formato JSON. Aquí se puede ver un ejemplo:
|
|
En el endpoint se publican las velocidades recomendadas en formato JSON. Aquí se puede ver un ejemplo:
|
|
|
|
|
|
```json
|
|
```json
|
|
[
|
|
|
|
{
|
|
|
|
"properties": {
|
|
|
|
"lat": 43.358929976820946,
|
|
|
|
"lng": -4.044689973816276,
|
|
|
|
"timeStamp": "2022-08-29T13:02:21.037+02:00",
|
|
|
|
"vialidad": {
|
|
|
|
"roadDescription": "A-67/Palencia",
|
|
|
|
"direction": 1,
|
|
|
|
"affectedLength": 2524.0,
|
|
|
|
"roadMaxSpeed": 90.0
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"recommendedSpeeds": [
|
|
|
|
{
|
|
|
|
"speed": 40,
|
|
|
|
"kmStart": 0.0,
|
|
|
|
"kmEnd": 12.399856336374242
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"speed": 50,
|
|
|
|
"kmStart": 12.399856336374242,
|
|
|
|
"kmEnd": 27.279683940023332
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"speed": 60,
|
|
|
|
"kmStart": 27.279683940023332,
|
|
|
|
"kmEnd": 44.63948281094727
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"speed": 70,
|
|
|
|
"kmStart": 44.63948281094727,
|
|
|
|
"kmEnd": 64.47925294914606
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"speed": 80,
|
|
|
|
"kmStart": 64.47925294914606,
|
|
|
|
"kmEnd": 86.7989943546197
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"speed": 90,
|
|
|
|
"kmStart": 86.7989943546197
|
|
|
|
}
|
|
|
|
]
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"properties": {
|
|
|
|
"lat": 43.35894003510475,
|
|
|
|
"lng": -4.045290034264326,
|
|
|
|
"timeStamp": "2022-08-29T13:02:21.038+02:00",
|
|
|
|
"vialidad": {
|
|
|
|
"roadDescription": "N-611/N-634",
|
|
|
|
"direction": 0,
|
|
|
|
"affectedLength": 3083.0,
|
|
|
|
"roadMaxSpeed": 90.0
|
|
|
|
}
|
|
|
|
},
|
|
|
|
"recommendedSpeeds": [
|
|
|
|
{
|
|
|
|
"speed": 60,
|
|
|
|
"kmStart": 0.0,
|
|
|
|
"kmEnd": 67.68004816990603
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"speed": 70,
|
|
|
|
"kmStart": 67.68004816990603,
|
|
|
|
"kmEnd": 145.02867464979863
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"speed": 80,
|
|
|
|
"kmStart": 145.02867464979863,
|
|
|
|
"kmEnd": 232.0458794396778
|
|
|
|
},
|
|
|
|
{
|
|
|
|
"speed": 90,
|
|
|
|
"kmStart": 232.0458794396778
|
|
|
|
}
|
|
|
|
]
|
|
|
|
}
|
|
|
|
]
|
|
|
|
```
|
|
```
|
|
|
|
|
|
A continuación se presenta una descripción de cada uno de los campos del JSON anterior. Dicho JSON, publica la información de una congestión concreta así como las velocidades recomendadas en diferentes puntos:
|
|
A continuación se presenta una descripción de cada uno de los campos del JSON anterior. Dicho JSON, publica la información de una congestión concreta así como las velocidades recomendadas en diferentes puntos:
|
|
|
|
|
|
En el documento se publica una lista de carreteras afectadas en las que existe un atasco, cada una de ellas esta formada por un campo **_properties_** y **_recommendedSpeeds_**. Es decir, cada conjunto de estos dos campos referencia a una carretera diferente con recomendaciones de velocidad diferentes.
|
|
En el documento se publica una lista de carreteras afectadas en las que existe un atasco, cada una de ellas esta formada por un campo **_properties_** y **_recommendedSpeeds_**. Es decir, cada conjunto de estos dos campos referencia a una carretera diferente con recomendaciones de velocidad diferentes.
|
|
|
|
|
|
- **Properties:** Contiene información relativa a la zona afectada.
|
|
- **Properties:** Contiene información relativa a la zona afectada.
|
|
- **Lat:** Latitud donde comienza el atasco.
|
|
- **Lat:** Latitud donde comienza el atasco.
|
|
- **Lon:** Longitud donde comienza el atasco.
|
|
- **Lon:** Longitud donde comienza el atasco.
|
|
- **Timestamp(Fecha UTC)**: Fecha y hora en formato UTC del momento en el que se ha actualizado la información. Puede no coinicidir con la fecha y hora actuales
|
|
- **Timestamp(Fecha UTC)**: Fecha y hora en formato UTC del momento en el que se ha actualizado la información. Puede no coinicidir con la fecha y hora actuales
|
|
- **Vialidad.**
|
|
- **Vialidad.**
|
|
- **RoadDescription:** Nombre de la carretera o carreteras que se ven afectadas.
|
|
- **RoadDescription:** Nombre de la carretera o carreteras que se ven afectadas.
|
|
- **Direction:** La dirección de la carretera sobre la que se aplica el algoritmo. Puede tener valores 1 (Ascendente) o 0 (Descendente).
|
|
- **Direction:** La dirección de la carretera sobre la que se aplica el algoritmo. Puede tener valores 1 (Ascendente) o 0 (Descendente).
|
|
- **AffectedLength:** Longitud, en metros, del tramo en el que actualmente hay una retención. Cuanto mayor sea esta distancia mayor será la distancia entre velocidades recomendadas.
|
|
- **AffectedLength:** Longitud, en metros, del tramo en el que actualmente hay una retención. Cuanto mayor sea esta distancia mayor será la distancia entre velocidades recomendadas.
|
|
- **RoadMaxSpeed:** Velocidad máxima de la vía, en Km/h.
|
|
- **RoadMaxSpeed:** Velocidad máxima de la vía, en Km/h.
|
|
- **RecommendedSpeeds:** Contiene las velocidades recomendadas en los distintos tramos.
|
|
- **RecommendedSpeeds:** Contiene las velocidades recomendadas en los distintos tramos.
|
|
- **Speed:** Velocidad recomendada.
|
|
- **Speed:** Velocidad recomendada.
|
|
- **kmStart:** Punto de inicio de la zona de recomendación. Representa la distancia desde el punto de origen en la que comienza la zona de velocidad recomendada.
|
|
- **kmStart:** Punto de inicio de la zona de recomendación. Representa la distancia desde el punto de origen en la que comienza la zona de velocidad recomendada.
|
|
- **kmEnd:** Punto de finalización de la zona de recomendación. Representa la distancia desde el punto de origen en la que finaliza la zona de velocidad recomendada.
|
|
- **kmEnd:** Punto de finalización de la zona de recomendación. Representa la distancia desde el punto de origen en la que finaliza la zona de velocidad recomendada.
|
|
|
|
|
|
## Errores
|
|
## Errores
|
|
|
|
|
|
Todas las respuestas HTTP que no sean **200 – OK**, se pueden considerar **inválidas**. Independientemente del mensaje de error, el formato de la respuesta es como el siguiente ejemplo:
|
|
Todas las respuestas HTTP que no sean **200 – OK**, se pueden considerar **inválidas**. Independientemente del mensaje de error, el formato de la respuesta es como el siguiente ejemplo:
|
|
|
|
|
|
```json
|
|
```json
|
|
{
|
|
|
|
"status": 401,
|
|
|
|
"code": 1,
|
|
|
|
"message": "User not found or valid"
|
|
|
|
}
|
|
|
|
```
|
|
```
|
|
|
|
|
|
La información relativa a los errores en este caso de uso se puede encontrar aquí. Estos errores tendrán tres categorías principales:
|
|
La información relativa a los errores en este caso de uso se puede encontrar aquí. Estos errores tendrán tres categorías principales:
|
... | @@ -144,42 +58,37 @@ La información relativa a los errores en este caso de uso se puede encontrar aq |
... | @@ -144,42 +58,37 @@ La información relativa a los errores en este caso de uso se puede encontrar aq |
|
#### Error de Autentificación
|
|
#### Error de Autentificación
|
|
|
|
|
|
- HTTP Status: **401 - Unauthorized**
|
|
- HTTP Status: **401 - Unauthorized**
|
|
|
|
| Code | Message |
|
|
| Code | Message |
|
|
|------|---------|
|
|
| ---- | ----------------------- |
|
|
| 1 | User not found or valid |
|
|
| 1 | User not found or valid |
|
|
|
|
|
|
|
|
#### Error de Cliente
|
|
#### Error de Cliente
|
|
|
|
|
|
- HTTP Status: **400 - Bad Request**
|
|
- HTTP Status: **400 - Bad Request**
|
|
|
|
| Code | Message |
|
|
| Code | Message |
|
|
|------|---------|
|
|
| ---- | ------------------------------------------------------------------- |
|
|
| 0 | Authenticate |
|
|
| 0 | Authenticate |
|
|
| 2 | Entity ID not found |
|
|
| 2 | Entity ID not found |
|
|
| 3 | Missing required property |
|
|
| 3 | Missing required property |
|
|
| 4 | Incorrect token received |
|
|
| 4 | Incorrect token received |
|
|
| 5 | Expired token received |
|
|
| 5 | Expired token received |
|
|
| 6 | There is an error with the token provided. Please request a new one |
|
|
| 6 | There is an error with the token provided. Please request a new one |
|
|
| 7 | No token received |
|
|
| 7 | No token received |
|
|
| 8 | Missing request header |
|
|
| 8 | Missing request header |
|
|
| 9 | Permission denied. Role assigned to user missing |
|
|
| 9 | Permission denied. Role assigned to user missing |
|
|
| 10 | There is an error in one or more elements |
|
|
| 10 | There is an error in one or more elements |
|
|
|
|
|
|
|
|
A continuación se muestra una respuesta de *error 5 - Expired token received* la cual tendrá el siguiente formato:
|
|
A continuación se muestra una respuesta de _error 5 - Expired token received_ la cual tendrá el siguiente formato:
|
|
|
|
|
|
```json
|
|
```json
|
|
{
|
|
|
|
"status": 400,
|
|
|
|
"code": 5,
|
|
|
|
"message": "Expired token received"
|
|
|
|
}
|
|
|
|
```
|
|
```
|
|
|
|
|
|
#### Error de Servidor
|
|
#### Error de Servidor
|
|
|
|
|
|
- HTTP Status: **500 - Internal Server Error**
|
|
- HTTP Status: **500 - Internal Server Error**
|
|
|
|
| Code | Message |
|
|
| Code | Message |
|
|
|------|---------|
|
|
| ---- | -------------- |
|
|
| 28 | Internal error |
|
|
| 28 | Internal error | |
|
|