Saltar al contenido principal

Peticiones a la API

URL de API

La URL del servicio API de Aplazame se encuentra disponible en https://api.aplazame.com.

Cabeceras HTTP

GET /orders HTTP/1.1
Accept: application/vnd.aplazame.v1+json
Authorization: Bearer api_private_key
Host: api.aplazame.com
ParámetroTipoRequeridoDescripción
AcceptstringEspecifica la versión de la API de Aplazame y el tipo de dato esperado.
AuthorizationstringTipo y clave de acceso.

Respuesta

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
X-Aplazame-Media-Type: aplazame.v1

OAuth2 es un estandard abierto de autorizacion definido en la RFC 6749.

OAuth2 es más sencillo que OAuth1 y proporciona mayor nivel de seguridad.

Versionado

Se utiliza la cabecera Accept tanto para indicar la versión de la API, el formato (y el modo de pruebas).

GET /orders HTTP/1.1
Accept: application/vnd.aplazame.v1+(json|xml)
Authorization: Bearer api_private_key
Host: api.aplazame.com

Aunque Aplazame soporta el versionado mediante URL (p.e. https://api.aplazame.com/v1/orders), se considera buena práctica usar la cabecera Accept en la petición para especificar el tipo y el formato esperado de la respuesta de la API.

Si no se indica la versión de la API, se aplicará más reciente. Esto no es aconsejable ya que una nueva versión podría dejar obsoleto alguna propiedad.

Tipos de formato soportados

CabeceraVersionFormato esperadoValor
Accept1jsonapplication/vnd.aplazame.v1+json
Accept1xmlapplication/vnd.aplazame.v1+xml

Decimales

tip

Es importante tener en cuenta que para las unidades monetarias, comisiones y descuentos se usan enteros, de modo que las cantidades que envían son céntimos. Por ejemplo, "12.50 €"‚ se envía como 1250.

$ if ((`bc <<< "12.50!=1250"`)); then echo "beep beeeeeeep!!!"; fi

Errores

HTTP/1.1 400 BAD REQUEST
Content-Type: application/json; charset=utf-8
X-Aplazame-Media-Type: aplazame.v1
{
"error": {
"fields": {
"articles": [
"This field is required."
]
},
"message": "API validation error",
"type": "ApiValidationException"
}
}

Listado de códigos de error devueltos por la API.

CódigoErrorSignificado
400Bad RequestSi hay algún error en los datos enviados.
401UnauthorizedNo se ha enviado el token (public/private key) o el que se ha enviado no es válido.
403ForbiddenAún siendo válido el token, la operación puede ser rechazada por permisos.
404Not FoundNo se ha encontrado el objeto o recurso.
405Method Not AllowedEl método no está disponible para la url indicada (GET/POST/...).
406Not AcceptableLa cabecera Accept no es válida ver cabeceras.
408Request timeoutHa expirado el tiempo máximo de espera para la petición.
409ConflictIndica que se ha producido un conflicto con la petición, su significado depende del contexto.
415Unsupported Media TypeNo hay soporte para el tipo indicado por la cabecera 'Content-Type'.
429Too Many RequestsSe están recibiendo demasiadas peticiones.
500Internal Server ErrorError en el servidor de la API, esto puede ser un fallo en la implementación, un problema puntual de la red, etc.
503Service UnavailableFuera de servicio por mantenimiento.

Paginación

GET /orders?page=2 HTTP/1.1
Accept: application/vnd.aplazame.v1+json
Authorization: Bearer api_private_key
Host: api.aplazame.com

Respuesta

HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
X-Aplazame-Media-Type: aplazame.v1
{
"cursor": {
"after": 3,
"before": 1
},
"paging": {
"count": 314,
"next": "https://api.aplazame.com/orders?page=3",
"previous": "https://api.aplazame.com/orders?page=1"
},
"results": []
}
ParámetroTipoDescripción
cursorobjectPuntero de paginación.
pagingobjectEstado de paginación.
resultscollectionListado de tiendas.

cursor

"cursor": {
"after": 3,
"before": 1
}
ParámetroTipoDescripción
afterintegerÍndice de la página anterior.
beforeintegerÍndice de la página siguente.

paginación

"paging": {
"count": 314,
"next": "https://api.aplazame.com/orders?page=3",
"previous": "https://api.aplazame.com/orders?page=1"
}
ParámetroTipoDescripción
countintegerNúmero de elementos devueltos.
nextURLURL de la API a la siguente página de resultados.
previousURLURL de la API a la página anterior de resultados.

Filtros

Los filtros en las consultas de listados se indican mediante parámetros de la URL.

El formato de cada parametro está compuesto por la entidad, el tipo de búsqueda y el valor a buscar.

GET /orders?propiedad-busqueda=valor

En el siguente ejemplo, la petición devolverá todos los pedidos cuyo id comienze por e791f. Si se omite el tipo de concordancia, se usará exact.

GET /orders?id-startswith=e791f HTTP/1.1
Accept: application/vnd.aplazame.v1+json
Authorization: Bearer api_private_key
Host: api.aplazame.com

Si se especifican varios filtros, el resultado devolverá la combinación aditiva de ellos.

GET /orders?id-startswith=e791f&id-endswith=4ff4g HTTP/1.1
Accept: application/vnd.aplazame.v1+json
Authorization: Bearer api_private_key
Host: api.aplazame.com

Búsqueda de texto

TérminoUsoDescripción
exactname-exact=AplaZameCoincidencia exacta.
iexactname-iexact=aplazameCoincidencia exacta no sensible a mayúsculas/minúsculas.
regexname-regex=^[A-Z].*$Expresión regular sensible a mayúsculas/minúsculas.
iregexname-iregex=^[a-z].*$Expresión regular no sensible a mayúsculas/minúsculas.
containsname-contains=plaZaContiene la cadena especificada no sensible a mayúsculas/minúsculas.
icontainsname-icontains=plazaContiene la cadena especificada.
startswithname-startswith=AplaComienza por la cadena especificada.
istartswithname-istartswith=aplaComienza por la cadena especificada no sensible a mayúsculas/minúsculas.
endswithname-endswith=ZameTermina por la cadena especificada.
iendswithname-iendswith=zameTermina por la cadena especificada no sensible a mayúsculas/minúsculas.
inname-in=AplaZame,AplazarCoincide con alguna de las opciones separadas por comas.
searchname-search=ApCadena de texto a buscar.

Por fecha

GET /orders?confirmed-week_day=monday HTTP/1.1
Accept: application/vnd.aplazame.v1+json
Authorization: Bearer api_private_key
Host: api.aplazame.com
TérminoUsoDescripción
yearcreated-year=2015Fechas cuyo año coincida con el indicado.
monthcreated-month=10Fechas cuyo mes coincida con el indicado.
week_daycreated-week_day=mondayDía de la semana, las opciones son: monday, tuesday, wednesday, thursday, friday, saturday, sunday.
daycreated-day=2Fechas cuyo día del mes coincida con el indicado.
hourcreated-hour=14Fechas cuya hora coincida con la indicada.

Nulo

TérminoUsoDescripción
isnullconfirmed-isnull=yesFiltrar por campos nulos, si O no.

Rangos de valores

GET /orders?confirmed-gte=2015-10-02T18:15:45.101838Z HTTP/1.1
Accept: application/vnd.aplazame.v1+json
Authorization: Bearer api_private_key
Host: api.aplazame.com
TérminoUsoDescripción
exacttotal_amount-exact=10000Valor exacto.
gttotal_amount-gt=8000Mayor qué.
gtetotal_amount-gte=10000Mayor o igual que.
lttotal_amount-lt=12000Menor que.
ltetotal_amount-lte=10000Menor o igual que.