# Filtros de Consultas

Para aplicar filtros por produtos com queries específicas é necessário utilizar a URL base disponibilizada a seguir:&#x20;

```
http://api.skyhub.com.br/products
```

#### **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                            |

Através da URL e dos headers informados é possível realizar os filtros por:

* Status;
* Nome;
* Quantidade em estoque;
* Campos específicos no retorno.

### Como filtrar por status

É possível realizar a listagem de produtos através de seus status, onde deverá ser informada a query ***?filters\[status]=*** no endpoint */products*, referenciando o status a ser consultado, conforme exemplo a seguir:

```
https://api.skyhub.com.br/products?filters[status]={enabled
 ou disabled}
```

Ao informar o parâmetro ***?filters\[status]=enabled*** serão retornados todos os produtos **ativos** (enabled); caso selecione o parâmetro ***?filters\[status]=disabled*** serão retornados os produtos **inativos** (disabled).

#### **Example request:**

Segue um exemplo de requisição para listagem de produtos com status disabled:

```
curl --location -g --request GET 'https://api.skyhub.com.br/products?filters[status]=disabled' \
--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: No retorno para a consulta acima serão visualizados todos os SKUs da conta que possuírem o *status* disabled como vemos a seguir:
{% endhint %}

```
{
    "products": [
        {
            "sku": "SKU_01",
            "name": "Título 01",
            "description": "Descrição 01",
            "status": "disabled",
            (...)
        }
    ],
    "total": 1,
    "next": "https://api.skyhub.com.br/products?cursor=cXVlcnlUa..........wOw=="
}
```

### Como filtrar por nome

Para realizar a listagem de produtos através de um nome específico deverá ser informada a query ***?filters\[name]=*** no endpoint */products*, referenciando o nome a ser consultado, conforme exemplo a seguir:

```
https://api.skyhub.com.br/products?filters[name]={nome_do_item}
```

#### **Example request:**&#x20;

Segue um exemplo de requisição para listagem de SKUs com o termo "produto" no título:

```
curl --location -g --request GET 'https://api.skyhub.com.br/products?filters[name]=produto' \
--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: No retorno para a consulta acima serão visualizados todos os SKUs da conta que possuírem no campo *name* a *string* "produto" como vemos a seguir:
{% endhint %}

```
{
    "products": [
        {
            "sku": "SKU_01",
            "name": "Produto teste",
            "description": "Descrição 01",
            "status": "enabled",
          (...)
        },
        {
            "sku": "SKU_02",
            "name": "PRODUTO SIMPLES",
            "description": "Descrição 02",
            "status": "enabled",
          (...)
        },
        {
            "sku": "SKU_03",
            "name": "PRODUTO SIMPLES ESPECIAL",
            "description": "Descrição 03",
            "status": "enabled",
          (...)
        }
    (...)
    ],
    "total": 43,
    "next": "https://api.skyhub.com.br/products?cursor=cXVlcnlUaGVu...........wOw=="
}
```

### Como filtrar por quantidade em estoque

O filtro por quantidade (*qty*) permite a consulta de produtos com determinados estoques, sendo:

#### Consulta de produtos com quantidade em estoque <mark style="color:green;">**maior ou igual**</mark> ao valor especificado

Para realizar a listagem de produtos cujo estoque seja maior ou igual a um valor definido na busca deverá ser informada a query ***?filters\[qty\_from]=*** no endpoint */products*, referenciando a quantidade desejada, conforme exemplo a seguir:

```
https://api.skyhub.com.br/products?filters[qty_from]={qty}
```

#### **Example request:**&#x20;

Segue um exemplo de requisição para listagem de produtos com estoque maior ou igual a 50 unidades:

