Skip to content

API backend para proyecto de datos abiertos sobre transporte público

License

Notifications You must be signed in to change notification settings

labexp/buses-api

Repository files navigation

buses API engine-js

Implementación en node.js del API de backend para el servicio de datos abiertos sobre transporte público

Requisitos

Configuración del ambiente de desarrollo

Se asume que los siguientes comandos se están ejecutando desde el directorio del proyecto ./buses-api

  • Descargar las dependencias
npm install
  • Levantar el servicio de base de datos
export ORIENTDB_ROOT_PASSWORD="root"
docker-compose up
  • Crear la base de datos vacía y el usuario de la aplicación iniciando el engine por primera vez
bin/www
  • Inicializar el esquema en la base de datos recién creada
node_modules/orientjs/bin/orientjs migrate up

Recursos

POST http://localhost:3000/buses/v0.1/route

POST http://localhost:3000/buses/v0.1/route
  • Request
{
    "id": "420",
    "stops": [
         {
             "name": "Heredia",
             "location": {
                 "latitude": 9.894389,
                 "longitude": -81.38932
             }
         },
         {
             "name": "San José",
             "location": {
                 "latitude": 9.43843,
                 "longitude": -84.43784
             }
         }
    ],
    "path": [
        {
            "latitude": 9.894389,
            "longitude": -81.38932
        },
        {
            "latitude": 9.32832,
            "longitude": -81.38232
        },
        {
            "latitude": 10.4384,
            "longitude": -84.438943
        },
        {
            "latitude": 9.43843,
            "longitude": -84.43784
        }
    ]
}
  • Response
{
  "route": "421"
}

GET http://localhost:3000/buses/v0.1/route/id/{id}

  • Request
GET http://localhost:3000/buses/v0.1/route/id/420
  • Response
{
  "id": "420",
  "stops": [
    {
      "location": {
        "latitude": 9.894389,
        "longitude": -81.38932
      },
      "name": "Heredia",
      "routes": [
        "420",
        "400",
        "410"
      ],
      "createdOn": "2016-01-17T04:19:59.000Z",
      "lastUpdatedOn": "2016-01-17T04:19:59.000Z"
    },
    {
      "location": {
        "latitude": 9.43843,
        "longitude": -84.43784
      },
      "name": "San José",
      "routes": [
        "420",
        "415",
        "400"
      ],
      "createdOn": "2016-01-17T04:19:59.000Z",
      "lastUpdatedOn": "2016-01-17T04:19:59.000Z"
    }
  ],
  "path": [
    {
      "latitude": 9.894389,
      "longitude": -81.38932
    },
    {
      "latitude": 9.32832,
      "longitude": -81.38232
    },
    {
      "latitude": 10.4384,
      "longitude": -84.438943
    },
    {
      "latitude": 9.43843,
      "longitude": -84.43784
    }
  ]
}

GET http://localhost:3000/buses/v0.1/route/ids

  • Request
GET http://localhost:3000/buses/v0.1/route/ids
  • Response
[
  "400",
  "410",
  "415",
  "420",
  "421"
]

API Trazador Buses

Iniciar una traza

Request

POST /buses/v0.1/trace
{
    "deviceId": "...",
    "timestamp": "UTC timestamp string"
}

La propiedad deviceId debe corresponder a algún valor que identifique de manera única al dispositivo con respecto a la aplicación trazador. Ver http://android-developers.blogspot.com/2011/03/identifying-app-installations.html

Response

HTTP 200 OK

{
    "traceId": "..."
}

Cualquier otro código HTTP en caso de error.

Asociar una lista de puntos con una traza

Request

POST /buses/v0.1/trace/{traceId}/points
{
    "deviceId": "...",
    "timestamp": "UTC timestamp string",
    "points": [
        {
            "latitude": "...",
            "longitude": "..."
        },
        {
            "latitude": "...",
            "longitude": "..."
        },
        {
            "latitude": "...",
            "longitude": "..."
        },
        {
            "latitude": "...",
            "longitude": "..."
        }
    ]
}

Response

HTTP 200 OK

Cualquier otro código HTTP en caso de error.

Asociar una parada con una traza

Request

POST /buses/v0.1/trace/{traceId}/stop
{
    "deviceId": "...",
    "timestamp": "UTC timestamp string",
    "stop": {
                "latitude": ...,
                "longitude": ...
            }
}

Response

HTTP 200 OK

Cualquier otro código HTTP en caso de error.

Metadatos de una traza

Para escribir los metadatos:

Request

PUT /buses/v0.1/trace/{traceId}/metadata
{
    "deviceId": "...",
    "timestamp": "UTC timestamp string",
    "routeCode": "400",
    "routeName": "Heredia - San José por La Uruca",
    "routePrice": 560.0
}

Response

HTTP 200 OK

Cualquier otro código HTTP en caso de error.

Para el folksonomy necesita leer todos los metadatos existentes:

Request

GET /buses/v0.1/trace/metadata

Response

HTTP 200 OK

[
    {
        "traceId": "...",
        "deviceId": "...",
        "timestamp": "UTC timestamp string",
        "routeCode": "400",
        "routeName": "Heredia - San José por La Uruca",
        "routePrice": 560.0
    },
    {
        "traceId": "...",
        "deviceId": "...",
        "timestamp": "UTC timestamp string",
        "routeCode": "420",
        "routeName": "Los Lagos de Heredia - San José por La Uruca",
        "routePrice": 480.0
    },
    ...
]

Cualquier otro código HTTP en caso de error.

Finalizar o descartar una traza

Request

PUT /buses/v0.1/trace/{traceId}

Para finalizar una ruta:

{
    "status": "finished"
}

Para descartar una ruta:

{
    "status": "discarded"
}

Response

HTTP 200 OK

Cualquier otro código HTTP en caso de error.

About

API backend para proyecto de datos abiertos sobre transporte público

Resources

License

Stars

Watchers

Forks

Packages

No packages published