# Criação e Aprovação de Pedido Teste

{% hint style="danger" %}
As operações descritas abaixo <mark style="color:red;">não</mark> estão disponíveis para contas em produção.

Caso ainda não possua um ambiente de teste para a homologação de seu sistema, consulte a guia [Processo de Homologação](/processo-de-homologacao.md).
{% endhint %}

## POST - Criando um pedido

Como descrito em [Integração Pedido](/pedidos/integracao-pedido.md), durante o processo de homologação de um sistema são solicitados os passos de criação, consumo e notificação de pedidos.&#x20;

### Criando um pedido teste (status NEW)

Para realizar a criação de um pedido via API deverá ser utilizado o método POST para o seguinte endpoint:&#x20;

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

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

#### Request body:

```
{
    "order": {
        "channel": "Marketplace",
        "items": [
            {
                "id": "{SKU da Venda}",
                "qty": 1,
                "original_price": 8.45,
                "special_price": 8.45
            }
        ],
        "customer": {
            "name": "Nome do Comprador",
            "email": "comprador@exemplo.com.br",
            "date_of_birth": "1995-01-01",
            "gender": "male",
            "vat_number": "12312312309",
            "phones": [
                "8899999999"
            ]
        },
        "billing_address": {
            "street": "Rua de Teste",
            "number": "1234",
            "detail": "Ponto de Referência",
            "neighborhood": "Bairro",
            "city": "Cidade",
            "region": "UF",
            "country": "BR",
            "postcode": "90000000"
        },
        "shipping_address": {
            "street": "Rua de teste",
            "number": "1234",
            "detail": "Ponto de referência teste",
            "neighborhood": "Bairro teste",
            "city": "Cidade de teste",
            "region": "UF",
            "country": "BR",
            "postcode": "90000000"
        },
        "payments": [
        {
            "method": "skyhub_payment",
            "description": "Skyhub",
            "parcels": 1,
            "value": 8.45
         }
        ],
        "shipping_method": "Transportadora",
        "estimated_delivery": "AAAA-MM-DD",
        "shipping_calculation_type": "Método do Cálculo",
        "shipping_cost": 0.0,
        "interest": 0.0,
        "discount": 0.0
    }
}
```

{% hint style="warning" %}
No objeto **items** é necessário informar o **SKU adquirido na compra**. Isto é, caso deseje simular um pedido realizado para um produto que contém variações, a criação requer que <mark style="color:green;">seja informado o</mark> <mark style="color:green;"></mark><mark style="color:green;">**SKU da variação**</mark> e <mark style="color:red;">não do produto pai/agrupador</mark>.
{% endhint %}

#### Example request:

<pre><code><strong>curl --location --request POST 'https://api.skyhub.com.br/orders' \
</strong>--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-raw '{
    "order": {
        "channel": "Lojas Americanas",
        "items": [
            {
                "id": "2023001",
                "qty": 1,
                "original_price": 39.90,
                "special_price": 39.90
            }
        ],
        "customer": {
            "name": "João dos Santos",
            "email": "comprador@exemplo.com.br",
            "date_of_birth": "1989-01-01",
            "gender": "male",
            "vat_number": "23455567899",
            "phones": [
                "11 99999-9999"
            ]
        },
        "billing_address": {
            "street": "Avenida Paulista",
            "number": "1234",
            "detail": "Próximo ao museu",
            "neighborhood": "Bela Vista",
            "city": "São Paulo",
            "region": "SP",
            "country": "BR",
            "postcode": "90000000"
        },
        "shipping_address": {
            "street": "Avenida Paulista",
            "number": "1000",
            "detail": "Ao lado da cafeteria",
            "neighborhood": "Bela Vista",
            "city": "São Paulo",
            "region": "SP",
            "country": "BR",
            "postcode": "90000000"
        },
        "payments": [
            {
                "method": "CREDIT_CARD",
                "description": "SkyHub",
                "parcels": 1,
                "value": 39.90
            }
        ],
        "shipping_method": "Courier",
        "estimated_delivery": "2023-03-30",
        "shipping_calculation_type": "b2wentregadirect",
        "shipping_cost": 0,
        "interest": 0,
        "discount": 0
    }
}'
</code></pre>

