Mesas AVE API REST
NodeJS Backend para la App móvil Mesas AVE.
Mesas AVE es una App móvil para potenciar la economía colaborativa compartiendo mesa en trenes de tipo AVE Renfe.
A continuación se describen todos los servicios que ofrece el API.
http://mesasave.herokuapp.com/api/v1
Listado de servicios
Resumen
Servicio | Descripción | Requiere Authorization |
---|---|---|
GET stations | Obtiene todas las estaciones | No |
GET stations/[id] | Obtiene una estación | No |
GET tables | Obtiene todas las mesas | No |
GET tables/[id] | Obtiene una mesa | No |
POST tables | Crea una mesa | Sí |
PUT tables/[id] | Actualiza una mesa | Sí |
DELETE tables/[id] | Elimina una mesa | Sí |
GET users | Obtiene todos los usuarios | No |
GET users/[id] | Obtiene un usuario | No |
POST users | Crea un usuario | No |
PUT users/[id] | Actualiza un usuario | Sí |
POST users/[id]/rememberPassword | Envía un correo con la contraseña | No |
POST users/login | Comprueba los credenciales | Sí |
Dominio
stations
: Estaciones por las que pasan los trenes AVE.tables
: Cada una de las mesas con 4 asientos que se encuentran en los trenes AVE.availablePlaces
: Asientos libres de una mesa.fromDateTime
: Fecha y hora de salida de una mesa.toDateTime
: Fecha y hora de llegada de una mesa._fromStation
: Estación de origen de una mesa._toStation
: Estación destino de una mesa.<base64>
: Codificación de las credenciales de un usuario. Por ejemplo, para un usuario con email="Aladin" y password="open sesame" el base64 sería aplicar la codificación base64 a la cadena "Aladin:open sesame", es decir, QWxhZGRpbjpvcGVuIHNlc2FtZQ==querystring
: cadena para filtrar los resultados devueltos por un servicio. Siguen el formato estándar: ?parámetro1=valor1&parámetro2=valor2
Servicios
GET stations
Description: Obtiene todas las estaciones.
URL: http://mesasave.herokuapp.com/api/v1/stations
Method: GET
Request body:
""
Reponse body:
[
{
"_id": "550803afe4b018f3e291fff9",
"name": "A Albergueria-Prado"
},
{
"_id": "560803afe4b018f3e291fff9",
"name": "Alicante"
}
]
GET stations/[id]
Description: Obtiene una estación.
URL: http://mesasave.herokuapp.com/api/v1/stations/[id]
Method: GET
Request body:
""
Reponse body:
{
"_id": "550803afe4b018f3e291fff9",
"name": "A Albergueria-Prado"
}
GET tables
Description: Obtiene todas las mesas. Se pueden aplicar filtros mediante Query string. La Query string es opcional.
Para obtener las 100 primeras mesas con 3 plazas disponibles ordenadas por el parámetro fromDatetime
de forma descencente sería:
http://www.mesasave.herokuapp.com/api/v1/tables?availablePlaces=3&skip=0&limit=100&sort=-fromDatetime
.
Si quisiéramos la misma búsqueda pero por orden ascendente habría que cambiar -fromDatetime
por fromDatetime
.
El parámetro fromDatetime admite 1 o 2 valores dependiendo de si se quieren obtener las mesas de un día en concreto o las mesas entre un rango de fechas.
Para obtener todas las mesas de una fecha en concreto:
http://www.mesasave.herokuapp.com/api/v1/tables?fromDatetime=yyyy-MM-ddTHH:mm:ss.mmmZ
.
Para obtener todas las mesas entre un rango de fechas:
http://www.mesasave.herokuapp.com/api/v1/tables?fromDatetime=yyyy-MM-ddTHH:mm:ss.mmmZ&fromDatetime=yyyy-MM-ddTHH:mm:ss.mmmZ
.
URL: http://mesasave.herokuapp.com/api/v1/tables[querystring]
Method: GET
Request body:
""
Reponse body:
[
{
"_id": "550803afe4b018f3e291fff9",
"fromDatetime": "2011-05-26T07:56:00.123Z",
"toDatetime": "2011-05-26T10:56:00.123Z",
"availablePlaces": 3,
"_fromStation": {
"_id": "550803afe4b018f3e291fff9",
"name": "A Albergueria-Prado"
},
"_toStation": {
"_id": "560803afe4b018f3e291fff9",
"name": "Alicante"
},
"_user": {
"_id": "500803afe4b018f3e291fff9",
"name": "Pepe López",
"email": "pepe@gmail.com",
"phone": "697123123"
}
},
{
...another object
}
]
GET tables/[id]
Description: Obtiene una mesa.
URL: http://mesasave.herokuapp.com/api/v1/tables/[id]
Method: GET
Request body:
""
Reponse body:
{
"_id" : "550803afe4b018f3e291fff9",
"fromDatetime": "2011-05-26T07:56:00.123Z",
"toDatetime": "2011-05-26T10:56:00.123Z",
"availablePlaces": 3,
"_fromStation": {
"_id": "550803afe4b018f3e291fff9",
"name": "A Albergueria-Prado"
},
"_toStation": {
"_id": "560803afe4b018f3e291fff9",
"name": "Alicante"
},
"_user": {
"_id": "500803afe4b018f3e291fff9",
"name": "Pepe López",
"email": "pepe@gmail.com",
"phone": "697123123"
}
}
POST tables
Description: Crea una mesa.
URL: http://mesasave.herokuapp.com/api/v1/tables
Method: POST
Content-type: application/json
Authorization: Basic <base64>
// <base64> = base64("email:password")
Request body:
{
"fromDatetime": "2011-05-26T07:56:00.123Z",
"toDatetime": "2011-05-26T10:56:00.123Z",
"availablePlaces": 3,
"_fromStation": "550803afe4b018f3e291fff9",
"_toStation": "560803afe4b018f3e291fff9",
"_user": "500803afe4b018f3e291fff9"
}
Reponse body:
{
"_id" : "550803afe4b018f3e291fff9",
"fromDatetime": "2011-05-26T07:56:00.123Z",
"toDatetime": "2011-05-26T10:56:00.123Z",
"availablePlaces": 3,
"_fromStation": {
"_id": "550803afe4b018f3e291fff9",
"name": "A Albergueria-Prado"
},
"_toStation": {
"_id": "560803afe4b018f3e291fff9",
"name": "Alicante"
},
"_user": {
"id": 500803afe4b018f3e291fff9"
"name": "Pepe López",
"email": "pepe@gmail.com",
"phone": "697123123"
}
}
PUT tables/[id]
Description: Actualiza una mesa. Los parámetros que no se envíen no se actualizarán.
URL: http://mesasave.herokuapp.com/api/v1/tables/[id]
Method: PUT
Content-type: application/json
Authorization: Basic <base64>
// <base64> = base64("email:password")
Request body:
{
"fromDatetime": "2011-05-26T07:56:00.123Z",
"toDatetime": "2011-05-26T10:56:00.123Z",
"availablePlaces": 2,
"_fromStation": "550803afe4b018f3e291fff9",
"_toStation": "560803afe4b018f3e291fff9",
"_user": "500803afe4b018f3e291fff9"
}
Reponse body:
{
"_id" : "550803afe4b018f3e291fff9",
"fromDatetime": "2011-05-26T07:56:00.123Z",
"toDatetime": "2011-05-26T10:56:00.123Z",
"availablePlaces": 2,
"_fromStation": {
"_id": "550803afe4b018f3e291fff9",
"name": "A Albergueria-Prado"
},
"_toStation": {
"_id": "560803afe4b018f3e291fff9",
"name": "Alicante"
},
"_user": {
"id": 500803afe4b018f3e291fff9"
"name": "Pepe López",
"email": "pepe@gmail.com",
"phone": "697123123"
}
}
DELETE tables/[id]
Description: Elimina una mesa.
URL: http://mesasave.herokuapp.com/api/v1/tables/[id]
Method: DELETE
Request body:
""
Reponse body:
""
GET users
Description: Obtiene todos los usuarios.
URL: http://mesasave.herokuapp.com/api/v1/users
Method: GET
Request body:
""
Reponse body:
[
{
"_id": "500803afe4b018f3e291fff9",
"name": "Pepe López",
"email": "pepe@gmail.com",
"phone": "697123123"
},
{
...another object
}
]
GET users/[id]
Description: Obtiene un usuario.
URL: http://mesasave.herokuapp.com/api/v1/users/[id]
Method: GET
Request body:
{
"_id" : "500803afe4b018f3e291fff9"
}
Reponse body:
{
"_id": "500803afe4b018f3e291fff9",
"name": "Pepe López",
"email": "pepe@gmail.com",
"phone": "697123123"
}
POST users
Description: Crea un usuario. Todos los campos son obligatorios.
URL: http://mesasave.herokuapp.com/api/v1/users
Method: POST
Content-type: application/json
Request body:
{
"name": "Pepe López",
"email": "pepe@gmail.com",
"phone": "697123123",
"password": "1234"
}
Reponse body:
{
"_id": "500803afe4b018f3e291fff9",
"name": "Pepe López",
"email": "pepe@gmail.com",
"phone": "697123123",
"password": "1234"
}
PUT users/[id]
Description: Actualiza un usuario. Los parámetros que no se envíen no se actualizarán. Si se quiere cambiar el campo "password" hay que enviar también los parámetros "newPassword" y "repeatNewPassword" y ambos deben coincidir.
URL: http://mesasave.herokuapp.com/api/v1/users/[id]
Method: PUT
Content-type: application/json
Authorization: Basic <base64>
// <base64> = base64("email:password")
Request body:
{
"name": "Pepe López",
"email": "pepe@gmail.com",
"phone": "697123123",
"password": "1234",
"newPassword": "4321",
"repeatNewPassword": "4321",
}
Reponse body:
{
"_id": "500803afe4b018f3e291fff9",
"name": "Pepe López",
"email": "pepe@gmail.com",
"phone": "697123123",
"password": "1234" // este parámetro sólo aparecerá si se ha actualizado el campo "password"
}
POST users/[id]/rememberPassword
Description: Envía un correo con la contraseña del usuario.
URL: http://mesasave.herokuapp.com/api/v1/users/[id]/rememberPassword
Method: POST
Request body:
""
Reponse body:
""
POST users/login
Description: Comprueba si unos credenciales (email/password) son correctos.
URL: http://mesasave.herokuapp.com/api/v1/users/login
Method: POST
Authorization: Basic <base64>
// <base64> = base64("email:password")
Request body:
""
Reponse body:
{
"_id": "500803afe4b018f3e291fff9",
"name": "Pepe López",
"email": "pepe@gmail.com",
"phone": "697123123",
"password": "1234"
}