# Mensagens de erro

As respostas retornadas pela API apresentam o seguinte padrão de resposta:

```javascript
{
  "errors": { ... },
  "data": { ... }
}
```

Porém o atributo *errors* somente é retornado quando ocorre alguma excessão na requisição.

Quando um erro de query inválida em GraphQL acontece, as excessões são semelhantes ao exemplo abaixo: (Ao deixar de enviar um valor para *name*, que é obrigatório na especificação da query)

```javascript
{
  "errors": [
    {
      "message": "Variable \"$folder\" got invalid value null at \"folder.name\"; Expected non-nullable type \"String!\" not to be null.",
      "locations": [
        {
          "line": 1,
          "column": 31
        }
      ]
    }
  ]
}
```

A seguir, temos um exemplo de erro comum, ao buscar uma pasta inexistente:

```javascript
{
  "errors": [
    {
      "message": "Folder not found",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "folder"
      ]
    }
  ],
  "data": {
    "folder": null
  }
}
```

E também temos erros de validação (quando o atributo "*message*" possui o valor "*validation*"), criando uma pasta definindo o valor de *string* vazio:

```javascript
{
  "errors": [
    {
      "message": "validation",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "createFolder"
      ],
      "extensions": {
        "validation": {
          "folder.name": [
            "field_required"
          ]
        },
        "category": "validation"
      }
    }
  ],
  "data": {
    "createFolder": null
  }
}
```

No seguinte exemplo, também temos um erro de validação, porém com variáveis, que acontece ao definir um nome muito curto para uma pasta:

```javascript
{
  "errors": [
    {
      "message": "validation",
      "locations": [
        {
          "line": 2,
          "column": 3
        }
      ],
      "path": [
        "createFolder"
      ],
      "extensions": {
        "validation": {
          "folder.name": [
            "must_be_at_least_characters:3"
          ]
        },
        "category": "validation"
      }
    }
  ],
  "data": {
    "createFolder": null
  }
}
```

### Erros de validação

Por último, segue um JSON com todas as possíveis mensagens de erro ou de validação que podem ser retornadas pela API, junto com o que cada uma delas significa e possíveis variáveis entre chaves (Ex: *{{variavel}}*). Lembrando que não incluem erros de query GraphQL.

```javascript
{
  "unauthorized": "Você não está mais autenticado",
  "document_not_found": "Documento não encontrado",
  "folder_not_found": "Pasta não encontrada",
  "document_signed": "O documento já foi assinado",
  "not_your_turn": "Não é a sua vez de assinar o documento",
  "must_be_a_string": "É somente permitido texto",
  "must_be_an_array": "Não é uma lista",
  "not_a_valid_date": "Não é uma data válida",
  "must_be_a_valid_email_address": "Não é um email válido",
  "must_be_a_file": "Não é um arquivo",
  "failed_to_upload":  "Erro ao enviar o arquivo",
  "could_not_upload_file": "Não foi possível enviar o arquivo",
  "field_required": "Este campo é obrigatório",
  "unavailable_credits": "Os seus documentos acabaram, você já criou todos os documentos disponíveis no seu plano.",
  "unavailable_verifications_credits": "Créditos de verificação adicional insuficientes.",
  "may_not_be_greater_than": "Não pode ter mais que {{max}} caracteres",
  "must_be_at_least": "Não pode ter menos que {{min}} caracteres",
  "format_is_invalid": "O formato do campo está incorreto",
  "invalid_date": "Não é uma data válida",
  "without_permission": "Você precisa ser um administrador da organização para executar esta ação.",
  "must_be_a_valid_file": "Somente são permitidos arquivos com as extenções {{extensions}}",
  "not_a_member_of_organization": "Você precisa ser um membro da mesma organização para executar esta ação."
}
```

### Erro de rate limit

No caso de o seu usuário exceder 60 requisições por minuto, será retornado um erro com o status code 429, com a mensagem:

```json
{
    "message": "Too Many Attempts."
}
```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.autentique.com.br/api/2/integracao/mensagens-de-erro.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