```
curl --location -g --request GET 'https://api.skyhub.com.br/products?filters[qty_from]=50' \
--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: No retorno para a consulta acima serão visualizados todos os SKUs da conta que possuírem o valor maior ou igual a 50 unidades no campo *qty*, como vemos a seguir:
{% endhint %}

```
{
    "products": [
        {
            "sku": "SKU_01",
            "name": "Título 01",
            "description": "Descrição 01",
            "status": "enabled",
            "qty": 10000,
            (...)
        },
        {
            "sku": "SKU_02",
            "name": "Título 02",
            "description": "Descrição 02",
            "status": "enabled",
            "qty": 100,
            (...)
        },
        {
            "sku": "SKU_03",
            "name": "Título 03",
            "description": "Descrição 03",
            "status": "enabled",
            "qty": 400,
            (...)
        }
    (...)
    ],
    "total": 15,
    "next": "https://api.skyhub.com.br/products?cursor=cXVlcnlUa............swOw=="
```

#### Consulta de produtos com quantidade em estoque <mark style="color:green;">**menor ou igual**</mark> ao valor especificado

Para realizar a listagem de produtos cujo estoque seja menor ou igual a um valor definido na busca deverá ser informada a query ***?filters\[qty\_to]=*** no endpoint */products* referenciando a quantidade desejada, conforme exemplo a seguir:

```
https://api.skyhub.com.br/products?filters[qty_to]={qty}
```

#### **Example request:**

Segue um exemplo de requisição para listagem de produtos com estoque menor ou igual a 50 unidades:

```
curl --location -g --request GET 'https://api.skyhub.com.br/products?filters[qty_to]=50' \
--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: No retorno para a consulta acima serão visualizados todos os SKUs da conta que possuírem o valor menor ou igual a 50 unidades para o campo *qty*, como vemos a seguir:
{% endhint %}

```
{
    "products": [
        {
            "sku": "SKU_01",
            "name": "Título 01",
            "description": "Descrição 01",
            "status": "disabled",
            "qty": 5,
            (...)
        },
        {
            "sku": "SKU_02",
            "name": "Título 02",
            "description": "Descrição 03",
            "status": "enabled",
            "qty": 3,
            (...)
        },
        {
            "sku": "SKU_03",
            "name": "Título 03",
            "description": "Descrição 03",
            "status": "enabled",
            "qty": 49,
            (...)
        }
    (...)
    ],
    "total": 86,
    "next": "https://api.skyhub.com.br/products?cursor=cXVlcnlUaG...........swOw=="
}
```

{% hint style="info" %}
É possível combinar os parâmetros ***filters\[qty\_from]*** e ***filters\[qty\_to]*** para listar produtos cujos estoques se encontram dentro de uma faixa específica, por exemplo:

* Desejo consultar apenas os SKUs que possuem estoque entre 5 e 10 unidades: Para isso basta adicionar ao GET no endpoint */products* o filtro **?filters\[qty\_from]=5\&filters\[qty\_to]=10**;
* Desejo consultar apenas os produtos que possuem 5 unidades em estoque: Para essa listagem basta incluir na pesquisa o **?filters\[qty\_from]=5\&filters\[qty\_to]=5**.
  {% endhint %}

### **Como consultar campos específicos**

Na estrutura de um produto são definidos diversos campos, como SKU, imagens, EAN, entre outros.

Através da API é possível restringir a consulta para que o retorno mostre apenas determinados atributos. Para isto, deverá ser informada a query ***?only\[]=*** no endpoint */products* referenciando o atributo que deseja visualizar, conforme descrito a seguir:

```
https://api.skyhub.com.br/products?only[]={atributo}
```

#### **Example request:**&#x20;

Segue um exemplo de requisição para listagem de todos os produtos, filtrando no retorno apenas os campos SKU, imagem e custo:

```
curl --location -g --request GET 'https://api.skyhub.com.br/products?only[]=sku&only[]=images&only[]=cost' \
--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: No retorno para a consulta acima serão visualizados os campos *sku*, *images* e *cost* de todos os produtos da conta, como vemos a seguir:
{% endhint %}

```
{
    "products": [
        {
            "sku": "SKU_01",
            "cost": 1374.45,
            "images": [
                "https://images-americanas.b2w.io/produtos/1234567890/imagens/camiseta-branca-tam-un/1234567890_1_xlarge.jpg"
            ]
        },
        {
            "sku": "SKU_02",
            "cost": 49.0,
            "images": [
                "https://images-americanas.b2w.io/produtos/1122334455/imagens/camiseta-preta/1122334455_1_xlarge.jpg"
            ]
        },
        {
            "sku": "SKU_03",
            "cost": 49.0,
            "images": [
                "https://images-americanas.b2w.io/produtos/0123456789/imagens/livro-para-colorir/0123456789_1_xlarge.jpg"
            ]
        }
    (...)
    ],
    "total": 101,
    "next": "https://api.skyhub.com.br/products?only[]=sku&only[]=images&only[]=cost&cursor=cXVlcnlUa........swOw=="
```
