# Rehub - Ações de Produto

A rota rehub permite automatizar ações que demandam o acesso ao portal parceiro ou ao front da API para serem executadas, como **conexão** e **desconexão** de itens e **sincronização de preço**.

## POST - Solicitar credenciais

O primeiro passo para que possa utilizar os recursos do rehub é solicitar o **Bearer JWT** que será utilizado para autenticação da requisição.&#x20;

Para realizar a solicitação, basta realizar um POST no endpoint a seguir:

```
https://api.skyhub.com.br/auth
```

#### Request headers:

| Key                  | Value                                       |
| -------------------- | ------------------------------------------- |
| Accept               | application/json                            |
| Content-Type         | application/json                            |
| X-Accountmanager-Key | token\_account único de cada Plataforma/ERP |

#### Request body:

```
{
	"user_email": "email_de_usuario",
	"api_key": "token_de_integracao de sua conta SkyHub"
}
```

#### Example request:

```
curl --location --request POST 'https://api.skyhub.com.br/auth' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'X-Accountmanager-Key: token_account_da_plataforma' \
--data-raw '{
    "user_email": "email_de_usuario@e-mail.com",
    "api_key": "token_de_integracao de sua conta SkyHub"
}'
```

**Response esperado:**

{% hint style="success" %}
200 \[Success] - OK: Haverá um response body com o Bearer JWT:
{% endhint %}

```
{
    "token": "eyJhbGci...........TyPs"
}
```

{% hint style="info" %}
A validade do Bearer JWT é de **6 horas**. Apenas após este prazo deve ser solicitado um novo token.&#x20;

Importante que um novo Bearer JWT não seja solicitado antes do vencimento das 6 horas, para que seja mantida a integridade da API.
{% endhint %}

{% hint style="warning" %}
O ambiente de teste para homologação do recurso rehub permite que sejam efetuadas requisições com retornos de sucesso.

Caso tente realizar os processos de conexão, desconexão e/ou sincronização de estoque/preço e receba status 404 é importante entrar em contato com o time de API através do <mark style="color:blue;"><srv.mktp.api@americanas.io></mark>.
{% endhint %}

## **POST - Ações de produto**

### **Conectar produto ao marketplace**

Sempre que um SKU é **criado** ou passa por **alterações estruturais** (como, por exemplo, atualizações de uma imagem, descrição, dimensões e título) é necessário realizar a sua conexão com o marketplace para que as informações sejam refletidas nos sites de venda.

Para que seja possível realizar a conexão de um SKU é preciso executar um POST para o endpoint:

```
https://api.skyhub.com.br/rehub/product_actions
```

#### **Request headers:**

