> For the complete documentation index, see [llms.txt](https://desenvolvedores.skyhub.com.br/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://desenvolvedores.skyhub.com.br/sac/chats.md).

# Chats

Na guia [Listar SAC](/sac/listar_sac.md) é possível observar que o retorno para o endpoint `/sac` traz informações gerais sobre o ticket, porém nele não constam as interações realizadas.

Para verificar as mensagens presentes em um SAC é necessário utilizar a URI `/sac/{code}/chats`, que permite a consulta das interações, sejam elas entre ***seller*** e **marketplace**, ***seller*** e **cliente** e **cliente** e **marketplace**.

## GET - Consultando chats de um pedido

A consulta dos chats para um pedido permite verificar todas as interações que ocorreram para a entrega informada em **`{code}`**, conforme endpoint observado a seguir:

```
https://api.skyhub.com.br/sac/{code}/chats
```

{% hint style="info" %}
Nesta consulta será utilizado o **código completo do pedido** (canal de venda + código numérico).
{% endhint %}

Para este endpoint serão necessários os headers padronizados na API e descritos abaixo:

#### **Request headers:**

| Key                  | Value                                       |
| -------------------- | ------------------------------------------- |
| X-User-Email         | email\_de\_usuario                          |
| X-Api-Key            | token\_de\_integracao de sua conta SkyHub   |
| X-Accountmanager-Key | token\_account único de cada Plataforma/ERP |
| Accept               | application/json                            |
| Content-Type         | application/json                            |

#### **Example request:**

```
curl --location --request GET 'https://api.skyhub.com.br/sac/Lojas Americanas-200123456789001/chats' \
--header 'X-User-Email: email_de_usuario' \
--header 'X-Api-Key: token_de_integracao de sua conta SkyHub' \
--header 'X-Accountmanager-Key: token_account único de cada Plataforma/ERP' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json'
```

#### **Response esperado:**

{% hint style="success" %}
200 \[Success] - OK: Como resposta haverão as interações para o SAC gerado para o pedido referido na consulta:
{% endhint %}

```
{
    "chats": [
        {
            "last_message": "2023-06-06T21:44:44",
            "messages": [
                {
                    "content": "Olá! Produto ainda não foi entregue.",
                    "created_at": "2023-06-06T21:41:56",
                    "part": {
                        "code": 12345678,
                        "email": "john@exemploskyhub.com.br",
                        "name": "João dos Santos",
                        "role": "CUSTOMER"
                    },
                    "replyed_at": null
                }
            ],
            "parts": "CUSTOMER_SELLER",
            "seller_status": "UNREAD",
            "status": "ACTIVE"
        }
    ],
    "next_page": "https://api.skyhub.com.br/sac/Lojas Americanas-200123456789001/chats?cursor=...In0="
}
```

Através do retorno acima é possível observar que as interações são identificadas no campo *parts* e consistem em:

* **CUSTOMER\_B2W**: Interação entre o <mark style="color:green;">**cliente**</mark> e a <mark style="color:red;">**Americanas**</mark>;
* **B2W\_SELLER**: Interação entre a <mark style="color:red;">**Americanas**</mark> e o *<mark style="color:purple;">**seller**</mark>*;
* **CUSTOMER\_SELLER**: Interação entre o <mark style="color:green;">**cliente**</mark> e o *<mark style="color:purple;">**seller**</mark>*.

Além do *parts*, o retorno apresentado na consulta trará o campo *role*, que será preenchido com a identificação de quem foi responsável pela interação e poderá conter os seguintes valores:

* <mark style="color:green;">**CUSTOMER**</mark>: Cliente;
* <mark style="color:purple;">**SELLER**</mark>: A loja que está atuando na solicitação;
* <mark style="color:red;">**EMPLOYEE**</mark>: Agentes do marketplace estão auxiliando no chat "Ajuda Americanas".

## POST - Interagindo em um atendimento

Para responder a um ticket, será necessário utilizar os [headers](#request-headers) padronizados na API para executar uma requisição contendo o método POST para o endpoint abaixo:

```
https://api.skyhub.com.br/sac/{code}/chats/{parts}
```

{% hint style="info" %}
Note que a URI do `/sac` para a interação requer dois parâmetros <mark style="color:red;">**obrigatórios**</mark> - *code* e *parts* - sendo:

* ***code***: Corresponde ao **código completo do pedido** (canal de venda + código numérico);
* ***parts***: Responsável pela interação, podendo conter os valores **CUSTOMER\_SELLER** ou **B2W\_SELLER**.
  {% endhint %}

#### **Request body:**

```
{
  "deliveryId": "Número da entrega",
  "identityId": "Documento de identificação", // CNPJ do seller cadastrado na Americanas
  "messageTo": "TO_CUSTOMER", // Destinatário da mensagem, podendo ser Americanas (TO_B2W) ou o cliente final (TO_CUSTOMER)
  "messageType": "TEXT_MESSAGE",
  "orderId": "ID do pedido",
  "message": "Mensagem a ser enviada"
}
```

#### **Example request:**

```
curl --location --request POST 'https://api.skyhub.com.br/sac/Lojas Americanas-200123456789001/chats/CUSTOMER_SELLER' \
--header 'X-User-Email: email_de_usuario' \
--header 'X-Api-Key: token_de_integracao de sua conta SkyHub' \
--header 'X-Accountmanager-Key: token_account único de cada Plataforma/ERP' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
    "deliveryId": "200123456789001",
    "identityId": "12345678901234",
    "messageTo": "TO_CUSTOMER",
    "messageType": "TEXT_MESSAGE",
    "orderId": "02-123456789",
    "message": "Olá! Agradecemos sua compra e nos colocamos à disposição caso precise de algo. Tenha um excelente dia!"
}'
```

#### Response esperado:

{% hint style="success" %}
201 \[Success] - Created
{% endhint %}

{% hint style="danger" %}
**É comum ser retornado o status&#x20;**<mark style="color:red;">**422**</mark>**&#x20;ao tentar interagir em um chat com status PAUSED.**

Isto ocorre porquê não é possível interagir em chats contendo este status, uma vez que o PAUSED destina-se a atendimentos que estão sendo mediados pelo marketplace.&#x20;
{% endhint %}

## PATCH - Atualizando o status do chat

É possível atualizar o status de um chat, seguindo a mesma estrutura vista na interação com o atendimento. Para tal, será necessário utilizar os [headers](#request-headers) padronizados na API para executar uma requisição contendo o método PATCH para o endpoint abaixo:

```
https://api.skyhub.com.br/sac/{code}/chats/{parts}
```

{% hint style="info" %}
Novamente serão utilizados os parâmetros <mark style="color:red;">**obrigatórios**</mark> *code* e *parts*, sendo:

* ***code***: Corresponde ao **código completo do pedido** (canal de venda + código numérico);
* ***parts***: Responsável pela interação, podendo conter os valores **CUSTOMER\_SELLER** ou **B2W\_SELLER**.
  {% endhint %}

#### **Request body:**

```
{
    "status": "ARCHIVED"
}
```

{% hint style="info" %}
Os valores a serem preenchidos para o status são **READ** (lido), **UNREAD** (não lido) e **ARCHIVED** (arquivado).
{% endhint %}

#### **Example request:**

```
curl --location --request PATCH 'https://api.skyhub.com.br/sac/Lojas Americanas-200123456789001/chats/CUSTOMER_SELLER' \
--header 'X-User-Email: email_de_usuario' \
--header 'X-Api-Key: token_de_integracao de sua conta SkyHub' \
--header 'X-Accountmanager-Key: token_account único de cada Plataforma/ERP' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--data '{
    "status": "READ"
}'
```

#### Response esperado:

{% hint style="success" %}
204 \[Success] - No content
{% endhint %}
