> ## 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.

# API de Samples

## Listagem de samples

Endpoints \[`GET`]:

| Endpoint                                 | Descrição                             |
| ---------------------------------------- | ------------------------------------- |
| `/api/[app_id]/samples.json`             | Retorna **TODOS** os tipos de samples |
| `/api/[app_id]/samples/performance.json` | Retorna samples de **performance**    |
| `/api/[app_id]/samples/errors.json`      | Retorna samples de **erros**          |

Parâmetros:

| Param       | Tipo              |                                         Descrição |
| ----------- | ----------------- | ------------------------------------------------: |
| action\_id  | string            |          Exemplo: `BlogPostsController-hash-show` |
| exception   | string            |                            Exemplo: NoMethodError |
| since       | timestamp/integer |                    Todos os horários estão em UTC |
| before      | timestamp/integer |                    Todos os horários estão em UTC |
| limit       | integer           | A quantidade de entradas retornadas (padrão é 10) |
| count\_only | boolean           |    (true/false) Para retornar apenas uma contagem |

Escape as actions substituindo:

* `#` por `-hash-`
* `/` por `-slash-`
* `.` por `-dot-`

Então `BlogPostsController#show` se torna: `BlogPostsController-hash-show`

Um exemplo de requisição completa seria:

```shell Shell theme={null}
https://appsignal.com/api/5114f7e38c5ce90000000011/samples.json?token=HseUe&action_id=AccountsController-hash-index&exception=ActionView::Template::Error&since=1374843246
```

### Resultado

Este endpoint retorna o seguinte JSON (um sample lento e um sample de erro):

<CodeGroup>
  ```json JSON theme={null}
  {
    "count": 2,
    "log_entries": [
      {
        "id": "51f29e7b183d700800150358_SlowController#show_1476962400",
        "action": "SlowController#show",
        "path": "/slow-request",
        "duration": 3182.545407,
        "status": 200,
        "time": 1476962400,
        "is_exception": false,
        "exception": {
          "name": null
        }
      },
      {
        "id": "57f653fa16b7e24cb0dc9e2b_ErrorController#trigger_1475761080",
        "action": "ErrorController#trigger",
        "path": "/error-request",
        "duration": null,
        "status": null,
        "time": 1475761080,
        "is_exception": true,
        "exception": {
          "name": "ActionView::Template::Error"
        }
      }
    ]
  }
  ```
</CodeGroup>

## Exibição de sample

Endpoint \[`GET`]: `/api/[app_id]/samples/[id].json`

Parâmetros:

| Param | Tipo   |                                                                                      Descrição |
| ----- | ------ | ---------------------------------------------------------------------------------------------: |
| id    | string | Id do sample saneado (exemplo: `51f29e7b183d700800150358_SlowController-hash-show_1476962400`) |

### Resultado

Esta é uma entrada de log **LENTA**:

<CodeGroup>
  ```json JSON theme={null}
  {
    "id": "51f29e7b183d700800150358_SlowController#show_1476962400",
    "action": "slow#request",
    "db_runtime": 500.0,
    "duration": 300.0,
    "environment": {},
    "hostname": "app1",
    "is_exception": null,
    "kind": "http_request",
    "params": {},
    "path": "/blog",
    "request_format": "html",
    "request_method": "GET",
    "session_data": {},
    "status": "200",
    "view_runtime": 500.0,
    "time": 1002700800,
    "end": 978339601,
    "allocation_count": 110101,
    "events": [
        {
            "action": "query",
            "duration": 250.0,
            "group": "mongoid",
            "name": "query.mongoid",
            "payload": {
                "query": "this is a mongoid query"
            },
            "time": 0,
            "end": 0
            "digest": 00000,
            "allocation_count": 1010101

        }
    ],
    "exception": null
  }
  ```
</CodeGroup>

Esta é uma entrada de log de **ERRO**:

<CodeGroup>
  ```json JSON theme={null}
  {
    "id": "57f653fa16b7e24cb0dc9e2b_ErrorController#trigger_1475761080",
    "action": "Error#trigger",
    "db_runtime": 500.0,
    "duration": null,
    "environment": {
      "HTTP_USER_AGENT": "Mozilla/5.0 (Macintosh"
    },
    "hostname": "app1",
    "is_exception": true,
    "kind": "http_request",
    "params": {
      "id": 1,
      "get": "something"
    },
    "path": "/blog",
    "request_format": "html",
    "request_method": "GET",
    "session_data": {
      "current_user_id": 1
    },
    "status": "200",
    "view_runtime": 500.0,
    "time": 1002700800,
    "end": 978339601,
    "events": [],
    "tags": {
      "user": "john doe",
      "id": 1
    },
    "exception": {
      "message": "The method was not found",
      "name": "NoMethodError",
      "backtrace": ["Backtrace line 1", "Backtrace line 2", "Backtrace line 3"]
    }
  }
  ```
</CodeGroup>

**Observação:** Se você precisar de consultas mais avançadas, como pesquisar samples por tag, você pode fazer isso usando nossa [API GraphQL](https://docs.appsignal.com/api/graphql). Confira a documentação da API GraphQL para exemplos de consultas e mais detalhes.