| Key                  | Value                                                                             |
| -------------------- | --------------------------------------------------------------------------------- |
| Accept               | application/json                                                                  |
| Content-Type         | application/json                                                                  |
| X-Accountmanager-Key | token\_account único de cada Plataforma/ERP                                       |
| Authorization        | Bearer \<token JWT disponibilizado na [chamada anterior](#solicitar-credenciais)> |

#### Request body:

```
{
    "skus": [
        "SKU_PAI"
    ],
    "sale_system": "B2W",
    "type": "link",
    "specifications": [],
    "previous_specifications": []
}
```

{% hint style="info" %}
O *array **skus*** permite a inclusão de até 500 SKUs a serem impactados pela ação.
{% endhint %}

#### **Example request:**

```
curl --location --request POST 'https://api.skyhub.com.br/rehub/product_actions' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'X-Accountmanager-Key: token_account único de cada Plataforma/ERP' \
--header 'Authorization: Bearer eyJhbGci...........TyPs' \
--data-raw '{
    "skus": [
        "2022001"
    ],
    "sale_system": "B2W",
    "type": "link",
    "specifications": [],
    "previous_specifications": []
}'
```

#### **Response esperado:**

{% hint style="success" %}
201 \[Success] - Created: Havendo sucesso na requisição, ela irá gerar o ID de uma carga que será retornado no response body:
{% endhint %}

```
{
    "id": "1672853787"
}
```

{% hint style="danger" %}
É importante destacar que a requisição de conexão realizada com sucesso não indica que o produto será ou não publicado no marketplace.&#x20;

Todas as informações enviadas em uma conexão passam pela validação do marketplace e caso alguma informação no cadastro do produto necessite de ajuste será retornado um erro no endpoint **/**[**sync\_errors**](https://desenvolvedores.skyhub.com.br/sync_errors/consulta-erros-de-sincronizacao-e-producao).
{% endhint %}

### **Sincronização de estoque e preço**

Por via de regra, a API realiza uma varredura nas contas a cada 15 minutos buscando produtos que sofreram alterações nos campos de preço e/ou estoque. Ao encontrar SKUs que tiveram tais campos (de preço e/ou estoque) alterados é realizada uma sincronização destas informações com o marketplace.

Através da rota rehub é possível forçar uma sincronização de estoque e preço, para que estas informações sejam encaminhadas para o marketplace assim que alteradas.&#x20;

Para realizar a sincronização de estoque e preço serão utilizados os mesmos headers, endpoint e método sinalizados na seção "[Conectar produto ao marketplace](#conectar-produto-ao-marketplace)" e apenas o body da requisição sofrerá uma alteração no campo "*type*":

**Request body:**

```
{
    "skus": [
        "SKU_PAI"
    ],
    "sale_system": "B2W",
    "type": "price_entry",
    "specifications": [],
    "previous_specifications": []
}
```

#### **Example request:**

```
curl --location --request POST 'https://api.skyhub.com.br/rehub/product_actions' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'X-Accountmanager-Key: token_account único de cada Plataforma/ERP' \
--header 'Authorization: Bearer eyJhbGci...........TyPs' \
--data-raw '{
    "skus": [
        "2022001"
    ],
    "sale_system": "B2W",
    "type": "price_entry",
    "specifications": [],
    "previous_specifications": []
}'
```

#### **Response esperado:**

{% hint style="success" %}
201 - Created: Havendo sucesso na requisição, ela irá gerar o ID de uma carga que será retornado no response body:
{% endhint %}

```
{
    "id": "1672854507"
}
```

### **Desconectar produto no marketplace**

A desconexão de produtos é utilizada caso você não queira que seu produto fique ativo no marketplace.

Ao desconectar um item, será enviado o status de inativo e estoque zero para os sites, o que, consequentemente, irá inativar a oferta.

{% hint style="danger" %}
A desconexão <mark style="color:red;">não altera</mark> o estoque ou o status do produto na API.

Desta forma, quando optar por retomar o anúncio, basta conectar novamente o SKU ao marketplace para que o status de ativo e o estoque sejam sensibilizados nos sites de venda.
{% endhint %}

Para realizar a desconexão de um SKU serão utilizados os mesmos headers, endpoint e método sinalizados na seção "[Conectar produto ao marketplace](#conectar-produto-ao-marketplace)" e apenas o body da requisição sofrerá uma alteração no campo "*type*":

**Request body:**

```
{
    "skus": [
        "SKU_PAI"
    ],
    "sale_system": "B2W",
    "type": "unlink",
    "specifications": [],
    "previous_specifications": []
}
```

#### **Example request:**

```
curl --location --request POST 'https://api.skyhub.com.br/rehub/product_actions' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'X-Accountmanager-Key: token_account único de cada Plataforma/ERP' \
--header 'Authorization: Bearer eyJhbGci...........TyPs' \
--data-raw '{
    "skus": [
        "2022001"
    ],
    "sale_system": "B2W",
    "type": "unlink",
    "specifications": [],
    "previous_specifications": []
}'
```

#### **Response esperado:**

{% hint style="success" %}
201 - Created: Havendo sucesso na requisição, ela irá gerar o ID de uma carga que será retornado no response body:
{% endhint %}

```
{
    "id": "1672928098"
}
```
