> ## Documentation Index
> Fetch the complete documentation index at: https://docs.appsignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Public Endpoint - Errors

Este endpoint da API de Erros é fornecido para adicionar erros adicionais ao AppSignal, onde uma integração existente não pode ser usada ou a linguagem usada ainda não é suportada.

## Endpoint

Método da requisição: `POST`

| Endpoint                                                                       | Descrição                       |
| ------------------------------------------------------------------------------ | ------------------------------- |
| [https://appsignal-endpoint.net/errors](https://appsignal-endpoint.net/errors) | Aceita dados formatados em JSON |

## Parâmetros de URL

| Parâmetro | Tipo   | Descrição                                                                                                                  |
| --------- | ------ | -------------------------------------------------------------------------------------------------------------------------- |
| api\_key  | String | Chave de API **Front-end**, pode ser encontrada nas [configurações do App](https://appsignal.com/redirect-to/app?to=info). |

```shell Shell theme={null}
https://appsignal-endpoint.net/errors?api_key=<api_key>
```

## Parâmetros do corpo

O corpo do post deve conter um objeto JSON, formatado da seguinte forma:

| Parâmetro   | Tipo                     | Descrição                                                                                                                                                                            |
| ----------- | ------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| timestamp   | Integer                  | Timestamp (Epoch) de quando o erro ocorreu                                                                                                                                           |
| action      | String                   | (Opcional) Nome da action onde o erro ocorreu (ex.: `BlogpostController#show` ou `UserInfoLambda#perform`)                                                                           |
| namespace   | String                   | Namespace onde o erro ocorreu (ex.: `frontend` ou `lambda`)                                                                                                                          |
| error       | Error                    | Objeto Error, veja a descrição abaixo                                                                                                                                                |
| revision    | String                   | (Opcional) Hash completo de revisão (GIT) da aplicação                                                                                                                               |
| tags        | `Object<String, String>` | (Opcional) Tags para filtrar o sample ou fornecer contexto adicional. Certifique-se de que tanto as chaves quanto os valores sejam strings (ex.: `{"account_id": "abc-123"}`)        |
| params      | `Object<String, String>` | (Opcional) Parâmetros que foram passados para a função onde o erro ocorreu. Certifique-se de que tanto as chaves quanto os valores sejam strings (ex.: `{"id": "abc-123"}`)          |
| environment | `Object<String, String>` | (Opcional) Valores de ambiente que estavam definidos quando o erro ocorreu. Certifique-se de que tanto as chaves quanto os valores sejam strings (ex.: `{"REGION": "eu-central-1"}`) |
| breadcrumbs | `Array<Breadcrumb>`      | (Opcional) Array de breadcrumbs, registrados antes do erro ocorrer. Veja abaixo a descrição do objeto Breadcrumb                                                                     |
| language    | String                   | (Opcional) String de linguagem, usada para formatar o backtrace. Valores aceitos são `ruby`, `javascript`. Deixe vazio ao usar outra linguagem                                       |

Error:

| Parâmetro | Tipo            | Descrição                                                               |
| --------- | --------------- | ----------------------------------------------------------------------- |
| name      | String          | Nome do erro (ex.: `StandardError`)                                     |
| message   | String          | (Opcional) Mensagem do erro                                             |
| backtrace | `Array<String>` | (Opcional) Array de linhas de backtrace, cada linha deve ser uma string |

Breadcrumb:

| Parâmetro | Tipo                     | Descrição                                                               |
| --------- | ------------------------ | ----------------------------------------------------------------------- |
| category  | String                   | Categoria para rotular o evento (ex.: `network` ou `navigation`)        |
| action    | String                   | Informação contextual relacionada ao evento                             |
| message   | String                   | (opcional) Uma mensagem de log ou outra string para enviar ao AppSignal |
| metadata  | `Object<String, String>` | (opcional) Um objeto de metadados relacionados ao evento                |

Por exemplo:

<CodeGroup>
  ```json JSON theme={null}
  {
    "action": "BlogpostController#show",
    "namespace": "frontend",
    "timestamp": 1559201249,
    "error": {
      "name": "StandardError",
      "message": "Error message",
      "backtrace": ["backtrace/line:1", "backtrace/line:2"]
    },
    "environment": {
      "os": "windows",
      "agent": "super secret user agent"
    },
    "params": {
      "foo": "bar"
    },
    "tags": {
      "account_id": "abc-123"
    },
    "revision": "revision-abc",
    "breadcrumbs": [
      {
        "timestamp": 1559201249,
        "category": "request",
        "action": "http://google.com",
        "message": "request failed",
        "metadata": {
          "code": "not_found"
        }
      }
    ],
    "language": "javascript"
  }
  ```
</CodeGroup>

## Exemplo

<CodeGroup>
  ```ruby Ruby theme={null}
  require "uri"
  require "json"
  require "net/http"

  url = URI("https://appsignal-endpoint.net/errors?api_key=FRONTEND-API-KEY")

  https = Net::HTTP.new(url.host, url.port)
  https.use_ssl = true

  request = Net::HTTP::Post.new(url)
  request["Content-Type"] = "application/json"
  request.body = JSON.dump({
    "action": "BlogpostController#show",
    "namespace": "frontend",
    "timestamp": 1640327525,
    "error": {
      "name": "StandardError",
      "message": "Error message",
      "backtrace": [
        "backtrace/line:1",
        "backtrace/line:2"
      ]
    },
    "environment": {
      "os": "windows",
      "agent": "super secret user agent"
    },
    "params": {
      "foo": "bar"
    },
    "tags": {
      "account_id": "abc-123"
    },
    "revision": "revision-abc-123",
    "breadcrumbs": [
      {
        "timestamp": 1640327525,
        "category": "request",
        "action": "http://google.com",
        "message": "request failed",
        "metadata": {
          "code": "not_found"
        }
      }
    ],
    "language": "javascript"
  })

  response = https.request(request)
  puts response.read_body
  ```
</CodeGroup>

<Tip>
  **Nota**: Este endpoint é otimizado para grandes volumes de tráfego e não
  valida a chave da API ou o payload, uma resposta `200` (`OK`) é retornada quando o
  tamanho do corpo está dentro do limite de `200k`. Isso não significa que a requisição é
  aceita ao ser recebida.
</Tip>