{% hint style="info" %}
É possível determinar numerações específicas para os pedidos criados. Para tal, basta incluir o campo "**remote\_code**" no *array* **ORDER**.&#x20;
{% endhint %}

{% hint style="warning" %}
Durante a criação de pedido é possível enviar o método de cálculo do frete, feito através do campo "**shipping\_calculation\_type**". O retorno dessa informação no consumo do endpoint **/queues/orders** será no campo "**calculation\_type**".
{% endhint %}

#### Response esperado:

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

## POST - Aprovando um pedido teste (status APPROVED)

O ciclo de vida de um pedido comum é iniciado com a sua criação (status NEW) e o próximo passo é a sua aprovação (status APPROVED). No ambiente de produção estes dois status (NEW e APPROVED) são gerados no marketplace, porém em homologação/ambiente de teste, além da criação, é possível realizar também a aprovação do pedido.

A aprovação em ambiente de teste requer os [headers apresentados acima](#request-headers) e se dá através de um POST no endpoint:

```
https://api.skyhub.com.br/orders/{code}/approval
```

{% hint style="info" %}
O **code** deve ser substituído pelo **código do pedido**, visualizado após o [consumo](/pedidos/consumo-de-pedidos-queues.md).
{% endhint %}

#### Request body:

```
{
    "status": "payment_received"
}
```

#### Example request:

```
curl --location --request POST 'https://api.skyhub.com.br/orders/Lojas Americanas-1000000000000/approval' \
--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": "payment_received"
}'
```

#### Response esperado:

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

## POST - Criando pedido para o Fulfillment&#x20;

Existem recursos disponíveis para homologação que requerem a criação de pedidos contendo campos específicos, como é o caso da homologação para o serviço Fulfillment.

### Pedido Fulfillment

#### Criando um pedido teste para o serviço Fulfillment

Para homologação do recurso Fulfillment é imprescindível a identificação de pedidos que se enquadrem neste serviço.&#x20;

No ambiente de teste é possível simular um pedido Fulfillment e para isto será necessário seguir o padrão disponibilizado na seção [Criação de Pedido](#criacao-de-pedido) com atenção para o campo **shipping\_method**:

```
curl --location --request POST 'https://api.skyhub.com.br/orders' \
--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-raw '{
    "order": {
        "channel": "Lojas Americanas",
        "items": [
            {
                "id": "2023001",
                "qty": 1,
                "original_price": 39.90,
                "special_price": 39.90
            }
        ],
        "customer": {
            "name": "João dos Santos",
            "email": "comprador@exemplo.com.br",
            "date_of_birth": "1989-01-01",
            "gender": "male",
            "vat_number": "23455567899",
            "phones": [
                "11 99999-9999"
            ]
        },
        "billing_address": {
            "street": "Avenida Paulista",
            "number": "1234",
            "detail": "Próximo ao museu",
            "neighborhood": "Bela Vista",
            "city": "São Paulo",
            "region": "SP",
            "country": "BR",
            "postcode": "90000000"
        },
        "shipping_address": {
            "street": "Avenida Paulista",
            "number": "1000",
            "detail": "Ao lado da cafeteria",
            "neighborhood": "Bela Vista",
            "city": "São Paulo",
            "region": "SP",
            "country": "BR",
            "postcode": "90000000"
        },
        "payments": [
            {
                "method": "CREDIT_CARD",
                "description": "SkyHub",
                "parcels": 1,
                "value": 39.90
            }
        ],
        "shipping_method": "B2W Fulfillment",
        "estimated_delivery": "2023-03-15",
        "shipping_calculation_type": "b2wentregadirect",
        "shipping_cost": 0,
        "interest": 0,
        "discount": 0
    }
}'
```

Para informações sobre a homologação do recurso Fulfillment, consulte a guia a seguir:

{% content-ref url="/pages/-MfNl2hDHT1j-Sq\_wcc4" %}
[> Integração Fulfillment](/americanas-fulfillment/integracao-fulfillment.md)
{% endcontent-ref %}


---

# 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/pedidos/criacao-de-pedido-teste.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.
