Introducción
El API de TelotriagodemiPueblo permite a un aplicativo cliente interactuar de forma transparente con los recursos de la misma mediante el protocolo HTTP y en la mayoría de los casos siguiendo una filosofía Rest.
Básicamente un usuario deberá registrarse en el sistema proporcionando entre otros datos, un usuario y una password que el sistema custodiará. Cuando dicho usuario desee interactuar con el sistema deberá proporcionar dichos datos para obtener un token, el cual tiene una validez determinada. El cliente deberá proporcionar este token en cada petición que haga tal como se explica en este documento.
Para la invocación de las APIs el cliente deberá identificarse previamente mediante una llamada a Login y guardar el token que se le proporciona para usarlo en futuras llamadas. Estas llamadas enviarán el token usando las cabeceras de la petición mediante el formato Bearer
De forma general, todas las peticiones incluirán las siguientes cabeceras en sus solicitudes:
Name | Description |
---|---|
|
Bearer auth credentials |
Diagrama de secuencia donde un usuario anónimo desea identificarse en el sistema. Si la identificación es correcta obtendrá un token para usar en futuras peticiones
Diagrama de secuencia donde un usuario identificado previamente y que disponde de un token, desea acceder a un recurso protegido (por ejemplo ver sus mensajes)
HTTP verbs
El API intenta cumplir el standard HTTP y las convenciones sobre verbos de REST al máximo
Verb | Usage |
---|---|
|
Used to retrieve a resource |
|
Used to create a new resource |
|
Used to update an existing resource, overwrites all fields |
|
Used for partial updates to an existing resource |
|
Used to delete an existing resource |
HTTP status codes
El API intenta cumplir el standard HTTP y las convenciones sobre códigos de retorno de REST al máximo
Status code | Usage |
---|---|
|
The request completed successfully |
|
A new resource has been created successfully. The resource’s URI is available from the response’s
|
|
An update to an existing resource has been applied successfully |
|
The request was malformed. The response body will include an error providing further information |
|
The requested resource did not exist |
|
The type of request for this resource is not allowed. For example, some endpoints may be GET only. Trying a POST will return this message. |
|
There was an error in the request. The response body will contain the error message. |
APIs básicas
Las APIs básicas son aquellas que permiten las acciones mínimas para acceder al sistema, como son el registro, el login y obtener el perfil del usuario.
/registration
Alta de un usuario nuevo
Campos de solicitud:
Path | Type | Description |
---|---|---|
|
|
el nombre del usuario |
|
|
el identificado de usuario |
|
|
la clave del usuario |
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
el instante en el que se crea el usuario |
|
|
codigo de estado |
|
|
mensaje de error |
|
|
mensaje de resultado |
|
|
ruta solicitada |
Ejemplo:
$ echo '{
"nombre" : "615679348",
"username" : "615679348@test.com",
"password" : "615679348"
}' | http POST 'https://telotraigodemipueblo.herokuapps.com/registration' 'Accept:application/json' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 201 Created
Date: Wed, 21 Dec 2016 22:13:51 GMT
X-Application-Context: application:test:0
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 127
{
"error" : "Created",
"message" : "Created",
"path" : "/registration",
"status" : 201,
"timestamp" : 1482358431473
}
Usuario ya existente
Si el usuario ya existe el sistema devolverá el correspondiente error HTTP 409:
$ echo '{
"nombre" : "615679348",
"username" : "615679348@test.com",
"password" : "615679348"
}' | http POST 'https://telotraigodemipueblo.herokuapps.com/registration' 'Accept:application/json' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 409 Conflict
Date: Wed, 21 Dec 2016 22:13:51 GMT
X-Application-Context: application:test:0
Content-Type: application/json;charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 129
{
"error" : "Conflict",
"message" : "Conflict",
"path" : "/registration",
"status" : 409,
"timestamp" : 1482358431563
}
/api/login
Identificación
Solicitud de un token de sesion
Campos de solicitud:
Path | Type | Description |
---|---|---|
|
|
el codigo de usuario |
|
|
la clave del usuario |
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
el codigo de usuario |
|
|
Lista de roles |
|
|
Bearer |
|
|
token a enviar en cada peticion |
|
|
segundos de validez del token |
|
|
token a utilizar para refrescar el access_token |
Ejemplo:
$ echo '{
"username" : "-747670988@test.com",
"password" : "password"
}' | http POST 'https://telotraigodemipueblo.herokuapps.com/api/login' 'Accept:application/json' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 200 OK
Date: Wed, 21 Dec 2016 22:13:45 GMT
Content-Type: application/json; charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
Content-Length: 216
Server: Jetty(9.2.16.v20160414)
{
"access_token" : "eyJhbGciOiJIUzI1NiJ9.....",
"expires_in" : 3600,
"refresh_token" : "eyJhbGciOiJIUzI1NiJ9.....",
"roles" : [ "ROLE_USER" ],
"token_type" : "Bearer",
"username" : "-747670988@test.com"
}
Identificación incorrecta
Solicitud de un token de sesion con credenciales inválidas. El sistema devuelve el error 401 Not authorized
Campos de solicitud:
Path | Type | Description |
---|---|---|
|
|
el codigo de usuario |
|
|
la clave del usuario |
Ejemplo:
$ echo '{
"username" : "-747670988@test.com",
"password" : "drowssap"
}' | http POST 'https://telotraigodemipueblo.herokuapps.com/api/login' 'Accept:application/json' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 401 Unauthorized
Date: Wed, 21 Dec 2016 22:13:45 GMT
WWW-Authenticate: Bearer
Server: Jetty(9.2.16.v20160414)
/api/validate
Campos de solicitud:
No hay. Ojo es necesario envíar el token
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
el codigo de usuario |
|
|
Lista de roles |
|
|
Bearer |
|
|
token a enviar en cada peticion |
|
|
segundos de validez del token |
Ejemplo:
$ http POST 'https://telotraigodemipueblo.herokuapps.com/api/validate' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 200 OK
Date: Wed, 21 Dec 2016 22:13:46 GMT
Content-Type: application/json; charset=UTF-8
Cache-Control: no-store
Pragma: no-cache
Content-Length: 167
Server: Jetty(9.2.16.v20160414)
{
"access_token" : "eyJhbGciOiJIUzI1NiJ9.....",
"expires_in" : 3600,
"roles" : [ "ROLE_USER" ],
"token_type" : "Bearer",
"username" : "-747670988@test.com"
}
/api/me
Campos de solicitud:
No requiere
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
el identificador unico del usuario |
|
|
el nombre del usuario |
|
|
el alias del usuario |
Ejemplo:
$ http GET 'https://telotraigodemipueblo.herokuapps.com/api/me' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 200 OK
Date: Wed, 21 Dec 2016 22:13:50 GMT
X-Application-Context: application:test:0
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 94
{
"id" : 1585344147578880,
"nombre" : "1820451322",
"username" : "1820451322@test.com"
}
APIs gestión
Las APIs de gestión son del estilo CRUD destinadas a que un usuario pueda realizar un mantenimiento mínimo de sus recursos (Lugares, Viajes, Productos, Pedidos, etc)
/api/conoce
Mediante este API la aplicación permite la típica gestión CRUD (alta, baja, modificación, borrado) de los lugares de un usuario.
Alta (POST)
Campos de solicitud:
Path | Type | Description |
---|---|---|
|
|
el nombre del lugar |
|
|
la latitud |
|
|
la longitud |
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
el identificador unico del lugar |
|
|
el nombre del lugar |
|
|
la latitud |
|
|
la longitud |
|
|
una lista de viajes que recibe |
|
|
una lista de productos que tiene |
|
|
Un array de viajes |
|
|
Un array de productos |
|
|
el id del usuario |
|
|
el codigo de usuario |
|
|
el nombre del usuario |
Ejemplo:
$ echo '{
"nombre" : "451192078",
"latitud" : 1,
"longitud" : 10
}' | http POST 'https://telotraigodemipueblo.herokuapps.com/api/conoce' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 201 Created
Date: Wed, 21 Dec 2016 22:14:00 GMT
X-Application-Context: application:test:0
Location: http://localhost:42575/api/conoce/1585344235798528
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 232
{
"id" : "1585344235798528",
"latitud" : 1.0,
"longitud" : 10.0,
"nombre" : "451192078",
"tiene" : [ ],
"usuario" : {
"id" : "1585344224509952",
"nombre" : "232001255",
"username" : "232001255@test.com"
}
}
Listar (GET)
Campos de solicitud:
No requiere
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
Un array de lugares |
|
|
el identificador unico del lugar |
|
|
el nombre del lugar |
|
|
la latitud |
|
|
la longitud |
|
|
una lista de viajes que recibe |
|
|
una lista de productos que tiene |
Ejemplo:
$ http GET 'https://telotraigodemipueblo.herokuapps.com/api/conoce' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 200 OK
Date: Wed, 21 Dec 2016 22:14:01 GMT
X-Application-Context: application:test:0
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 236
[ {
"id" : "1585344235798528",
"latitud" : 1.0,
"longitud" : 10.0,
"nombre" : "451192078",
"tiene" : [ ],
"usuario" : {
"id" : "1585344224509952",
"nombre" : "232001255",
"username" : "232001255@test.com"
}
} ]
Ver (GET + id)
Campos de solicitud:
Parameter | Description |
---|---|
|
el Id del recurso |
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
el identificador unico del lugar |
|
|
el nombre del lugar |
|
|
la latitud |
|
|
la longitud |
|
|
una lista de viajes que recibe |
|
|
una lista de productos que tiene |
|
|
el id del usuario |
|
|
el codigo de usuario |
|
|
el nombre del usuario |
Ejemplo:
$ http GET 'https://telotraigodemipueblo.herokuapps.com/api/conoce/1585344235798528' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 200 OK
Date: Wed, 21 Dec 2016 22:14:01 GMT
X-Application-Context: application:test:0
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 232
{
"id" : "1585344235798528",
"latitud" : 1.0,
"longitud" : 10.0,
"nombre" : "451192078",
"tiene" : [ ],
"usuario" : {
"id" : "1585344224509952",
"nombre" : "232001255",
"username" : "232001255@test.com"
}
}
Actualizar (PUT)
Campos de solicitud:
Parameter | Description |
---|---|
|
el Id del recurso |
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
el identificador unico del lugar |
|
|
el nombre del lugar |
|
|
la latitud |
|
|
la longitud |
|
|
una lista de viajes que recibe |
|
|
una lista de productos que tiene |
|
|
el id del usuario |
|
|
el codigo de usuario |
|
|
el nombre del usuario |
Ejemplo:
$ echo '{
"nombre" : "451192078",
"latitud" : 100,
"longitud" : 200
}' | http PUT 'https://telotraigodemipueblo.herokuapps.com/api/conoce/1585344235798528' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 200 OK
Date: Wed, 21 Dec 2016 22:14:02 GMT
X-Application-Context: application:test:0
Location: http://localhost:42575/api/conoce/1585344235798528
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 235
{
"id" : "1585344235798528",
"latitud" : 100.0,
"longitud" : 200.0,
"nombre" : "451192078",
"tiene" : [ ],
"usuario" : {
"id" : "1585344224509952",
"nombre" : "232001255",
"username" : "232001255@test.com"
}
}
Borrar (DELETE)
Campos de solicitud:
Parameter | Description |
---|---|
|
el Id del recurso |
Campos de respuesta:
No procede. Retorna 204 Not content
Ejemplo:
$ http DELETE 'https://telotraigodemipueblo.herokuapps.com/api/conoce/1585344235798528' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 204 No Content
Date: Wed, 21 Dec 2016 22:14:02 GMT
X-Application-Context: application:test:0
Server: Jetty(9.2.16.v20160414)
/api/conoce/{lugar}/productos
Mediante este API la aplicación permite la típica gestión CRUD (alta, baja, modificación, borrado) de los productos de un lugar de un usuario.
Alta (POST)
Campos de solicitud:
Path | Type | Description |
---|---|---|
|
|
el nombre del producto |
|
|
el precio al que lo conseguimos |
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
el identificador unico del producto |
|
|
un texto que describe el producto |
|
|
el precio al que se consigue |
Ejemplo:
$ echo '{
"texto" : "un queso rico",
"precio" : 10
}' | http POST 'https://telotraigodemipueblo.herokuapps.com/api/conoce/1585344197443584/productos' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 201 Created
Date: Wed, 21 Dec 2016 22:13:57 GMT
X-Application-Context: application:test:0
Location: http://localhost:42575/productoRest/show/1585344206995456
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 79
{
"id" : "1585344206995456",
"precio" : 10.0,
"texto" : "un queso rico"
}
Listar (GET)
Campos de solicitud:
No requiere
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
Un array de productos |
|
|
el identificador unico del producto |
|
|
un texto que describe el producto |
|
|
el precio al que se consigue |
Ejemplo:
$ http GET 'https://telotraigodemipueblo.herokuapps.com/api/conoce/1585344197443584/productos' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 200 OK
Date: Wed, 21 Dec 2016 22:13:57 GMT
X-Application-Context: application:test:0
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 83
[ {
"id" : "1585344206995456",
"precio" : 10.0,
"texto" : "un queso rico"
} ]
Ver (GET + id)
Campos de solicitud:
Parameter | Description |
---|---|
|
el Id del lugar |
|
el Id del recurso |
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
el identificador unico del producto |
|
|
un texto que describe el producto |
|
|
el precio al que se consigue |
Ejemplo:
$ http GET 'https://telotraigodemipueblo.herokuapps.com/api/conoce/1585344197443584/productos/1585344206995456' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 200 OK
Date: Wed, 21 Dec 2016 22:13:58 GMT
X-Application-Context: application:test:0
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 79
{
"id" : "1585344206995456",
"precio" : 10.0,
"texto" : "un queso rico"
}
Actualizar (PUT)
Campos de solicitud:
Parameter | Description |
---|---|
|
el Id del lugar |
|
el Id del recurso |
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
el identificador unico del producto |
|
|
un texto que describe el producto |
|
|
el precio al que se consigue |
Ejemplo:
$ echo '{
"texto" : "texto actualizado",
"precio" : 888
}' | http PUT 'https://telotraigodemipueblo.herokuapps.com/api/conoce/1585344197443584/productos/1585344206995456' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 200 OK
Date: Wed, 21 Dec 2016 22:13:58 GMT
X-Application-Context: application:test:0
Location: http://localhost:42575/productoRest/show/1585344206995456
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 84
{
"id" : "1585344206995456",
"precio" : 888.0,
"texto" : "texto actualizado"
}
Borrar (DELETE)
Campos de solicitud:
Parameter | Description |
---|---|
|
el Id del lugar |
|
el Id del recurso |
Campos de respuesta:
No procede. Retorna 204 Not content
Ejemplo:
$ http DELETE 'https://telotraigodemipueblo.herokuapps.com/api/conoce/1585344197443584/productos/1585344206995456' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 204 No Content
Date: Wed, 21 Dec 2016 22:13:59 GMT
X-Application-Context: application:test:0
Server: Jetty(9.2.16.v20160414)
/api/conoce/{lugar}/viajes
Mediante este API la aplicación permite la típica gestión CRUD (alta, baja, modificación, borrado) de los viajes de un lugar de un usuario.
Alta (POST)
Campos de solicitud:
Path | Type | Description |
---|---|---|
|
|
una descripcion del viaje |
|
|
feha tope para hacer pedidos |
|
|
fecha en la que vuelve del viaje |
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
el identificador unico del viaje |
|
|
un texto que describe el viaje |
|
|
feha tope para hacer pedidos |
|
|
fecha en la que vuelve del viaje |
Ejemplo:
$ echo '{
"texto" : "eiii que me voy",
"fechatope" : 1482617620545,
"vuelvo" : 1483222420546
}' | http POST 'https://telotraigodemipueblo.herokuapps.com/api/conoce/1585344057581568/viajes' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 201 Created
Date: Wed, 21 Dec 2016 22:13:40 GMT
X-Application-Context: application:test:0
Location: http://localhost:42575/viajeRest/show/1585344069541888
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 119
{
"fechatope" : "2016/12/24",
"id" : "1585344069541888",
"texto" : "eiii que me voy",
"vuelvo" : "2016/12/31"
}
Listar (GET)
Campos de solicitud:
No requiere
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
Un array de viajes |
|
|
el identificador unico del viaje |
|
|
un texto que describe el viaje |
|
|
feha tope para hacer pedidos |
|
|
fecha en la que vuelve del viaje |
Ejemplo:
$ http GET 'https://telotraigodemipueblo.herokuapps.com/api/conoce/1585344057581568/viajes' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 200 OK
Date: Wed, 21 Dec 2016 22:13:41 GMT
X-Application-Context: application:test:0
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 123
[ {
"fechatope" : "2016/12/24",
"id" : "1585344069541888",
"texto" : "eiii que me voy",
"vuelvo" : "2016/12/31"
} ]
Ver (GET + id)
Campos de solicitud:
Parameter | Description |
---|---|
|
el Id del lugar |
|
el Id del recurso |
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
el identificador unico del viaje |
|
|
un texto que describe el viaje |
|
|
feha tope para hacer pedidos |
|
|
fecha en la que vuelve del viaje |
Ejemplo:
$ http GET 'https://telotraigodemipueblo.herokuapps.com/api/conoce/1585344057581568/viajes/1585344069541888' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 200 OK
Date: Wed, 21 Dec 2016 22:13:41 GMT
X-Application-Context: application:test:0
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 119
{
"fechatope" : "2016/12/24",
"id" : "1585344069541888",
"texto" : "eiii que me voy",
"vuelvo" : "2016/12/31"
}
Actualizar (PUT)
Campos de solicitud:
Parameter | Description |
---|---|
|
el Id del lugar |
|
el Id del recurso |
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
el identificador unico del viaje |
|
|
un texto que describe el viaje |
|
|
feha tope para hacer pedidos |
|
|
fecha en la que vuelve del viaje |
Ejemplo:
$ echo '{
"texto" : "texto actualizado"
}' | http PUT 'https://telotraigodemipueblo.herokuapps.com/api/conoce/1585344057581568/viajes/1585344069541888' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 200 OK
Date: Wed, 21 Dec 2016 22:13:42 GMT
X-Application-Context: application:test:0
Location: http://localhost:42575/viajeRest/show/1585344069541888
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 121
{
"fechatope" : "2016/12/24",
"id" : "1585344069541888",
"texto" : "texto actualizado",
"vuelvo" : "2016/12/31"
}
Borrar (DELETE)
Campos de solicitud:
Parameter | Description |
---|---|
|
el Id del lugar |
|
el Id del recurso |
Campos de respuesta:
No procede. Retorna 204 Not content
Ejemplo:
$ http DELETE 'https://telotraigodemipueblo.herokuapps.com/api/conoce/1585344057581568/viajes/1585344069541888' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 204 No Content
Date: Wed, 21 Dec 2016 22:13:42 GMT
X-Application-Context: application:test:0
Server: Jetty(9.2.16.v20160414)
/api/conoce/{lugar}/viajes/{viaje}/pedidos
Mediante este API la aplicación permite a un usuario ver, aceptar y rechazar los pedidos que otros usuarios le han realizado
Listar (GET)
Campos de solicitud:
No requiere
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
Un array de pedidos |
|
|
el identificador unico del pedido |
|
|
la cantidad que deseo pedir |
|
|
el id del producto pedido |
|
|
el id del usuario que lo pide |
Ejemplo:
$ http GET 'https://telotraigodemipueblo.herokuapps.com/api/conoce/1585344121847808/viajes/1585344121847809/pedidos' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 200 OK
Date: Wed, 21 Dec 2016 22:13:49 GMT
X-Application-Context: application:test:0
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 160
[ {
"cantidad" : 2,
"id" : "1585344133300224",
"producto" : {
"id" : "1585344121847810"
},
"solicitante" : {
"id" : "1585344119627776"
}
} ]
Ver (GET + id)
Campos de solicitud:
Parameter | Description |
---|---|
|
el Id del lugar |
|
el Id del viaje |
|
el Id del recurso |
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
el identificador unico del pedido |
|
|
la cantidad que deseo pedir |
|
|
el id del producto pedido |
|
|
el id del usuario que lo pide |
Ejemplo:
$ http GET 'https://telotraigodemipueblo.herokuapps.com/api/conoce/1585344121847808/viajes/1585344121847809/pedidos/1585344133300224' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 200 OK
Date: Wed, 21 Dec 2016 22:13:49 GMT
X-Application-Context: application:test:0
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 156
{
"cantidad" : 2,
"id" : "1585344133300224",
"producto" : {
"id" : "1585344121847810"
},
"solicitante" : {
"id" : "1585344119627776"
}
}
Borrar (DELETE)
Campos de solicitud:
Parameter | Description |
---|---|
|
el Id del lugar |
|
el Id del viaje |
|
el Id del recurso |
Campos de respuesta:
no tiene
Ejemplo:
$ http DELETE 'https://telotraigodemipueblo.herokuapps.com/api/conoce/1585344121847808/viajes/1585344121847809/pedidos/1585344133300224' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 204 No Content
Date: Wed, 21 Dec 2016 22:13:49 GMT
X-Application-Context: application:test:0
Server: Jetty(9.2.16.v20160414)
APIs "sociales"
Las APIs "sociales" son aquellas destinadas a interactuar entre dos (o más usuarios) como pueden ser la búsqueda de usuarios, el sistema de mensajería, solicitud de pedido, etc
/api/search
Búsqueda de usuarios por nombre
Campos de solicitud:
Parameter | Description |
---|---|
|
Expresión a filtrar |
|
maximo de usuarios a recuperar |
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
Un array de usuarios |
|
|
el id del usuario |
|
|
el nombre del usuario |
|
|
el codigo de usuario |
Ejemplo:
$ http GET 'https://telotraigodemipueblo.herokuapps.com/api/search/usuario?like=username&max=5' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 200 OK
Date: Wed, 21 Dec 2016 22:13:54 GMT
X-Application-Context: application:test:0
Content-Language: en
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 3
[ ]
Búsqueda de usuarios por lugares
Campos de solicitud:
Parameter | Description |
---|---|
|
Expresión a filtrar |
|
maximo de usuarios a recuperar |
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
Un array de usuarios |
|
|
el id del usuario |
|
|
el nombre del usuario |
|
|
el codigo de usuario |
Ejemplo:
$ http GET 'https://telotraigodemipueblo.herokuapps.com/api/search/lugar?like=almendralejo&max=5' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 200 OK
Date: Wed, 21 Dec 2016 22:13:55 GMT
X-Application-Context: application:test:0
Content-Language: en
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 3
[ ]
/api/mensajes
El API de mensajería permite a un usuario enviar mensajes a otros usuarios (sean de su red o no) así como ver sus mensajes
Ver mi buzón
Campos de solicitud:
Parameter | Description |
---|---|
|
Si true sólo los no leidos |
|
maximo mensajes a recuperar |
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
Un array de mensajes |
|
|
el id del usuario |
|
|
el nombre del usuario |
|
|
el codigo de usuario |
|
|
el id del usuario |
|
|
el nombre del usuario |
|
|
el codigo de usuario |
Ejemplo:
$ http GET 'https://telotraigodemipueblo.herokuapps.com/api/mensajes?onlynews=false&max=10' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 200 OK
Date: Wed, 21 Dec 2016 22:13:43 GMT
X-Application-Context: application:test:0
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 267
[ {
"destinatarios" : [ {
"id" : "1585344089309184",
"nombre" : "1786253412",
"username" : "1786253412@test.com"
} ],
"enviado" : "2016-12-21T22:13:43+0000",
"id" : "1585344093560832",
"leido" : null,
"texto" : "hola",
"tipo" : "MENSAJE"
} ]
/api/invitacion
/api/invitacion/send
Cuando un usuario desea conectar con otro le enviará una solicitud de conexión mediante el API de invitación el cual se resuelve internamente como un mensaje a un usuario de otro usuario.
Campos de solicitud:
Path | Type | Description |
---|---|---|
|
|
Un array de destinatarios |
|
|
el id del usuario destinatario del mensaje |
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
el identificador unico del mensaje |
|
|
el tipo de mensaje (MENSAJE, INVITACION, PEDIDO, …) |
|
|
el texto del mensaje |
|
|
la fecha en que fue enviado |
|
|
la fecha en la que fue leido o null si no lo ha sido todavia |
|
|
un array de usuarios destinatarios |
|
|
el remitente del mensaje |
Ejemplo:
$ echo '{
"destinatarios" : [ {
"id" : 1585344002433025
} ]
}' | http POST 'https://telotraigodemipueblo.herokuapps.com/api/invitacion/send' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 201 Created
Date: Wed, 21 Dec 2016 22:13:34 GMT
X-Application-Context: application:test:0
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 158
{
"enviado" : "2016-12-21T22:13:35+0000",
"id" : 1585344024403968,
"texto" : "Hola, me gustaría que me admitieras en tu red",
"tipo" : "INVITACION"
}
/api/invitacion/accept
Cuando un usuario desea aceptar la solicitud de contacto lo realizará a través de este API
Campos de solicitud:
Path | Type | Description |
---|---|---|
|
|
el id del usuario destinatario del mensaje |
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
el identificador unico del mensaje |
|
|
el tipo de mensaje (MENSAJE, INVITACION, PEDIDO, …) |
|
|
el texto del mensaje |
|
|
la fecha en que fue enviado |
|
|
la fecha en la que fue leido o null si no lo ha sido todavia |
|
|
un array de usuarios destinatarios |
|
|
el remitente del mensaje |
Ejemplo:
$ echo '{
"mensaje" : 1585344024403968
}' | http POST 'https://telotraigodemipueblo.herokuapps.com/api/invitacion/accept' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 200 OK
Date: Wed, 21 Dec 2016 22:13:36 GMT
X-Application-Context: application:test:0
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 342
{
"destinatarios" : [ {
"id" : "1585344002433025",
"nombre" : "-281916135_friend",
"username" : "-281916135_friend@test.com"
} ],
"enviado" : "2016-12-21T22:13:35+0000",
"id" : 1585344024403968,
"leido" : "2016-12-21T22:13:36+0000",
"texto" : "Hola, me gustaría que me admitieras en tu red",
"tipo" : "INVITACION"
}
/api/lugares
El API de lugares permite a un usuario ver los lugares de su red, es decir, los lugares dados de alta por sus conocidos
Listar (GET)
Campos de solicitud:
Parameter | Description |
---|---|
|
maximo lugares a recuperar |
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
Un array de lugares |
|
|
Un array de productos |
|
|
el identificador unico del producto |
|
|
un texto que describe el producto |
|
|
el precio al que se consigue |
|
|
el id del usuario |
|
|
el codigo de usuario |
|
|
el nombre del usuario |
|
|
el identificador unico del lugar |
|
|
el nombre del lugar |
|
|
la latitud |
|
|
la longitud |
|
|
una lista de viajes que recibe |
|
|
una lista de productos que tiene |
Ejemplo:
$ http GET 'https://telotraigodemipueblo.herokuapps.com/api/lugares?max=10' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 200 OK
Date: Wed, 21 Dec 2016 22:14:03 GMT
X-Application-Context: application:test:0
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 321
[ {
"id" : "1585344254779392",
"latitud" : 2.0,
"longitud" : 1.0,
"nombre" : "mi lugar",
"tiene" : [ {
"id" : "1585344254779394",
"precio" : 10.0,
"texto" : "queso rico"
} ],
"usuario" : {
"id" : "1585344250912768",
"nombre" : "1705663932",
"username" : "1705663932@test.com"
}
} ]
Ver (GET + id)
Campos de solicitud:
No requiere
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
el identificador unico del lugar |
|
|
el nombre del lugar |
|
|
la latitud |
|
|
la longitud |
|
|
una lista de viajes que recibe |
|
|
una lista de productos que tiene |
|
|
Un array de productos |
|
|
el identificador unico del producto |
|
|
un texto que describe el producto |
|
|
el precio al que se consigue |
|
|
el id del usuario |
|
|
el codigo de usuario |
|
|
el nombre del usuario |
Ejemplo:
$ http GET 'https://telotraigodemipueblo.herokuapps.com/api/lugares/1585344254779392' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 200 OK
Date: Wed, 21 Dec 2016 22:14:04 GMT
X-Application-Context: application:test:0
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 317
{
"id" : "1585344254779392",
"latitud" : 2.0,
"longitud" : 1.0,
"nombre" : "mi lugar",
"tiene" : [ {
"id" : "1585344254779394",
"precio" : 10.0,
"texto" : "queso rico"
} ],
"usuario" : {
"id" : "1585344250912768",
"nombre" : "1705663932",
"username" : "1705663932@test.com"
}
}
/api/lugares/{idLugar}/productos
Listar (GET)
Campos de solicitud:
No requiere
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
Un array de productos |
|
|
el identificador unico del producto |
|
|
un texto que describe el producto |
|
|
el precio al que se consigue |
Ejemplo:
$ http GET 'https://telotraigodemipueblo.herokuapps.com/api/lugares/1585344254779392/productos' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 200 OK
Date: Wed, 21 Dec 2016 22:14:04 GMT
X-Application-Context: application:test:0
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 80
[ {
"id" : "1585344254779394",
"precio" : 10.0,
"texto" : "queso rico"
} ]
Ver (GET + id)
Campos de solicitud:
No requiere
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
el identificador unico del producto |
|
|
un texto que describe el producto |
|
|
el precio al que se consigue |
Ejemplo:
$ http GET 'https://telotraigodemipueblo.herokuapps.com/api/lugares/1585344254779392/productos/1585344254779394' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 200 OK
Date: Wed, 21 Dec 2016 22:14:05 GMT
X-Application-Context: application:test:0
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 76
{
"id" : "1585344254779394",
"precio" : 10.0,
"texto" : "queso rico"
}
/api/viajes
El API de viajes permite a un usuario ver los viajes de su red, es decir, los viajes programados proximamente de sus conocidos
Listar (GET)
Campos de solicitud:
Parameter | Description |
---|---|
|
maximo viajes a recuperar |
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
Un array de viajes |
|
|
el identificador unico del lugar |
|
|
el nombre del lugar |
|
|
el id del usuario |
|
|
el codigo de usuario |
|
|
el nombre del usuario |
|
|
el identificador unico del viaje |
|
|
un texto que describe el viaje |
|
|
feha tope para hacer pedidos |
|
|
fecha en la que vuelve del viaje |
Ejemplo:
$ http GET 'https://telotraigodemipueblo.herokuapps.com/api/viajes?max=10' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 200 OK
Date: Wed, 21 Dec 2016 22:13:52 GMT
X-Application-Context: application:test:0
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 290
[ {
"fechatope" : "2016/12/24",
"id" : "1585344163610625",
"lugar" : {
"id" : "1585344163610624",
"nombre" : "mi lugar"
},
"texto" : "con la fregoneta",
"usuario" : {
"id" : "1585344159719424",
"username" : "435112269@test.com"
},
"vuelvo" : "2016/12/31"
} ]
Ver (GET + id)
Campos de solicitud:
no require
Campos de respuesta:
Path | Type | Description |
---|---|---|
|
|
el identificador unico del viaje |
|
|
un texto que describe el viaje |
|
|
feha tope para hacer pedidos |
|
|
fecha en la que vuelve del viaje |
|
|
el identificador unico del lugar |
|
|
el nombre del lugar |
|
|
el id del usuario |
|
|
el codigo de usuario |
|
|
el nombre del usuario |
Ejemplo:
$ http GET 'https://telotraigodemipueblo.herokuapps.com/api/viajes/1585344163610625' 'Accept:application/json' 'Authorization:Bearer eyJhbGciOiJIUz....' 'Content-Type:application/json; charset=UTF-8'
HTTP/1.1 200 OK
Date: Wed, 21 Dec 2016 22:13:53 GMT
X-Application-Context: application:test:0
Content-Type: application/json; charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.2.16.v20160414)
Content-Length: 286
{
"fechatope" : "2016/12/24",
"id" : "1585344163610625",
"lugar" : {
"id" : "1585344163610624",
"nombre" : "mi lugar"
},
"texto" : "con la fregoneta",
"usuario" : {
"id" : "1585344159719424",
"username" : "435112269@test.com"
},
"vuelvo" : "2016/12/31"
}
/api/viajes/{id}/pedidos
El API de pedidos permite a un usuario solicitar una cantidad de un producto determinado para que se la traiga en un viaje concreto.
Crear (POST)
Campos de solicitud:
Unresolved directive in network/pedidos.asciidoc - include::/builds/telotraigodemipueblo/api/tfg/telotraigodemipueblo/build/generated-snippets/viajes/pedido/request-fields.adoc[]
Campos de respuesta:
Unresolved directive in network/pedidos.asciidoc - include::/builds/telotraigodemipueblo/api/tfg/telotraigodemipueblo/build/generated-snippets/viajes/pedido/response-fields.adoc[]
Ejemplo:
Unresolved directive in network/pedidos.asciidoc - include::/builds/telotraigodemipueblo/api/tfg/telotraigodemipueblo/build/generated-snippets/viajes/pedido/httpie-request.adoc[]
Unresolved directive in network/pedidos.asciidoc - include::/builds/telotraigodemipueblo/api/tfg/telotraigodemipueblo/build/generated-snippets/viajes/pedido/http-response.adoc[]