> For the complete documentation index, see [llms.txt](https://docs.workflow.d1.cx/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.workflow.d1.cx/configuracoes/apis.md).

# Document

***Document*****&#x20;é a principal entidade** do Workflow. Ela é **responsável por** **armazenar** todas as **informações** associadas a atividade que será executada.&#x20;

{% hint style="info" %}
**Todos os métodos precisam de** [**autenticação**](/configuracoes/authentication.md)
{% endhint %}

## create

<mark style="color:green;">`POST`</mark> `/document/create`

Essa API é utilizada para **criação de documentos**. Todas as informações enviadas serão salvas e podem ser resgatadas utilizando as API's de busca.

#### Headers

| Name          | Type   | Description     |
| ------------- | ------ | --------------- |
| Authorization | string | Bearer \<token> |

#### Request Body

| Name                 | Type   | Description                                                                                               |
| -------------------- | ------ | --------------------------------------------------------------------------------------------------------- |
| status\_id           | number | Número de ID do status                                                                                    |
| product\_id          | number | Número de ID do produto                                                                                   |
| modality\_identifier | string | Texto nome da modalidade                                                                                  |
| cpf                  | string | Texto identificador (CPF/CNPJ/susep)                                                                      |
| name                 | string | Nome do cliente (envio de comunicações)                                                                   |
| phone                | string | Telefone do cliente (envio de comunicações)                                                               |
| email                | string | E-mail do cliente (envio de comunicações)                                                                 |
| sla\_total           | number | SLA total do documento em horas                                                                           |
| source               | string | Fonte de envio do documento (por exemplo: chatbot/postman/robô)                                           |
| filled\_columns      | object | Objeto JSON com informações extras sobre o documento (caso atualizado, as informações serão concatenadas) |

{% tabs %}
{% tab title="201 Este retorno traz informações sobre a criação do documento para verificação. Os atributos são os mesmos da requisição, com a adição das seguintes informações:

uuid: uuid gerado para o documento criado
sla\_start: data de início do SLA
sla\_end: data de término do SLA
sla\_end\_status: data de término do SLA para o status atual
date\_time: data da última atualização de status
created\_at: data de criação do documento
updated\_at: data da última atualização geral
id: ID do documento criado
protocol: protocolo gerado para o documento criado" %}

```
{
    "status_id": <status_id> : number,
    "product_id": <product_id> : number,
    "modality_identifier": <modality_identifier> : string,
    "cpf": <campo_identificador> : string,
    "email": <email> : string,
    "phone": <phone> : string,
    "name": <name> : string,
    "sla_total": <sla_total> : number,
    "source": <source> : string,
    "filled_columns": <filled_columns> : jsonObject,
    "modality_id": <modality_id> : number,
    "uuid": <uuid> : string,
    "sla_start": "<sla_start> : Date",
    "sla_end": "<sla_end> : Date",
    "sla_end_status": <sla_end_status> : Date,
    "date_time": <date_time> : Date,
    "created_at": <created_at> : Date,
    "updated_at": <updated_at> : Date,
    "id": <id> : number,
    "protocol": <protocol> : string,
}
```

{% endtab %}

{% tab title="404 Os ID complementares enviados não existem no banco de dados" %}

```
{
    "error": "NotFound: Provided (campo externo relacionado) parameter not exists on database"
}
```

{% endtab %}

{% tab title="422 Cadastro inválido, lança exceção no banco. Descrição do erro será melhor descrita." %}

```
{
    "error": "Database error: Throw node exception"
}
```

{% endtab %}
{% endtabs %}

### Body exemplo

```
{
    "status_id": <status_id>,
    "product_id": <product_id>,
    "modality_identifier": <modality_identifier>,
    "cpf": <campo_identificador>,
    "email": <email>,
    "phone": <phone>,
    "name": <name>,
    "sla_total": <sla_total>,
    "source": <source>,
    "filled_columns": <filled_columns>,
}
```

## updateById&#x20;

<mark style="color:green;">`POST`</mark> `/document/updateById`

API utilizada para **editar um documento existente**&#x20;

#### Request Body

| Name                 | Type   | Description                                                                                               |
| -------------------- | ------ | --------------------------------------------------------------------------------------------------------- |
| id                   | number | ID do documento que vai ser atualizado                                                                    |
| status\_id           | number | número de ID do status                                                                                    |
| product\_id          | number | número de ID do produto                                                                                   |
| modality\_identifier | string | texto nome da modalidade                                                                                  |
| cpf                  | string | texto identificador(CPF/CNPJ/susep)                                                                       |
| email                | string | e-mail do cliente (envio de comunicações)                                                                 |
| phone                | string | telefone do cliente(envio de comunicações)                                                                |
| name                 | string | nome do cliente (envio de comunicações)                                                                   |
| sla\_total           | number | SLA total do documento (horas)                                                                            |
| source               | string | fonte de envio do documento (chatbot/postman/robô)                                                        |
| filled\_columns      | object | objeto JSON com informações extras sobre o documento (caso atualizado, as informações serão concatenadas) |

{% tabs %}
{% tab title="200 Documento atualizado com sucesso.

Atributos:

id: ID do documento que foi atualizado,
uuid: uuid correspondente ao documento que foi atualizado,
status\_id: número de ID do status do documento que foi atualizado,
product\_id: número de ID do produto do documento que foi atualizado,
user\_id: número de ID do usuário associado ao documento que foi atualizado,
source: fonte de envio do documento que foi atualizado,
protocol: protocolo correspondente ao documento que foi atualizado,
cpf: texto identificador do documento que foi atualizado,
email: e-mail do documento que foi atualizado,
phone: phone do documento que foi atualizado,
name: name do documento que foi atualizado,
sla\_total: sla total do documento que foi atualizado,
sla\_start: data de início de SLA do documento que foi atualizado,
sla\_end: data de fim de SLA do documento que foi atualizado,
sla\_end\_status: data de término do SLA para status atual do documento que foi atualizado,
modality\_identifier: texto nome da modalidade,
filled\_columns: objeto JSON com informações extras sobre o documento (caso atualizado, as informações serão concatenadas),
date\_time: data da última atualização de status do documento atualizado,
created\_at: data de criação do documento atualizado,
updated\_at: data da última atualização geral do documento atualizado,
modality\_id: modality\_id correspondente ao modality\_identifier do documento atualizado,
date\_finished: data da primeira atualização para um status categoria final do documento atualizado

" %}

```
{
    "id": <id>
    "uuid": <uuid>
    "status_id": <status_id>
    "product_id": <product_id>
    "user_id": <user_id>
    "source": <source>
    "protocol": <protocol>
    "cpf": <campo_identificador>
    "email": <email>
    "phone": <phone>
    "name": <name>
    "sla_total": <sla_total>
    "sla_start": <sla_start>
    "sla_end": <sla_end>
    "sla_end_status": <sla_end_status>
    "modality_identifier": <modality_identifier>
    "filled_columns": <filled_columns>
    "date_time": <date_time>
    "created_at": <created_at>
    "updated_at": <updated_at>
    "modality_id": <modality_id>
    "date_finished": <date_finished>
}
```

{% endtab %}

{% tab title="404 IDs complementares enviados não existem no banco de dados." %}

```
{
    "error": "NotFound: Provided (campo externo relacionado) parameter not exists on database"
}
```

{% endtab %}

{% tab title="422 Consistência inválida, lança exceção no banco. " %}

```
{
    "error": "Database error: Throw node exception"
}
```

{% endtab %}
{% endtabs %}

### Body exemplo

```
{
    "id": <id>,
    "status_id": <status_id>,
    "product_id": <product_id>,
    "modality_identifier": <modality_identifier>,
    "cpf": <campo_identificador>,
    "email": <email>,
    "phone": <phone>,
    "name": <name>,
    "sla_total": <sla_total>,
    "source": <source>,
    "filled_columns": <filled_columns>
}
```

## loadById

<mark style="color:green;">`POST`</mark> `/document/loadById`

API utilizada para **consultar um documento existente pelo ID**.

#### Request Body

| Name | Type   | Description                            |
| ---- | ------ | -------------------------------------- |
| id   | number | id do documento que vai ser consultado |

{% tabs %}
{% tab title="200 Retorno do documento consultado.

Atributos:

id: ID do documento consultado
status\_id: número de ID do status do documento consultado
uuid: uuid correspondente ao documento consultado
product\_id: número de ID do produto do documento consultado
protocol: protocolo correspondente ao documento consultado
filled\_columns: objeto JSON com informações extras sobre o documento consultado
date\_time: data da última atualização de status do documento consultado
sla\_end\_status: data de término do SLA para status atual do documento consultado
updated\_at: data da última atualização geral do documento consultado
fields\_to\_show:
CPF: campo CPF formatado
Email: campo e-mail formatado
Telefone: campo phone
Cliente: campo name
Fonte: campo source
Modalidade: campo modality\_identifier
Criado em: campo created\_at formatado
product: detalhamento sobre produto relacionado
status: detalhamento sobre status relacionado
observation: detalhamento sobre observation relacionadas
attachment: detalhamento sobre attachments relacionados
step: detalhamento sobre step atual" %}

```
{
    "id": <id>,
    "status_id": <status_id>,
    "uuid": <uuid>,
    "product_id": <product_id>,
    "protocol": <protocol>,
    "filled_columns": <filled_columns>,
    "date_time": <date_time>,
    "sla_end_status": <sla_end_status>,
    "updated_at": <updated_at>,
    "fields_to_show": {
        "CPF": <campo_identificador>,
        "Email": <email>,
        "Telefone": <phone>,
        "Cliente": <name>,
        "Fonte": <source>,
        "Modalidade": <modality_identifier>,
        "Criado em": <created_at>,
    },
    "product": <product>,
    "status": <status>,
    "observation": <observation>,
    "attachment": <attachment>,
    "step": <step>
}
```

{% endtab %}

{% tab title="400 Campo enviado é inválido." %}

```
{
    "error": "BadRequest: Invalid parameters provided: id"
}
```

{% endtab %}

{% tab title="404 ID consultado não existe no banco de dados." %}

```
{
    "error": "NotFound: Provided id parameter not exists on database"
}
```

{% endtab %}
{% endtabs %}

## Body Exemplo

```
{
    "id": <id>
}
```

## loadByCPF

<mark style="color:green;">`POST`</mark> `/document/loadByCPF`

API utilizada para **consultar documentos existentes com o campo CPF** idêntico ao valor enviado.

#### Request Body

| Name       | Type   | Description                                          |
| ---------- | ------ | ---------------------------------------------------- |
| cpf        | string | texto de identificar que será consultado             |
| categories | string | categorias dos status para os documentos consultados |

{% tabs %}
{% tab title="200 Lista de documentos para o CPF consultado.

Atributos:

id: id do documento consultado
status\_id: número de ID do status do documento consultado
uuid: uuid correspondente ao documento consultado
product\_id: número de ID do produto do documento consultado
protocol: protocolo correspondente ao documento consultado
filled\_columns: objeto JSON com informações extras sobre o documento consultado
date\_time: data da última atualização de status do documento consultado
sla\_end\_status: data de término do SLA para status atual do documento consultado
updated\_at: data da última atualização geral do documento consultado
fields\_to\_show:
CPF: campo CPF formatado
Email: campo e-mail formatado
Telefone: campo phone
Cliente: campo name
Fonte: campo source
Modalidade: campo modality\_identifier
Criado em: campo created\_at formatado
product: detalhamento sobre produto relacionado
status: detalhamento sobre status relacionado
observation: detalhamento sobre observation relacionadas" %}

```
[
  {
      "id": <id>,
      "status_id": <status_id>,
      "uuid": <uuid>,
      "product_id": <product_id>,
      "protocol": <protocol>,
      "filled_columns": <filled_columns>,
      "date_time": <date_time>,
      "sla_end_status": <sla_end_status>,
      "updated_at": <updated_at>,
      "fields_to_show": {
          "CPF": <CPF>,
          "Email": <Email>,
          "Telefone": <Telefone>,
          "Cliente": <Client>,
          "Fonte": <Fonte>,
          "Modalidade": <Modalidade>,
          "Criado em": <Criado em>
      },
      "product":<product> : Object<Product>,
      "status":<status> Object<Status>,
      "observation":<observation> Observation[],
      "attachment":<attachment> Attachment[],
      "step":<step> : Object<Step>
  }
]
```

{% endtab %}

{% tab title="400 Campo enviado é inválido." %}

```
{
    "error": "BadRequest: Invalid parameters provided: cpf"
}
```

{% endtab %}
{% endtabs %}

## Body Exemplo

```
{
    "cpf": <campo_identificador>,
    "categories": <categories>
}
```
