Hypermedia as the Engine of Application State, ou HATEOAS, é uma “maneira” de implementar APIs REST utilizando hipermídia para indicar que ações ou navegações estão disponíveis para um determinado recurso.

As ações e a navegação são derivadas do estado do recurso e, eventualmente, da própria API. Elas são disponibilizadas para o cliente através de uma coleção de links.

Sucesso

{
  "data": {
    ///..
  },
  "links": [
    {
      "uri":"https://api-mtls.bankly.com.br/[resources]/{resourceId}",
      "ref": "get"
    }
  ],
  "meta": {
    "totalRecords": 1,
    "totalPages": 1,
    "requestTimestamp": "2021-05-21T08:30:00.00000Z",
    "responseTimestamp": "2021-05-21T08:30:00.00100Z"
  }
}
{
  "data": 
  [
    {
    	///..
  	},
    {
    	///..
    }
  ],
  "links": [
    {
      "uri":"https://api.bankly.com.br/[resources]?limit=10&page=1",
      "ref": "self"
    },
    {
      "uri":"https://api.bankly.com.br/[resources]?limit=10&page=1",
      "ref": "first"
    },
    {
      "uri":"https://api.bankly.com.br/[resources]?limit=10&page=1",
      "ref": "prev"
    },
    {
      "uri":"https://api.bankly.com.br/[resources]?limit=10&page=2",
      "ref": "next"
    },
    {
      "uri":"https://api.bankly.com.br/[resources]?limit=10&page=10",
      "ref": "last"
    }
  ],
  "meta": {
    "totalRecords": 10,
    "totalPages": 10,
    "requestTimestamp": "2021-05-21T08:30:00.00000Z",
    "responseTimestamp": "2021-05-21T08:30:00.00100Z"
  }
}

Erros

{
  "errors": [
    {
      "code": "SOME_ERROR_OCCURS",
      "messages": [ "Name must not be empty." ]
    }    
  ],
  "links": [
    {
      "uri":"https://docs.bankly.com.br/reference",
      "ref": "docs"
    }
  ]    ,
  "meta": {
    "totalErrors": 1,
    "requestTimestamp": "2021-05-21T08:30:00.00000Z",
    "responseTimestamp": "2021-05-21T08:30:00.00100Z"
  }
}

❗️

Atenção

Alguns endpoints mais antigos podem não seguir essa convenção de retorno. Esses endpoints estão sendo revisados e, quando disponíveis, você poderá optar por receber esse formato de retorno informando o header Accept application/vnd.bankly.2+json. Sempre que possível, prefira utilizar esse retorno!