# Solucionar problemas da Azion API

Esta página lista os erros que você pode encontrar com a [Azion API](/pt-br/documentacao/devtools/api/), cada um com a causa e a correção. Toda resposta de erro contém um array `errors`. Cada item traz um `code`, um `title`, um `detail`, um `status` como string e, geralmente, um `source`.

---

## Uma requisição falha com Authentication credentials were not provided

Uma requisição responde `401`, com o header `WWW-Authenticate: Bearer realm="api"` e este corpo:

```json
{"errors":[{"code":"10002","title":"Not Authenticated","detail":"Authentication credentials were not provided.","status":"401","source":{"headers":"Authorization"}}]}
```

A requisição não tem o header `Authorization`. O código `10002` e `"source":{"headers":"Authorization"}` indicam o header que falta.

- **Envie o header do token**: adicione `Authorization: Token [TOKEN VALUE]` a todas as requisições, com o seu personal token no lugar de `[TOKEN VALUE]`.
- **Use o esquema Bearer se o seu cliente precisar dele**: a API também aceita um personal token como `Authorization: Bearer [TOKEN VALUE]`.
- **Obtenha um personal token**: crie um no Azion Console ou com a Azion CLI. Para as etapas, consulte [Gerencie personal tokens](/pt-br/documentacao/guias/plataforma/conta-e-billing/personal-tokens/).

A mesma requisição passa a responder `200`.

---

## Uma requisição falha com Invalid authentication credentials

Uma requisição que envia um header `Authorization` responde `401`, com o header `WWW-Authenticate: Bearer realm="api"` e este corpo:

```json
{"errors":[{"code":"10001","title":"Authentication Failed","detail":"Invalid authentication credentials.","status":"401","source":{"headers":"Authorization"}}]}
```

O header está presente, mas a API não aceita o token que ele leva. O código `10001` diferencia este caso de um header ausente, que retorna o código `10002`.

- **Confira o valor do token**: compare o token do header com o token que você salvou ao criá-lo.
- **Substitua o token**: crie um personal token e envie-o no header. Para as etapas, consulte [Gerencie personal tokens](/pt-br/documentacao/guias/plataforma/conta-e-billing/personal-tokens/).

Com um token válido, a mesma requisição responde `200`.

---

## Uma lista falha com Page size must be between 0 and 100

`GET https://api.azion.com/v4/workspace/workloads?page_size=1000&fields=id` responde `400` com este corpo:

```json
{"errors":[{"code":"10097","title":"Invalid Page Size","detail":"Page size must be between 0 and 100.","status":"400","source":{"pointer":"/data"}}]}
```

O parâmetro de query `page_size` está acima do máximo. Uma lista retorna no máximo 100 itens por página, e 10 quando você omite `page_size`.

- **Reduza o tamanho da página**: envie `page_size=100` ou menos.
- **Leia o restante página por página**: envie `page=2`, `page=3` e assim por diante, até o valor de `total_pages` da resposta.

A lista responde `200`, e o campo `page_size` da resposta repete o valor que você enviou.

---

## Uma lista falha com Not found depois da última página

Uma requisição de lista com um valor alto de `page` responde `404`. Um `GET` com um `page` além de `total_pages`, como `GET https://api.azion.com/v4/workspace/workloads?page=99`, responde este corpo:

```json
{"errors":[{"code":"10004","title":"Not Found","detail":"Not found.","status":"404","source":{"pointer":"/data"}}]}
```

O valor de `page` é maior que o número de páginas da lista. Este `404` traz `"source":{"pointer":"/data"}`, e um `404` de um recurso inexistente não traz nenhum.

- **Leia primeiro o número de páginas**: solicite a página 1 e leia `total_pages` e `count` na resposta.
- **Pare na última página**: aumente `page` até que ele seja igual a `total_pages`. Com um `page_size` maior, a lista tem menos páginas.

Todas as páginas de 1 a `total_pages` respondem `200`.

---

## Uma requisição de recurso falha com Not found

Uma requisição de um recurso pelo ID dele responde `404`. Um `GET` com um ID que não existe, como `GET https://api.azion.com/v4/workspace/network_lists/999999999`, responde este corpo:

```json
{"errors":[{"code":"10004","title":"Not Found","detail":"Not found.","status":"404"}]}
```

Nenhum recurso com esse ID existe na conta. Um recurso que você excluiu retorna o mesmo corpo: depois de um `DELETE`, um `GET` no mesmo caminho responde este `404`. A resposta não tem o membro `source`, ao contrário do `404` de uma página além do fim de uma lista.

- **Encontre o ID na lista**: liste a coleção, por exemplo `GET https://api.azion.com/v4/workspace/network_lists`, e copie o `id` de `results`.
- **Encurte a lista**: adicione `fields=id,name` para retornar só o ID e o nome de cada item.

Com um ID da lista, a requisição responde `200` e retorna o recurso em `data`.

---

## Uma requisição falha com Method not allowed

Uma requisição responde `405`. Um `DELETE` em um caminho de coleção, como `DELETE https://api.azion.com/v4/workspace/network_lists`, responde com o header `Allow: GET, POST` e este corpo:

```json
{"errors":[{"code":"10007","title":"Method Not Allowed","detail":"Method \"DELETE\" not allowed.","status":"405","source":{"pointer":"/data"},"meta":{"method":"DELETE"}}]}
```

Um `POST` em um caminho de item, como `POST https://api.azion.com/v4/workspace/network_lists/<network-list-id>`, responde com o header `Allow: GET, PUT, PATCH, DELETE` e este corpo:

```json
{"errors":[{"code":"10007","title":"Method Not Allowed","detail":"Method \"POST\" not allowed.","status":"405","source":{"pointer":"/data"},"meta":{"method":"POST"}}]}
```

O caminho não aceita o método que você enviou, que `meta.method` indica. Um caminho de coleção e um caminho de item aceitam métodos diferentes.

- **Use um método do header Allow**: o header `Allow` da resposta lista os métodos que o caminho aceita.
- **Crie na coleção**: envie `POST` para o caminho da coleção, como `/v4/workspace/network_lists`.
- **Altere ou exclua no item**: envie `PUT`, `PATCH` ou `DELETE` para o caminho do item, como `/v4/workspace/network_lists/<network-list-id>`.

Com um método do header `Allow`, a requisição responde `200`, ou `201` em uma criação.

---

## Recursos relacionados

- [Azion API](/pt-br/documentacao/devtools/api.md): A URL base, o header de autenticação e os limites de tamanho de página e de rate limit dos quais várias correções dependem.
- [Primeiros passos com a Azion API](/pt-br/documentacao/devtools/api/primeiros-passos.md): Uma primeira requisição e, em seguida, a criação, a leitura, a atualização e a exclusão de uma network list, com todas as respostas.
- [Gerencie personal tokens](/pt-br/documentacao/guias/plataforma/conta-e-billing/personal-tokens.md): Crie o personal token que autentica as suas requisições, pelo Azion Console ou pela Azion CLI.
- [Referência da Azion API](https://api.azion.com/): Todos os caminhos, métodos, parâmetros e respostas da API.
