# 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 %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://desenvolvedores.skyhub.com.br/sac/chats.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
