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

# Anexos de transações

## **Introdução**

Na API do Procfy os anexos são representadas por um objeto JSON com os seguintes atributos:

<Info>
  Atributos com o valor `null` serão retornados na resposta.
</Info>

| Atributo      | Tipo    | Descrição                          |
| :------------ | :------ | :--------------------------------- |
| id            | integer | Identificador único da transação   |
| filename      | string  | Nome do arquivo                    |
| byte\_size    | integer | Tamanho do arquivo                 |
| content\_type | string  | Tipo do arquivo                    |
| created\_at   | date    | Data de criação                    |
| url           | url     | Url do anexo para o envio do mesmo |

***

## **Rotas**

| Método | Endpoint                                          | Descrição                                   |
| :----- | :------------------------------------------------ | :------------------------------------------ |
| GET    | /api/v1/transactions/:id/attachments              | Visualizar todos os anexos da transação     |
| GET    | /api/v1/transactions/:id/attachments/:id          | Visualizar um anexo específico da transação |
| POST   | /api/v1/transactions/:id/attachments              | Criar anexo em uma transação                |
| DELETE | /api/v1/transactions/:id/attachments/:id          | Excluir um anexo de uma transação           |
| GET    | /api/v1/transactions/:id/attachments/:id/download | Baixar o arquivo                            |

#### **Visualizar todos os anexos da transação**

O Procfy utiliza o padrão de paginação para retornar os resultados das requisições. Para mais informações sobre paginação, consulte a seção [**paginação**](/paginacao#introducao).

Para visualizar vários anexos, você deve fazer uma requisição para a API utilizando o método `GET` no endpoint correspondente ao objeto que deseja visualizar.

```text theme={null}
GET /api/v1/transactions/:id/attachments
```

#### **Parâmetros aceitos**

| Parâmetro | Tipo    | Descrição                      |
| :-------- | :------ | :----------------------------- |
| page      | integer | Número da página               |
| items     | integer | Quantidade de itens por página |

#### **Visualizar uma anexo específico da transação**

Para visualizar um anexo específico, você deve fazer uma requisição para a API utilizando o método `GET` no endpoint correspondente ao objeto que deseja visualizar.

```text theme={null}
GET /api/v1/transactions/:id/attachments/:id
```

#### **Criar anexo em uma transação**

Para criar um objeto, você deve fazer uma requisição para a API utilizando o método `POST` no endpoint correspondente ao objeto que deseja criar.

```text theme={null}
POST /api/v1/transactions/:id/attachments
```

#### **Excluir uma anexo da transação**

Para excluir um objeto, você deve fazer uma requisição para a API utilizando o método `DELETE` no endpoint correspondente ao objeto que deseja excluir.

```text theme={null}
DELETE /api/v1/transactions/:id/attachments/:id
```

#### **Baixar o arquivo**

Para fazer download de um arquivo, você deve fazer uma requisição para a API utilizando o método `GET` no endpoint correspondente ao arquivo que deseja fazer o download.

```text theme={null}
GET /api/v1/transactions/:id/attachments/:id/download
```

***

## **Visualizar todos os anexos da transação**

A API disponibiliza algumas opções de filtro para a listagem de anexos. Os parâmetros aceitos são:

| Parâmetro | Tipo    | Descrição                      |
| :-------- | :------ | :----------------------------- |
| page      | integer | Número da página               |
| items     | integer | Quantidade de itens por página |

A API utiliza o padrão de paginação para retornar os resultados das requisições. Para mais informações sobre paginação, consulte a seção [**paginação**](/paginacao#introducao).

> Exemplo de requisição para visualizar todos os anexos da transação

```text theme={null}
GET /api/v1/transactions/:id/attachments
```

> Exemplo de resposta para visualizar todos os anexos da transação

```json theme={null}
{
  "page": {
    "page": 1,
    "items": 50,
    "pages": 1,
    "last": 1,
    "next": null,
    "prev": null,
    "count": 2,
    "from": 1,
    "to": 2
  },
  "data": [
    {
      "id": 179,
      "filename": "2022.xlsx",
      "byte_size": 242071,
      "content_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
      "created_at": "2024-11-04T14:17:15.799-03:00",
      "url": "https://api.procfy.io/v1/transactions/14923/attachments/179/download"
    },
    {
      "id": 183,
      "filename": "my",
      "byte_size": 39898,
      "content_type": "image/jpeg",
      "created_at": "2024-11-06T14:22:39.683-03:00",
      "url": "https://api.procfy.io/api/v1/transactions/14923/attachments/183/download"
    }
  ]
}
```

***

## **Visualizar um anexo específico da transação**

Para consultar um objeto, você deve fazer uma requisição para a API utilizando o método `GET` no endpoint correspondente ao objeto que deseja consultar.

A API vai retornar o objeto consultado, caso não ocorra nenhum erro.

> Exemplo de requisição para visualizar um anexo específico da transação

```text theme={null}
GET /api/v1/transactions/:id/attachments/:id
```

> Exemplo de resposta para visualizar um anexo específico da transação

```json theme={null}
{
  "id": 691042,
  "filename": "Backup-Procfy-06-11-2024 14-55-05.xlsx",
  "byte_size": 33164,
  "content_type": "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet",
  "created_at": "2024-11-06T15:34:24.871-03:00",
  "url": "https://api.procfy.io/api/v1/transactions/45144183/attachments/691042/download"
}
```

***

## **Criando anexo em uma transação**

Para criar um objeto, você deve fazer uma requisição para a API utilizando o método `POST` no endpoint correspondente ao objeto que deseja criar.

A API vai retornar o objeto criado, caso não ocorra nenhum erro.

O corpo da requisição deve conter um objeto com os atributos necessários para a criação do objeto.

Os atributos são:

| Atributo | Tipo | Obrigatório | Descrição                 |
| :------- | :--- | :---------- | :------------------------ |
| filename | file | sim         | Arquivo que deseja anexar |

> Exemplo de requisição para criar anexo em uma transação

```text theme={null}
POST /api/v1/transactions/:id/attachments
```

> Exemplo de resposta para criar uma transação

```json theme={null}
{
  "id": 186,
  "filename": "my",
  "byte_size": 39898,
  "content_type": "image/jpeg",
  "created_at": "2024-11-06T16:09:10.038-03:00",
  "url": "https://api.procfy.io/api/v1/transactions/14923/attachments/186/download"
}
```

***

## **Excluindo um anexo de uma transação**

Para excluir um objeto, você deve fazer uma requisição para a API utilizando o método `DELETE` no endpoint correspondente ao objeto que deseja excluir.

A API vai retornar o objeto excluido, caso não ocorra nenhum erro.

> Exemplo de requisição para excluir um anexo de uma transação

```text theme={null}
DELETE /api/v1/transactions/:id/attachments/:id
```

> Exemplo de resposta para excluir um anexo de uma transação

```json theme={null}
{
  "id": 184,
  "filename": "my",
  "byte_size": 39898,
  "content_type": "image/jpeg",
  "created_at": "2024-11-06T16:02:45.841-03:00",
  "url": "https://api.procfy.io/api/v1/transactions/14923/attachments/183/download"
}
```

***

## **Download de arquivo**

Para fazer download de um arquivo, você deve fazer uma requisição para a API utilizando o método `GET` no endpoint correspondente ao arquivo que deseja fazer download.

A API vai retornar o arquivo criado, caso não ocorra nenhum erro.

> Exemplo de requisição para download de arquivo

```text theme={null}
GET /api/v1/transactions/:id/attachments/:id/download
```
