Requisitos para APIs públicas
Falta explicar cómo deben ser los despliegues, proxies reversos, api managers, etc
Se entiende por API pública a todo endpoint exportado a internet desde GLA y que cualquier dispositivo o desarrollador tenga el poder de invocarlo. Como guía de diseño recurrir a este documento, ya que acá solo establecemos el estilo del url y path, versionado, y seguridad.
Urls
Las apis públicas deben tener la forma:
http://api.andreani.com/{version}/{coleccion}/{id}
Por ejemplo:
POST https://api.andreani.com/v1/ordenesDeEnvio
GET/DELETE https://api.andreani.com/v1/ordenesDeEnvio/L95486800
Versionado
Es de vital importancia que las APIs estén versionadas porque eso nos permite cerrar versiones nuevas con clientes independientes y mantener compatibilidad con los más viejos. De esta forma a los segundos los podemos ir migrando de a poco.
Una nueva versión de un API sucede cuando el contrato de servicio cambia y esto requiere que los clientes de dicha API cambien también.
Seguridad
Todos los requests deben traer en el header x-authorization-token un token previamente negociado con:
GET https://api.andreani.com/login
donde en el header **Authorization** deben poner el usuario y password con tipo autenticación básica:
curl -X GET https://api.andreani.com/login -H authorization: Basic aWliYXBpdGVzdDpoNCMwazIzUQ== -H cache-control: no-cache
El token para usar va a venir en el response de ese GET en el header x-authorization-token.
El usuario y password se gestiona con Seguridad Informática.