shell php csharp java

Como Integrar

As APIs de Integração é um serviço formecido pela Tray para que nossos clientes possam integrar seus softwares a nossa plataforma.

Ambiente de Teste

Não possuimos um ambiente especifico para teste, para esse fim, disponibilizamos uma loja compartilhada entre todos os integradores.

O usuário e senha da loja de testes será gerado junto com as chaves e enviados em conjunto no processo de homologação.

Nossas Integrações

A integração com a Tray é feita através das Nossas APIs no padrão REST, o que possibilita manipular os clientes, produtos e até os pedidos da loja virtual. Atualmente estão disponíveis as APIs:

Para utilizar as APIs é necessário criar seu aplicativo e, após este cadastro, são liberadas as chaves para a integração.

Temos disponível para parceiros nossa Loja de Aplicativos, onde nossos lojistas conseguem localizar e fazer a instalação de forma simples e rápida e já integrar com a sua aplicação.

Desta forma, é possível integrar desde um sistema de gestão empresarial (ERP) ou sistemas próprios para melhorar a experiência do consumidor.

Também disponibilizamos a integração com o sistema de Gateway de Frete, caso precise personalizar o calculo de frete através de alguma transportadora.

Criando seu Aplicativo

Para disponibilizar as chaves de integração é necessário realizar dois processos:

Para o credenciamento é necessário contato com nossa equipe de parcerias através do formulário de contato.

Segue abaixo link do formulário para contato:

https://www.tray.com.br/parceiros/quero-ser-parceiro/

Após o credenciamento, será necessário informar os dados do aplicativo para cadastro. Estes dados são divididos em dados do integrador, onde é necessário informar os dados da empresa que irá realizar a integração, e dados do aplicativo, com os dados para cadastro da aplicação. Segue abaixo os dados necessários:

Dados do Aplicativo:

Dados do integrador:

Após o cadastro da aplicação são disponibilizadas as chaves Consumer Key e Consumer Secret necessárias para a autorização do aplicativo e geração das chaves de acesso.

OBS: Todas as solicitações serão analisadas, onde poderão ser aprovadas ou rejeitadas devido solicitação indevida, ausência de informações ou solicitação de parceiro ou desenvolvedor não credenciado.

Quantidade de Requisições

As requisições tem um limite de envio, onde são diferenciadas de duas formas.

1 - Quantidade de requisições de curto espaço de tempo, limitado em 180 requisições por minuto.

2 - Quantidade de requisições diárias, limitado em 10 mil requisições diárias por loja, sendo um limite de 50 mil requisições por dia em caso de loja corporativa.

Autorizando seu Aplicativo

A autenticação via oAuth 2.0 é necessário para acesso as informações da API e Aplicativos de Terceiro.

Abaixo a sequência de autenticação:

O código de autorização é fornecido através do servidor de autenticação do Tray.

Para permitir acesso as informações e recursos da conta, o cliente deve ser redirecionado para a url de autenticação pelo navegador.

O Tray Commerce é responsável por receber a confirmação da autorização do cliente e fornecer o código de autorização ao aplicativo.

Url para autenticação:

https://{dominio_da_loja}/auth.php

Parâmetros HTTP "GET" suportados para a autenticação:

Parâmetro Descrição
response_type Tipo de solicitação (Valor padrão code)
consumer_secret Identificação do aplicativo junto ao Tray Commerce.
callback URL de Callback que será redirecionado depois da autorização

Exemplo da url:

https://{dominio_da_loja}/auth.php?response_type=code&consumer_key={consumer_key}&callback=https://{url_de_callback}

Obs. trocar os dados que estão dentro de chaves { } para os dados da loja e do aplicativo.

Obs. A url de callback deve fazer o uso do certificado digital(HTTPS)/SSL

Fluxo de autorização

O aplicativo é acessado dentro da área administrativa da loja no menu Meus aplicativos. Após o acesso a este menu, terá disponível o botão Instalar novos aplicativos, onde os clientes poderão localizar a aplicação para instalação na loja.

Ao instalar uma aplicação, será realizado o redirecionamento para a URL de Callback informada no momento do cadastro do aplicativo, abrindo por exemplo a página http://{dominiodoapp}/tray/callback em um iframe, dentro da área administrativa da loja.

Neste ponto a platforma irá enviar os seguintes parâmetros pela url:

array(3) { ["url"]=> string(42) "https://trayparceiros.commercesuite.com.br" ["adm_user"]=> string(8) "roottray" ["store"]=> string(6) "391250" }

Você deverá implementar nesta URL http://{dominiodoapp}/tray/callback, uma Landing Page apresentando os detalhes do aplicativo e disponibilizar um botão para o cliente solicitando a integração com a aplicação. Geralmente este botão tem o titulo de Instale agora ou Inicie agora.

Neste botão você irá direcionar o cliente para a URL de autorização da loja, onde esta URL ficaria:

http://{URL da loja}/auth.php?response_type=code&consumer_key=**CONSUMER_KEY**&callback=http://{dominiodoapp}/tray/callback/auth/

Quando direcionado o cliente para essa pagina, irá aparecer uma tela solicitando a autorização da aplicação, conforme abaixo:

imagem

Uma observação importante é que, após autorizado, não será mais exibida essa tela, já passando automaticamente para o fluxo abaixo.

Neste ponto a plataforma irá enviar os seguintes parâmetros na url:

array(5) { ["adm_user"]=> string(8) "roottray" ["code"]=> string(64) "48f72c09305060f12b894193aaba2962989f00637012b8fa92b9d657e5a297f7" ["api_address"]=> string(50) "https://trayparceiros.commercesuite.com.br/web_api" ["store"]=> string(6) "391250" ["store_host"]=> string(42) "https://trayparceiros.commercesuite.com.br" }

Após a autorização, o cliente é redirecionado para URL informada no parâmetro callback passado no momento da autorização (no exemplo acima é a URL http://{dominiodoapp}/tray/callback/auth/), onde ficará da seguinte forma esta URL:

http://{dominiodoapp}/tray/callback/auth/?code=2132112312321313abc123edf&store=391250&api_address=http://{URL da loja}/web_api/

Neste processo deve-se capturar as informações dessa URL e utilizá-las para configurar em sua aplicação, sendo os parâmetros code e api_address mais importantes no processo de integração.

Com o code e api_address é possível utilizar a API de Gerar Chave de Acesso, para gerar o access_token utilizados nas outras APIs. É de extrema importância armazenar todas as informações de retorno desta API, pois serão utilizados constantemente durante a comunicação com a Tray.

Pode-se notar que no retorno da API de Gerar Chave de Acesso existe a expiração dessas chaves e, quando expirado, deverá utilizar a API de Atualizar Chave de Acesso, onde será gerada um novo access_token para continuar realizando requisições nas APIs.

Dessa forma, toda referência que encontrar na documentação de api_address deverá ser utilizada a URL retornada no momento da autorização da API, conforme informado acima, e utilizar o access_token gerado para não ocorrer problema de permissão de acesso aos dados.

Dúvidas e Suporte

Para dúvidas relacionadas ao consumo das APIs disponibilizadas pedimos que abra um chamado diretamente através da nossa central de atendimento.

Autorização

Gerar Chaves de Acesso#post

api_address: "www.urldaloja.com.br/web_api"

curl --location -g --request POST '{{api_address}}/auth' \
--data-urlencode 'consumer_key={{consumer_key}}' \
--data-urlencode 'consumer_secret={{consumer_secret}}' \
--data-urlencode 'code={{code}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{api_address}}/auth');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  'consumer_key' => '{{consumer_key}}',
  'consumer_secret' => '{{consumer_secret}}',
  'code' => '{{code}}'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("{{api_address}}/auth");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("consumer_key", "{{consumer_key}}");
request.AddParameter("consumer_secret", "{{consumer_secret}}");
request.AddParameter("code", "{{code}}");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "consumer_key={{consumer_key}}&consumer_secret={{consumer_secret}}&code={{code}}");
Request request = new Request.Builder()
  .url("{{api_address}}/auth")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

A Chave de Acesso é a crêdencial utilizada para acessar os recursos protegidos do cliente.

Essa chave representa a autorização emitida pelo cliente no servidor de autorização do Tray Commerce.

Somente é possível gerar a Chave de Acesso utilizando as chaves disponibilizados para o aplicativo (consumer key e consumer secret) e o código de autorização (code) que é resgatado após a instalação do aplicativo na loja, então será realizada esta requisição para a API de Gerar Chave de Acesso.

As chaves consumer_key e consumer_secret, são únicas para cada aplicativo. E serão enviadas por e-mail após o setor de Parcerias liberarem o cadastro do aplicativo. Quero Ser Parceiro

A chave code é única para cada loja. E pode ser obtida depois de instalar o aplicativo na loja.

Onde você encontra o code dentro da loja:

1-Vá até meus aplicativos

imagem

2-Clique sobre instalar novo aplicativos

imagem

3-Procure pelo seu aplicativo

imagem

4-Acessando o painel da loja na opção: Meus Aplicativos.

Procure pelo aplicativo e clique sobre acessar , onde será exibido o code!!

imagem

Método POST

https://{api_address}/auth

Dados para ser enviados no corpo da requisição:

Campo Tipo Descrição
consumer_key String Chave da aplicação
consumer_secret String Chave secreta da aplicação
code String Código de autorização


Exemplo de retorno:

  {
    "message": "Created tokens",
    "code": "200",
    "access_token": "APP_ID-9999-4c78abce105a578987987987987987asdasd4c14ec98eeca880dc9aa76ed118372ae4",
    "refresh_token": "86188asd456asd456asd9c192721dbdc03851a791a9cd6d3568a0dcb6a87080e229",
    "date_expiration_access_token": "2021-03-02 14:58:21",
    "date_expiration_refresh_token": "2021-04-01 11:58:21",
    "date_activated": "2021-03-02 11:58:21",
    "api_host": "https://urldaloja.com.br/web_api",
    "store_id": "123456"
  }

Retorno em caso de sucesso (status code 200 ou 201):

Campo Tipo Descrição
code Number Código de status de retorno
message String Mensagem de retorno
access_token String Chave de acesso
refresh_token String Chave para atualização
date_expiration_access_token Datetime Data de expiração da chave de acesso
date_expiration_refresh_token Datetime Data de expiração da chave de atualização
date_activated Datetime Data de ativação da chave de acesso
api_host String URL da API para a loja
store_id Number Código da loja

Error code:

Error Descrição
1000 Loja ativa com o token expirado
1001 Loja bloqueada
1002 Loja inativa
1003 Loja cancelada
1099 Motivo desconhecidos

Atualizar Chave de Acesso#get

Método GET

api_address: "urldaloja.com.br/web_api"



curl --location -g --request GET '{{api_address}}/auth?refresh_token={{refresh_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{api_address}}/auth?refresh_token={{refresh_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}


var client = new RestClient("{{api_address}}/auth?refresh_token={{refresh_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("{{api_address}}/auth?refresh_token={{refresh_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

https://{api_address}/auth

Parâmetros enviados:

Field Type Description
refresh_token String Chave para atualização

Exemplo de retorno:

  {
    "message": "Refreshed tokens",
    "code": "200",
    "access_token": "APP_ID-9999-4c78abce105a578987987987987987asdasd4c14ec98eeca880dc9aa76ed118372ae4",
    "refresh_token": "86188asd456asd456asd9c192721dbdc03851a791a9cd6d3568a0dcb6a87080e229",
    "date_expiration_access_token": "2021-03-02 14:58:21",
    "date_expiration_refresh_token": "2021-04-01 11:58:21",
    "date_activated": "2021-03-02 11:58:21",
    "api_host": "https://urldaloja.com.br/web_api",
    "store_id": "123456"
  }

Retorno em caso de sucesso (status code 200 ou 201):

Campo Tipo Descrição
code Number Código de status de retorno
message String Mensagem de retorno
access_token String Chave de acesso
refresh_token String Chave para atualização
date_expiration_access_token Datetime Data de expiração da chave de acesso
date_expiration_refresh_token Datetime Data de expiração da chave de atualização
date_activated Datetime Data de ativação da chave de acesso
api_host String URL da API para a loja
store_id Number Código da loja

Homologação do aplicativo

Validação em Loja de teste

O processo de desenvolvimento e homologação irá ocorrer em loja de teste compartilhada, para que seja realizado as validações referente a requisição, seguir toda orientação da documentação .

Requisito para homologação e liberação para produção

Canal de atendimento para homologacão

Realizar a abertura do chamado no link a baixo, com o seguinte título "Homologacao Nome do aplicativo", eviando para nos as evidencias da requisição, conforme solicitado no requisito para homologação

Link para homologação:

Clique aqui para realizar a homologação

OBS: Caso o aplicativo consuma menos que 2 POST e 2 PUT em 2 recursos, será necessário realizar algumas requisições, via POSTMAN ou INSOMNIA + o requisito da aplicação.

Liberar o aplicativo para loja (PONTUAL)

Caso o aplicativo seja pontual ou seja para lojas específicas, peço que realize a abertura de um chamado no link abaixo, solicitando a liberação do aplicativo !!

Obs. Para liberar o aplicativo para uma ou mais lojas o aplicativo DEVE ter passado pelo processo de homologação, caso o aplicativo seja para toda base, ele será exido no momento da instação em meus aplicativos

Clique aqui para solicitar a liberação do app

APIs de Sistema de Notificação(Webhook)

API DE SISTEMA DE NOTIFICAÇÃO (WEBHOOK)

Documentação – Sistema de Notificações

A Tray disponibiliza atualmente o sistema de Webhook, que possui a finalidade de agregar agilidade no fluxo das APIs.

Exemplo de caso: se a loja possui 1000 pedidos e foram alterados 50 pedidos e criados mais 50, ao invés do Integrador reprocessar todos os mil pedidos, com o webhook informando quais ids de pedidos foram alterados/criados, você irá consultar apenas 100 pedidos.

Ativação da Notificação:

Para ativar as notificações, é necessário informar uma URL de Notificação, onde será cadastrada em seu aplicativo que já esteja credenciado junto a Tray.

Sendo assim, favor abrir um chamado através deste link: https://atendimento.tray.com.br/hc/pt-br/requests/new e em: Precisa de ajuda com sua loja virtual? escolher o escopo: "TRAY DESENVOLVEDORES" > "INTEGRAÇÕES API" e informar o nome do aplicativo e url de notificação para iniciar o processo de ativação.

Funcionalidade:

A Tray irá realizar o envio dos parâmetros (scope_name | scope_id | seller_id | act) via POST, para a url de notificação cadastrada no aplicativo.

Esta url deverá estar disponível, para receber os parâmetros que a Tray vai enviar.

No caso, a url de notificação deve ser uma url externa preparada para receber requisições via POST, ou seja, deve ser disponibilizada de forma externa e deve conseguir interpretar as notificações enviadas pela Tray.

Notificações:

Estas notificações serão realizadas para uma URL do aplicativo, através de uma requisição via POST, onde o aplicativo irá receber essas notificações quando ocorrer alguma inserção, atualização ou exclusão de informações na plataforma, referente ao escopo que estiver habilitado, para o recebimento dessas notificações.

Atualmente, a notificações dos escopos só ocorrem a partir de novas ações, ou seja, começaram a ser notificados a partir do momento em que o aplicativo aderiu ao sistema de Webhook, desse momento em diante, qualquer ação nova será notificada.

Não será notificado nenhum escopo do qual já tenha ocorrido uma ação passada, antes de aderir ao sistema de notificação.

Dessa forma, para ter acesso as informações que ocorreram antes de aderir as notificações do Webhook, será necessário consultar diretamente as APIs respectivas, em que deseja saber.

Tempo de Notificação:

O tempo do envio das notificações da Tray para a url de notificação, ocorre em questão de minutos, sendo enviadas no mesmo instante.

É possível, por uma questão pontual, ocorrer um atraso no processo do envio.

O processo do envio das notificações podem ocorrem da seguinte forma:

A Tray realiza o primeiro envio das informações para a url de notificação, se houver alguma falha em sua url neste recebimento, a Tray irá realizar um segundo envio das informações, no entanto, se no primeiro envio, ocorreu em questão de minutos, o segundo envio irá ocorrer dentro de meio hora, e assim se sucederá aumentando o espaçamento do envio, até que a Tray consiga realizar os envios de todas as informações necessárias para a url de notificação.

Dessa forma é necessário que a url de notificação sempre esteja disponível e livre de impedimentos para receber as notificações da Tray, pois caso ocorra uma tentativa excessiva e impacte nosso banco, ficará passível do nosso time de infra, bloquear o serviço. E não, não conseguimos informar qual é o limite máximo das retentativas, pois tudo irá depender do processamento interno de nossa fila.

Recomendações de Implementação:

São recomendados dois tratamentos para utilização do sistem de notificação que são, armazenar as notificações e agrupar as notificações idênticas antes de gerar qualquer ação.

Desta forma, pode-se evitar diversas requisições ao mesmo escopo, visto que um produto pode sofrer diversas atualizações em um curto interválo de tempo, assim como o pedido pode sofrer alterações rápidas.

Exemplo de envio do payload:

Segue exemplo abaixo de payload, sobre o que é enviado via POST da Tray para a url do Webhook, dessa forma, é necessário realizar a captura dessas informações via código e então implementar as configurações dentro do sistema, de acordo com a necessidade do aplicativo.

OBS: O formato utilizado no payload é x-www-form-urlencoded

{ "seller_id"=>391250, "scope_id"=>4375797, "scope_name"=>"order", "act"=>"update", "app_code"=>"718", "url_notification"=>"https://suaurldenotificacao" }

É possível habilitar o webhook para lojas específicas ou desabilitar de lojas específicas?

Não. Atualmente o serviço disponibilizado atua sobre o aplicativo e não sobre as lojas, ou seja, qualquer loja integrada ao app, o Integrador receberá as notificações das mesmas, sendo assim, para não receber as notificações de determinada loja, somente realizando a desinstalação do app dentro dessa loja.

É possível receber outros tipos de notificações, conforme demostrando no exemplo do playload?

Não. Atualmente não é possível. Caso deseje receber outros tipos de notificações, você poderá enviar uma solicitação para o nosso canal de SUGESTÕES.

Segue o link: https://clientes.tray.com.br/sugestao-tray/

Exclusão do serviço em caso de desinstalação do aplicativo?

(será o mesmo comportamento para troca de url de notificação)

Por um período de 20 dias, é provável que sua url ainda receba notificações da loja que realizou a desinstalação do seu aplicativo, pois o nosso sistema irá realizar a tentativa de entregas das notificações pendentes, até o momento em que o app foi desinstalado. Sendo assim, enquanto nosso sistema receber o status do HTTP da URL diferente de 200, continuaremos enviando diversas retentativas de envio das notificações até que esse esse resíduo de notificações retorne com o HTTP Code 200, o que poderá perdurar por aproximadamente 20 dias.

Parâmetros da Notificação

Para identificar o tipo de dado e qual a informação que foi atualizada, são enviados alguns parâmetros via POST no momento da notificação. Esses parâmetros são:

Parâmetros de envio Descrição
scope_name Nome do escopo notificado.
scope_id Código do escopo da notificação.
seller_id Código do vendedor.
act Ação realizada.

Abaixo os escopos disponíveis na notificação:

Lembrando que, inicialmente realizamos a liberação somente do escopo de "PEDIDOS", caso deseje realizar a liberação dos demais escopos, ou até mesmo de todos eles, isso deverá ser informado via chamado, no momento do envio da url.

Exemplo de código:

php
    $sellerID = $_POST["seller_id"]; //Código da Loja

    switch($_POST["scope_name"] . "_" . $_POST["act"] ){
        case "product_insert":
            // Tratamento da atualização produto
            $productID = $_POST["scope_id"]; // Código do produto
        break;
        case "product_update":
            // Tratamento da atualização do produto
            $productID = $_POST["scope_id"]; // Código do produto
        case "variant_stock_update":
            // Tratamento da atualização de estoque de uma variação de produto
            $variantID = $_POST["scope_id"]; // Código da variação do produto
        break;
        case "order_insert":
            // Tratamento da insersão de um novo pedido
            $orderID = $_POST["scope_id"]; // Código do pedido
        break;
        case "customer_delete":
            // Tratamento da exclusão de um cliente
            $customerID = $_POST["scope_id"]; // Código do cliente
        break;
    }

Tipos de Escopos de Notificação Descrição
product Notificação de produto.
product_price Notificação de preço de produto.
product_stock Notificação de estoque de produto.
variant Notificação de variação do produto.
variant_price Notificação de preço da variação.
variant_stock Notificação de estoque da variação.
order Notificação de pedido.
customer Notificação de cliente.

As ações disponíveis na notificação são localizadas abaixo:

Tipos de Ações Descrição
insert Inserção de um novo registro.
update Atualizaçao de um registro.
delete Exclusão de um registro.

API de Produtos

Listagem de Produtos#get

Requisição para a consulta de uma lista produtos.

Método GET

https://{api_address}/products?access_token={token}

Parâmetros enviados

Campo Tipo Descrição
access_token String Chave de acesso
id Number Código do produto
name String Nome do produto
reference String Referência do produto
category_id Number Código da categoria principal do produto
ean String Código EAN do produto
price Decimal Preço do produto
price_range String Faixa de preço do produto
brand String Marca do produto
available Number Produto disponível (Veja Tabela A)
stock Number Estoque do produto
promotion Number Produto em promoção (Veja Tabela B)
free_shipping Number Produto com frete grátis (Veja Tabela C)
release Number Produto em lançamento (Veja Tabela D)
hot Number Produto em destaque (Veja Tabela E)
quantity_sold Number Quantidade vendida do produto
release_date Date Data de lançamento do produto (Formato: aaaa-mm-dd)
rand Number Ordem aleatória
sort String Ordenação
limit Number Limite de Registros
page Number Página corrente
attrs String Atributos do produto
created Date Filtro de data de criação, ex.: (Formato: aaaa-mm-dd)
modified Date Filtro de data de modificação, ex.: (Formato: aaaa-mm-dd)

Retorno da API

Retorno de Invalid or expired token (401)

Campo Tipo Descrição
code Number Código do response da requisição(401)
url String Url atilizada na requisição
name String Nome da resposta
causes Array Causa do retorno 401

Obs: Chave inválida ou expirada, ocorre quando o access_token está expirado ou o seu valor está incorreto no parâmetro da url, pedimos que consuma à API abaixo para realizar a renovação ou geração da chave de acesso Clique aqui.

Retorno de Not Found e No records found (404)

Campo Tipo Descrição
code Number Código do response da requisição(404)
url String Url utilizada na requisição
name String Nome da resposta
causes String Causa do retorno 404

Obs: O response code 404 é ocasionado quando há um erro de sintaxe na url da requisição ou quando não encontramos id passado por parâmetro na URL.

Retorno de Method Not Allowed (405)

Campo Tipo Descrição
code Number Código do response da requisição(404)
url String Url utilizada na requisição
name String Nome da resposta

Obs: Para o respose 405, pedimos que seja verificado se o tipo de atributo o qual está sendo enviado, é igual ao tipo de atributo o qual está na documentação.

Retorno em caso de sucesso (status code 200 ou 201)

Exemplo de retorno:

{
    "paging": {
        "total": 108,
        "page": 1,
        "offset": 0,
        "limit": 30,
        "maxLimit": 50
    },
    "sort": [
        {
            "id": "asc"
        }
    ],
    "availableFilters": [
        "id",
        "name",
        "category_id",
        "ean",
        "available",
        "price",
        "brand",
        "model",
        "hot",
        "quantity_sold",
        "release",
        "free_shipping",
        "weight",
        "image",
        "release_date",
        "stock",
        "promotion",
        "reference",
        "has_buy_together",
        "has_free_gift",
        "has_description",
        "brand_id",
        "additional_button",
        "virtual_product",
        "has_ean",
        "is_kit",
        "has_title",
        "has_meta_description",
        "has_keywords",
        "has_variations",
        "has_brand",
        "has_model",
        "has_dimension",
        "has_weight",
        "property_name",
        "property_id",
        "property_value",
        "property_value_id",
        "activation_date",
        "deactivation_date",
        "show_properties",
        "kit_has_variation",
        "modified",
        "created",
        "price_range",
        "current_price_range",
        "date_range",
        "date_range_deactivation",
        "current_price"
    ],
    "appliedFilters": [],
    "Products": [
        {
            "Product": {
                "modified": "2018-12-26 13:46:12",
                "ean": "",
                "is_kit": "0",
                "slug": "produto-teste",
                "ncm": "0",
                "activation_date": "0000-00-00",
                "deactivation_date": "0000-00-00",
                "id": "0",
                "name": "PRODUTO TESTE",
                "price": "139.00",
                "cost_price": "0.00",
                "dollar_cost_price": "0.00",
                "promotional_price": "0.00",
                "start_promotion": "0000-00-00",
                "end_promotion": "0000-00-00",
                "brand": "",
                "brand_id": "",
                "model": "",
                "weight": "958",
                "length": "0",
                "width": "0",
                "height": "0",
                "stock": "51",
                "category_id": "25",
                "available": "1",
                "availability": "",
                "reference": "016301",
                "hot": "0",
                "release": "0",
                "additional_button": "0",
                "has_variation": "0",
                "rating": "0",
                "count_rating": "0",
                "quantity_sold": "0",
                "url": {
                    "http": "http://{dominio_da_loja}/categoria/produto-de-teste",
                    "https": "https://{dominio_da_loja}/categoria/produto-de-teste"
                },
                "created": "2016-10-19 09:30:12",
                "Properties": [],
                "payment_option": "R$ 125,10 à vista com desconto Boleto - Yapay ou 12x de R$ 13,14 com juros",
                "payment_option_details": [
                    {
                        "display_name": "Boleto - Yapay",
                        "type": "bank_billet",
                        "plots": "1",
                        "value": "125.10",
                        "tax": "0.00"
                    },
                    {
                        "display_name": "Cartão MasterCard - Yapay",
                        "type": "credit_card",
                        "plots": "12",
                        "value": "13.14",
                        "tax": "1.99"
                    }
                ],
                "related_categories": [],
                "release_date": "2016-12-21",
                "shortcut": "produto-test",
                "virtual_product": "",
                "minimum_stock": "0",
                "minimum_stock_alert": "0",
                "free_shipping": "0",
                "video": "",
                "metatag": [],
                "payment_option_html": " ",
                "upon_request": "0",
                "available_for_purchase": "1",
                "all_categories": "0",
                "ProductImage": [],
                "Variant": [],
                "AdditionalInfos": []
            }
        }
}
Campo Tipo Descrição
paging Object Dados de paginação
total Number Total de registros
page Number Página corrente
offset Number Registro inicial da página
limit Number Limite de registros
maxLimit Number Máximo de registros
sort Object Ordenação
availableFilters String Filtros disponíveis
appliedFilters String Filtros utilizados
Products Object Dados do produto
Product Object Dados do produto
id Number Código do produto
ean String Código EAN do produto
modifield Date Data de modificação do produto
slug String Final da url do produto
ncm String Código NCM do produto
name String Nome do produto
is_kit Number O produto possui kit
payment_options_details String Detalhes das opções de pagamento do produto
additionalInfos String Informações adicionais do produto
price Decimal Preço do produto
cost_price Decimal Preço de custo do produto
promotional_price Decimal Preço promocional do produto
start_promotion Date Data de início da promoção do produto
end_promotion Date Data de termino da promoção do produto
brand String Marca do produto
model String Modelo do produto
weight Number Peso do produto
length Number Comprimento do produto
width Number Largura do produto
height Number Altura do produto
cubic_weight Number Peso cúbico do produto
stock Number Estoque do produto
category_id Number Código da categoria principal do produto
available Number Produto disponível (Veja Tabela A)
availability String Disponibilidade do produto
reference String Referência do produto
hot Number Produto em destaque (Veja Tabela E)
release Number Produto lançamento (Veja Tabela D)
additional_button Number Botão adicional do produto
has_variation Number Produto com variação (Veja Tabela F)
brand_id Number Código da marca do produto
all_categories String Todas as categorias do produto
rating Number Classificação do produto
count_rating Number Valor da classificação do produto
quantity_sold Number Quantidade vendida do produto
ProductImage Object Imagens do produto
http String URL da imagem do produto
https String URL segura da imagem do produto
thumbs Object Miniaturas da imagem do produto
30 Object Miniaturas da imagem do produto (30px)
http String URL da miniaturas da imagem do produto (30px)
https String URL segura da miniaturas da imagem do produto (30px)
90 Object Miniaturas da imagem do produto (90px)
http String URL da miniaturas da imagem do produto (90px)
https String URL segura da miniaturas da imagem do produto (90px)
180 Object Miniaturas da imagem do produto (180px)
http String URL da miniaturas da imagem do produto (180px)
https String URL segura da miniaturas da imagem do produto (180px)
image Number Produto com imagem
url Object URLs do produto
http String URL do produto
https String URL segura do produto
created Date Data de criação do produto
Properties Object Propriedades do produto
type String Tipo da propriedade do produto (cor, tamanho, ...)
payment_option String Detalhes/Opções de pagamento do produto
related_categories Number Categorias adicionais do produto
release_date Date Data de lançamento do produto
shortcut String Atalho do produto
virtual_product Number Produto virtual (Veja Tabela I)
minimum_stock Number Estoque mínimo do produto
minimum_stock_alert Number Aviso de estoque mínimo do produto
upon_request Number Produto sob consulta
related_products Number Produtos relacionados
free_shipping Number Produto com frete grátis (Veja Tabela C)
payment_options_html String Opções de pagamento do produto em HTML
metatag Object Objeto
type String Tipo da metatag, só recebe keywords
Description String Descrição da metatag
video String Vídeo do produto
activation_date Date Data de ativação do produto
deactivation_date Date Data de desativação do produto
dollar_cost_price Number Preço de custo do produto em dollar
Variant Object Variação do produto
id Number Código da variação do produto

Tabelas Auxiliares de Produtos

Tabela A - Disponibilidade do produto (campo available)

Valor Descrição
0 Produto indisponível
1 Produto disponível

Tabela B - Produto promocional (campo promotion)

Valor Descrição
0 Produto não promocional
1 Produto promocional

Tabela C - Produto com frete grátis (campo free_shipping)

Valor Descrição
0 Produto sem frete grátis
1 Produto com frete grátis

Tabela D - Lançamento de produto (campo release)

Valor Descrição
0 Produto já lançado
1 Produto em lançamento

Tabela E - Produto em destaque (campo hot)

Valor Descrição
0 Produto normal
1 Produto em destaque

Tabela F - Produto com variação (campo has_variation)

Valor Descrição
0 Produto sem variação
1 Produto com variação

Tabela G - Produto em destaque (campo has_acceptance_terms)

Valor Descrição
0 Produto sem termo de aceite
1 Produto com termo de aceite

Tabela H - Produto em destaque (campo has_buy_together)

Valor Descrição
0 Produto sem compre junto
1 Produto com compre junto

Tabela I - Produto em destaque (campo virtual_product)

Valor Descrição
0 Produto normal
1 Produto virtual

Consultar Dados do Produto#get

Requisição para a consulta de dados de um produto.

Método GET

https://{api_address}/products/:id?access_token={token}

Código de Exemplo:



curl --location -g --request GET '{{api_address}}/products/:id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{api_address}}/products/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}


var client = new RestClient("{{api_address}}/products/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("{{api_address}}/products/:id?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Parâmetros enviados

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do produto

Retorno da API

Retorno de Invalid or expired token (401)

Campo Tipo Descrição
code Number Código do response da requisição(401)
url String Url utilizada na requisição
name String Nome da resposta
causes Array Causa do retorno 401

Obs: Chave inválida ou expirada, ocorre quando o access_token está expirado ou o seu valor está incorreto no parâmetro da url, pedimos que consuma à API abaixo para realizar a renovação ou geração da chave de acesso Clique aqui.

Retorno de Not Found e No records found (404)

ampo Tipo Descrição
code Number Código do response da requisição(404)
url String Url utilizada na requisição
name String Nome da resposta
causes String Causa do retorno 404

Obs: O response code 404 é ocasionado quando há um erro de sintaxe na url da requisição ou quando não encontramos id passado por parâmetro na URL.

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso

{
    "Product": {
        "ean": "",
        "modified": "2019-01-21 09:22:21",
        "is_kit": "0",
        "slug": "produto-teste",
        "ncm": "90221991",
        "activation_date": "0000-00-00",
        "deactivation_date": "2018-07-10",
        "id": "8",
        "name": "Produto Teste",
        "title": "Titulo blablabla",
        "description": "",
        "description_small": "Descrição blablabla",
        "price": "30.00",
        "cost_price": "25.00",
        "dollar_cost_price": "0.00",
        "promotional_price": "10.00",
        "start_promotion": "2019-01-20",
        "end_promotion": "2019-02-01",
        "brand": "Dragon Shield",
        "brand_id": "4",
        "model": "MTESTEM",
        "weight": "2",
        "length": "1",
        "width": "10",
        "height": "15",
        "stock": "682",
        "category_id": "14",
        "category_name": "Playmat",
        "available": "1",
        "availability": "Disponível em 3 dia útil",
        "reference": "M01",
        "hot": "1",
        "release": "1",
        "additional_button": "0",
        "has_variation": "1",
        "has_acceptance_terms": "0",
        "has_buy_together": "1",
        "additional_message": "Informação Adicional 3",
        "warranty": "",
        "rating": "0",
        "count_rating": "0",
        "quantity_sold": "2",
        "ProductImage": [
            {
                "http": "http://images3.tcdn.com.br/img/img_prod/123/1_1_123.jpg",
                "https": "https://images.tcdn.com.br/img/img_prod/123/1_1_123.jpg",
                "thumbs": {
                    "30": {
                        "http": "http://images.tcdn.com.br/img/img_prod/123/30_1_1_123.jpg",
                        "https": "https://images2.tcdn.com.br/img/img_prod/123/30_1_1_123.jpg"
                    },
                    "90": {
                        "http": "http://images1.tcdn.com.br/img/img_prod/123/90_1_1_123.jpg",
                        "https": "https://images1.tcdn.com.br/img/img_prod/123/90_1_1_123.jpg"
                    },
                    "180": {
                        "http": "http://images3.tcdn.com.br/img/img_prod/123/180_1_1_123.jpg",
                        "https": "https://images4.tcdn.com.br/img/img_prod/123/180_1_1_123.jpg"
                    }
                }
            },
            {
                "http": "http://images1.tcdn.com.br/img/img_prod/123/1_2_123.jpg",
                "https": "https://images2.tcdn.com.br/img/img_prod/123/1_2_123.jpg",
                "thumbs": {
                    "30": {
                        "http": "http://images4.tcdn.com.br/img/img_prod/123/30_1_2_123.jpg",
                        "https": "https://images4.tcdn.com.br/img/img_prod/123/30_1_2_123.jpg"
                    },
                    "90": {
                        "http": "http://images4.tcdn.com.br/img/img_prod/123/90_1_2_123.jpg",
                        "https": "https://images1.tcdn.com.br/img/img_prod/123/90_1_2_123.jpg"
                    },
                    "180": {
                        "http": "http://images4.tcdn.com.br/img/img_prod/123/180_1_2_123.jpg",
                        "https": "https://images.tcdn.com.br/img/img_prod/123/180_1_2_123.jpg"
                    }
                }
            }
        ],
        "image": "1",
        "url": {
            "http": "http://{dominio_da_loja}/categoria/produto-de-teste",
            "https": "https://{dominio_da_loja}/categoria/produto-de-teste"
        },
        "created": "0000-00-00 00:00:00",
        "Properties": {
            "Teste Caracteristica": [
                "PP"
            ]
        },
        "payment_option": "R$ 9,70 à vista com desconto Boleto - Yapay",
        "payment_option_details": [
            {
                "display_name": "Boleto - Yapay",
                "type": "bank_billet",
                "plots": "1",
                "value": "9.70",
                "tax": "0.00"
            }
        ],
        "related_categories": [
            "2"
        ],
        "release_date": "",
        "shortcut": "produto-teste",
        "virtual_product": "",
        "minimum_stock": "0",
        "minimum_stock_alert": "0",
        "promotion_id": "4",
        "included_items": "Informação Adicional 2",
        "related_products": [
            "6",
            "8",
            "27",
            "29"
        ],
        "free_shipping": "1",
        "current_price": "10.00",
        "ipi": "0.110000",
        "acceptance_term_option": "2",
        "acceptance_term": "",
        "warranty_days": "0",
        "availability_days": "0",
        "cubic_weight": "32",
        "video": "",
        "metatag": [
            {
                "type": "description",
                "content": "Informação Adicional Teste"
            },
            {
                "type": "description",
                "content": ""
            },
            {
                "type": "keywords",
                "content": ""
            }
        ],
        "payment_option_html": " ",
        "percentage_discount": "-66.666667",
        "upon_request": "0",
        "available_for_purchase": "1",
        "all_categories": [
            "2",
            "8",
            "14"
        ],
        "Variant": [
            {
                "id": "204"
            }
        ],
        "AdditionalInfos": [
            {
                "id": "2",
                "info_id": "1",
                "type": "select",
                "display_as": "galery",
                "name": "Puxadores",
                "display_value": "1",
                "required": "1",
                "add_total": "1",
                "options": [
                    {
                        "id": "6",
                        "name": "ima",
                        "image": {
                            "http": "http://images.tcdn.com.br/img/img_prod/406562/imagem_6_2819240856c4c18e82e87.jpg",
                            "https": "https://images.tcdn.com.br/img/img_prod/406562/imagem_6_2819240856c4c18e82e87.jpg"
                        },
                        "value": "0.12"
                    }
                ],
                "active": "1",
                "deadline": "0"
            },
            {
                "id": "14",
                "info_id": "2",
                "type": "text",
                "name": "Data do Curso",
                "display_value": "1",
                "required": "1",
                "add_total": "0",
                "max_length": "0",
                "value": "0.00",
                "active": "1",
                "deadline": "0"
            }
        ]
    }
}
Campo Tipo Descrição
Product Object Dados do produto
id Number Código do produto
ean String Código EAN do produto
modifield Date Data de modificação do produto
slug String Final da url do produto
ncm String Código NCM do produto
name String Nome do produto
title String Titulo do produto
description String Descrição do produto
description_small String Descrição resumida do produto
price Decimal Preço do produto
cost_price Decimal Preço de custo do produto
promotional_price Decimal Preço promocional do produto
start_promotion Date Data de início da promoção do produto
end_promotion Date Data de termino da promoção do produto
brand String Marca do produto
model String Modelo do produto
weight Number Peso do produto
length Number Comprimento do produto
width Number Largura do produto
height Number Altura do produto
cubic_weight Number Peso cúbico do produto
stock Number Estoque do produto
category_id Number Código da categoria principal do produto
available Number Produto disponível (Veja Tabela A)
availability String Disponibilidade do produto
reference String Referência do produto
hot Number Produto em destaque (Veja Tabela E)
release Number Produto lançamento (Veja Tabela D)
additional_button Number Botão adicional do produto
has_variation Number Produto com variação (Veja Tabela F)
has_acceptance_terms Number Produto com termo de aceitação (Veja Tabela G)
has_buy_together Number Produto com compre junto (Veja Tabela H)
additional_message String Mensagem adicional do produto
warranty String Garantia do produto
rating Number Classificação do produto
count_rating Number Valor da classificação do produto
quantity_sold Number Quantidade vendida do produto
ProductImage Object Imagens do produto
http String URL da imagem do produto
https String URL segura da imagem do produto
thumbs Object Miniaturas da imagem do produto
30 Object Miniaturas da imagem do produto (30px)
http String URL da miniaturas da imagem do produto (30px)
https String URL segura da miniaturas da imagem do produto (30px)
90 Object Miniaturas da imagem do produto (90px)
http String URL da miniaturas da imagem do produto (90px)
https String URL segura da miniaturas da imagem do produto (90px)
180 Object Miniaturas da imagem do produto (180px)
http String URL da miniaturas da imagem do produto (180px)
https String URL segura da miniaturas da imagem do produto (180px)
image Number Produto com imagem
url Object URLs do produto
http String URL do produto
https String URL segura do produto
created Date Data de criação do produto
Properties Object Propriedades do produto
type String Tipo da propriedade do produto (cor, tamanho, ...)
payment_option String Detalhes/Opções de pagamento do produto
related_categories Number Categorias adicionais do produto
release_date Date Data de lançamento do produto
shortcut String Atalho do produto
virtual_product Number Produto virtual (Veja Tabela I)
minimum_stock Number Estoque mínimo do produto
minimum_stock_alert Number Aviso de estoque mínimo do produto
promotion_id Number Código da promoção do produto
included_items String Itens inclusos do produto
related_products Number Produtos relacionados
free_shipping Number Produto com frete grátis (Veja Tabela C)
current_price Decimal Preço do produto
ipi Decimal IPI do produto
acceptance_term_option Number Opção do termo de aceitação do produto
acceptance_term Number Termo de aceitação do produto
warranty_days Number Dias de garantia do produto
availability_days Number Dias de disponibilidade do produto
metatag Object Metatag
type Object Tipo da metatag só recebe keywords
content Object Valor da metatag
Variant Object Variação do produto
id Number Código da variação do produto
is_kit Number O produto possui kit
activation_date Date Data de ativação do produto
deactivation_date Date Data de desativação do produto
dollar_cost_price Number Preço de custo do produto em dollar
brand_id Number Código da marca do produto
category_name String Nome da categoria do produto
payment_options_details String Detalhes das opções de pagamento do produto
cubic_weight Number Peso cúbico do produto
video String Vídeo do produto
percentage_discount Number Desconto percentual do produto
upon_request Number Produto sob consulta
available_for_purchase String Produto disponível para compra
all_categories String Todas as categorias do produto
additionalInfos String Informações adicionais do produto

Tabelas Auxiliares de Produtos

Tabela A - Disponibilidade do produto (campo available)

Valor Descrição
0 Produto indisponível
1 Produto disponível

Tabela B - Produto promocional (campo promotion)

Valor Descrição
0 Produto não promocional
1 Produto promocional

Tabela C - Produto com frete grátis (campo free_shipping)

Valor Descrição
0 Produto sem frete grátis
1 Produto com frete grátis

Tabela D - Lançamento de produto (campo release)

Valor Descrição
0 Produto já lançado
1 Produto em lançamento

Tabela E - Produto em destaque (campo hot)

Valor Descrição
0 Produto normal
1 Produto em destaque

Tabela F - Produto com variação (campo has_variation)

Valor Descrição
0 Produto sem variação
1 Produto com variação

Tabela G - Produto em destaque (campo has_acceptance_terms)

Valor Descrição
0 Produto sem termo de aceite
1 Produto com termo de aceite

Tabela H - Produto em destaque (campo has_buy_together)

Valor Descrição
0 Produto sem compre junto
1 Produto com compre junto

Tabela I - Produto em destaque (campo virtual_product)

Valor Descrição
0 Produto normal
1 Produto virtual

Cadastrar Produto#post

Requisição para inclusão de um produto. Deverá enviar o JSON com os dados do produto para a criação.

Método POST

https://{api_address}/products?access_token={token}

Código de Exemplo:

curl --location -g --request POST '{{api_address}}/products?access_token={{access_token}}' \
--data-raw '{
    "Product":  {
        "ean":"9999",
        "name":"Produto Teste API",
        "ncm":"99999999",
        "description":"Descrição do Produto de Teste da API",
        "description_small":"Produto de Teste da API",
        "price":0.01,
        "cost_price":0.01,
        "promotional_price":0.01,
        "start_promotion":"2019-03-01",
        "end_promotion":"2019-09-01",
        "ipi_value": 12,
        "brand":"marca",
        "model":"Modelo",
        "weight":1000,
        "length":10,
        "width":10,
        "height":10,
        "stock":100,
        "category_id":"2",
        "available":1,
        "availability":"Disponível em 3 dias",
        "availability_days":3,
        "reference":"111",
        "hot": "1",
        "release": "1",
        "additional_button": "0",
        "related_categories":[],
        "release_date":"",
        "metatag":[{"type":"keywords",
        "content":"Key1, Key2, Key3",
        "local":1}],
        "virtual_product":"0"
    }
}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('{{api_address}}/products?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
  '["Product"]["ean"]' => '98799979789879',
  '["Product"]["name"]' => 'Produto Teste API',
  '["Product"]["description"]' => 'Descrição do Produto de Teste da API',
  '["Product"]["description_small"]' => 'Produto de Teste da API',
  '["Product"]["price"]' => '10.01',
  '["Product"]["cost_price"]' => '10.01',
  '["Product"]["promotional_price"]' => '10.01',
  '["Product"]["start_promotion"]' => '2019-04-01',
  '["Product"]["end_promotion"]' => '2019-04-30',
  '["Product"]["brand"]' => 'Marca',
  '["Product"]["model"]' => 'Modelo',
  '["Product"]["weight"]' => '1000',
  '["Product"]["length"]' => '10',
  '["Product"]["width"]' => '10',
  '["Product"]["height"]' => '10',
  '["Product"]["stock"]' => '100',
  '["Product"]["category_id"]' => '2',
  '["Product"]["available"]' => '1',
  '["Product"]["availability"]' => 'Disponível em 3 dias',
  '["Product"]["availability_days"]' => '3',
  '["Product"]["reference"]' => '111',
  '["Product"]["hot"]' => '1',
  '["Product"]["release"]' => '1',
  '["Product"]["additional_button"]' => '0',
  '["Product"]["related_categories"]' => '[3,5,7]',
  '["Product"]["release_date"]' => '""',
  '["Product"]["shortcut"]' => '""',
  '["Product"]["virtual_product"]' => '0'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("{{api_address}}/products?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddParameter("[\"Product\"][\"ean\"]", "98799979789879");
request.AddParameter("[\"Product\"][\"name\"]", "Produto Teste API");
request.AddParameter("[\"Product\"][\"description\"]", "Descrição do Produto de Teste da API");
request.AddParameter("[\"Product\"][\"description_small\"]", "Produto de Teste da API");
request.AddParameter("[\"Product\"][\"price\"]", "10.01");
request.AddParameter("[\"Product\"][\"cost_price\"]", "10.01");
request.AddParameter("[\"Product\"][\"promotional_price\"]", "10.01");
request.AddParameter("[\"Product\"][\"start_promotion\"]", "2019-04-01");
request.AddParameter("[\"Product\"][\"end_promotion\"]", "2019-04-30");
request.AddParameter("[\"Product\"][\"brand\"]", "Marca");
request.AddParameter("[\"Product\"][\"model\"]", "Modelo");
request.AddParameter("[\"Product\"][\"weight\"]", "1000");
request.AddParameter("[\"Product\"][\"length\"]", "10");
request.AddParameter("[\"Product\"][\"width\"]", "10");
request.AddParameter("[\"Product\"][\"height\"]", "10");
request.AddParameter("[\"Product\"][\"stock\"]", "100");
request.AddParameter("[\"Product\"][\"category_id\"]", "2");
request.AddParameter("[\"Product\"][\"available\"]", "1");
request.AddParameter("[\"Product\"][\"availability\"]", "Disponível em 3 dias");
request.AddParameter("[\"Product\"][\"availability_days\"]", "3");
request.AddParameter("[\"Product\"][\"reference\"]", "111");
request.AddParameter("[\"Product\"][\"hot\"]", "1");
request.AddParameter("[\"Product\"][\"release\"]", "1");
request.AddParameter("[\"Product\"][\"additional_button\"]", "0");
request.AddParameter("[\"Product\"][\"related_categories\"]", "[3,5,7]");
request.AddParameter("[\"Product\"][\"release_date\"]", "\"\"");
request.AddParameter("[\"Product\"][\"shortcut\"]", "\"\"");
request.AddParameter("[\"Product\"][\"virtual_product\"]", "0");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "[\"Product\"][\"ean\"]=98799979789879&[\"Product\"][\"name\"]=Produto Teste API&[\"Product\"][\"description\"]=Descrição do Produto de Teste da API&[\"Product\"][\"description_small\"]=Produto de Teste da API&[\"Product\"][\"price\"]=10.01&[\"Product\"][\"cost_price\"]=10.01&[\"Product\"][\"promotional_price\"]=10.01&[\"Product\"][\"start_promotion\"]=2019-04-01&[\"Product\"][\"end_promotion\"]=2019-04-30&[\"Product\"][\"brand\"]=Marca&[\"Product\"][\"model\"]=Modelo&[\"Product\"][\"weight\"]=1000&[\"Product\"][\"length\"]=10&[\"Product\"][\"width\"]=10&[\"Product\"][\"height\"]=10&[\"Product\"][\"stock\"]=100&[\"Product\"][\"category_id\"]=2&[\"Product\"][\"available\"]=1&[\"Product\"][\"availability\"]=Disponível em 3 dias&[\"Product\"][\"availability_days\"]=3&[\"Product\"][\"reference\"]=111&[\"Product\"][\"hot\"]=1&[\"Product\"][\"release\"]=1&[\"Product\"][\"additional_button\"]=0&[\"Product\"][\"related_categories\"]=[3,5,7]&[\"Product\"][\"release_date\"]=\"\"&[\"Product\"][\"shortcut\"]=\"\"&[\"Product\"][\"virtual_product\"]=0");
Request request = new Request.Builder()
  .url("{{api_address}}/products?access_token={{access_token}}")
  .method("POST", body)
  .addHeader("Content-Type", "application/x-www-form-urlencoded")
  .build();
Response response = client.newCall(request).execute();

Parâmetros enviados

Campo Tipo Descrição
access_token String Chave de acesso
Product JSON Dados do produto
ean String (120) Código EAN do produto
name String (200) Nome do produto
ncm String (8) Código NCM do produto
description String (4800) Descrição do produto
description_small String (500) Descrição resumida do produto
price Decimal (9) Preço do produto
cost_price Decimal (9) Preço de custo do produto
promotional_price Decimal (9) Preço promocional do produto
start_promotion Date Data de início da promoção do produto (Formato: aaaa-mm-dd)
end_promotion Date Data de termino da promoção do produto (Formato: aaaa-mm-dd)
ipi_value Decimal IPI do produto
brand String (120) Marca do produto
model String (150) Modelo do produto
weight Number (9) Peso do produto
length Number (9) Comprimento do produto
width Number (9) Largura do produto
height Number (9) Altura do produto
stock Number (9) Estoque do produto
category_id Number Código da categoria principal do produto
available Number Produto disponível (Veja Tabela A)
availability String Disponibilidade do produto
availability_days Number Dias de disponibilidade do produto
reference String (120) Referência do produto
hot Number Produto em destaque (Veja Tabela E)
release Number Produto lançamento (Veja Tabela D)
additional_button Number Botão adicional do produto
related_categories Number Categorias adicionais do produto (separados por vírgula)
release_date Date Data de lançamento do produto (Formato: aaaa-mm-dd)
metatag Object Metatags
type String Tipo da metatag (Informar o valor keywords)
content String Dados da metatag
local Number Local da metatag (Informar p valor 1)
virtual_product String Se for um produto virtual, significa que ele não possui o envio físico. Produto virtual (Veja Tabela I)

Retorno da API

Retorno de Invalid or expired token (401)

Campo Tipo Descrição
code Number Código do response da requisição(401)
url String Url utilizada na requisição
name String Nome da resposta
causes Array Causa do retorno 401

Obs: Chave inválida ou expirada, ocorre quando o access_token está expirado ou o seu valor está incorreto no parâmetro da url, pedimos que consuma à API abaixo para realizar a renovação ou geração da chave de acesso. Clique aqui

Retorno de Bad Request (400)

Campo Tipo Descrição
code Number Código do response da requisição(400)
url String Url utilizada na requisição
name String Nome da resposta

Obs: O Retorno de Bad Request ocorre quando há algum valor diferente do tipo de atributo esperado ou quando há um erro na estrutura do JSON, para isso pedimos que seja feito uma análise comparativa entre o nosso modelo e o modelo elaborado na requisição.

Retorno de Not Found e No records found (404)

Campo Tipo Descrição
code Number Código do response da requisição(404)
url String Url utilizada na requisição
name String Nome da resposta
causes String Causa do retorno 404

Obs: O response code 404 é ocasionado quando há um erro de sintaxe na url da requisição ou quando não encontramos id passado por parâmetro na URL.

Retorno em caso de sucesso (status code 200 ou 201)

Retorno com Sucesso:

{
  "message":"Created",
  "id":"123",
  "code":201
}
Campo Tipo Descrição
message String Mensagem de retorno
:id Number Código do produto
code Number Código do retorno(201)de sucesso
Campo Descrição
"price" Enviar este campo com valor zerado, ativará o campo "upon_request"

Tabelas Auxiliares de Produtos

Tabela A - Disponibilidade do produto (campo available)

Valor Descrição
0 Produto indisponível
1 Produto disponível

Tabela B - Produto em destaque (campo virtual_product)

Valor Descrição
0 Produto normal
1 Produto virtual

Especificações para o envio das imagens na API

obs: Para realizar o envio de imagem pedimos que siga conforme o link a baixo, pois a partir 02 de Julho de 2023 iremos descontinuar o envio de imagem pelo "{ "Product": { picture_source_x;}} e passaremos a realizar o envio de imagem conforme o link a baixo:
Clique aqui

Atualizar Dados do Produto#put

Requisição para alterar os dados de um produto. Deverá enviar o JSON com os dados do produto para a alteração.

Método PUT

https://{api_address}/products/:id?access_token={token}

Parâmetros enviados

Exemplo de Atualização de vários dados:

{
    "Product": {
        "price": 100.00,
        "stock": 100
    }
}

Exemplo de Atualização apenas do estoque:

{
    "Product": {
        "stock": 100
    }
}
Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do produto
Product JSON Dados do produto
ean String Código EAN do produto
name String Nome do produto
ncm String Código NCM do produto
description String Descrição do produto
description_small String Descrição resumida do produto
price Decimal Preço do produto
cost_price Decimal Preço de custo do produto
promotional_price Decimal Preço promocional do produto
start_promotion Date Data de início da promoção do produto (Formato: aaaa-mm-dd)
end_promotion Date Data de termino da promoção do produto (Formato: aaaa-mm-dd)
brand String Marca do produto
model String Modelo do produto
weight Number Peso do produto
length Number Comprimento do produto
width Number Largura do produto
height Number Altura do produto
stock Number Estoque do produto
category_id Number Código da categoria principal do produto
availability Number prazo de disponibilidade do produto
available Number Produto disponível (Veja Tabela A)
warranty String Tempo de garantia do produto
reference String Referência do produto
hot Number Produto em destaque (Veja Tabela E)
release Number Produto lançamento (Veja Tabela D)
additional_button Number Botão adicional do produto
metatag Object Metatags
type String Tipo da metatag (Informar o valor keywords)
content String Dados da metatag
local Number Local da metatag (Informar p valor 1)
related_categories Number Categorias adicionais do produto (separados por vírgula)
release_date Date Data de lançamento do produto (Formato: aaaa-mm-dd)

obs: Para realizar o envio de imagem pedimos que siga conforme o link a baixo, pois a partir 02 de Julho de 2023 iremos descontinuar o envio de imagem pelo "{ "Product": { picture_source_x;}} e passaremos a realizar o envio de imagem conforme o link a baixo:
Clique aqui

Retorno da API

Retorno em caso de sucesso (status code 200 ou 201)

Retorno com Sucesso:

{
  "message":"Saved",
  "id":"123",
  "code":200
}
Campo Tipo Descrição
message String Mensagem de retorno
:id Number Código do produto
code Number Código do retorno(200)

Retorno de Invalid or expired token (401)

Campo Tipo Descrição
code Number Código do response da requisição(401)
url String Url utilizada na requisição
name String Nome da resposta
causes Array Causa do retorno 401

Obs: Chave inválida ou expirada, ocorre quando o access_token está expirado ou o seu valor está incorreto no parâmetro da url, pedimos que consuma à API abaixo para realizar a renovação ou geração da chave de acesso. Clique aqui

Retorno de Bad Request (400)

Campo Tipo Descrição
code Number Código do response da requisição(400)
url String Url utilizada na requisição
name String Nome da resposta

Obs: O Retorno de Bad Request ocorre quando há algum valor diferente do tipo de atributo esperado ou quando há um erro na estrutura do JSON, para isso pedimos que seja feito uma análise comparativa entre o nosso modelo e o modelo elaborado na requisição.

Retorno de Not Found e No records found (404)

Campo Tipo Descrição
code Number Código do response da requisição(404)
url String Url utilizada na requisição
name String Nome da resposta
causes String Causa do retorno 404

Obs: O response code 404 é ocasionado quando há um erro de sintaxe na url da requisição ou quando não encontramos id passado por parâmetro na URL.

Tabelas Auxiliares de Produtos

Tabela A - Disponibilidade do produto (campo available)

Valor Descrição
0 Produto indisponível
1 Produto disponível

Exclusão de Produtos#delete

Requisição para excluir um Produto ou um Kit

Código de Exemplo:

curl --location -g --request DELETE 'https://{api_address}/products/:id/?access_token={token}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/products/:id/?access_token={token}');
$request->setMethod(HTTP_Request2::METHOD_DELETE);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/products/:id/?access_token={token}");
client.Timeout = -1;
var request = new RestRequest(Method.DELETE);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://{api_address}/products/:id/?access_token={token}")
  .method("DELETE", body)
  .build();
Response response = client.newCall(request).execute();

Método DELETE

https://{api_address}/products/:id/?access_token={token}

Parâmetros enviados

Campo Tipo Descrição
access_token String Chave de acesso
id Number Código do produto

Retorno da API

Retorno de Invalid or expired token (401)

Campo Tipo Descrição
code Number Código do response da requisição(401)
url String Url utilizada na requisição
name String Nome da resposta
causes Array Causa do retorno 401

Obs: Chave inválida ou expirada, ocorre quando o access_token está expirado ou o seu valor está incorreto no parâmetro da url, pedimos que consuma à API abaixo para realizar a renovação ou geração da chave de acesso. Clique aqui

Retorno de Not Found e No records found (404)

Campo Tipo Descrição
code Number Código do response da requisição(404)
url String Url utilizada na requisição
name String Nome da resposta
causes String Causa do retorno 404

Obs: O response code 404 é ocasionado quando há um erro de sintaxe na url da requisição ou quando não encontramos id passado por parâmetro na URL.

Retorno em caso de sucesso (status code 200 ou 201)

Retorno com Sucesso:

{
  "message":"Deleted",
  "id":"123",
  "code":200
}
Campo Tipo Descrição
message String Mensagem de retorno
:id Number Código do produto
code Number Código do retorno(200)

Exclusão de Kit#delete

Método DELETE

https://{api_address}/products/product_parent_id?access_token={token}

Parâmetros enviados

Campo Tipo Descrição
access_token String Chave de acesso

Retorno da API

Retorno de Invalid or expired token (401)

Campo Tipo Descrição
code Number Código do response da requisição(401)
url String Url utilizada na requisição
name String Nome da resposta
causes Array Causa do retorno 401

Obs: Chave inválida ou expirada, ocorre quando o access_token está expirado ou o seu valor está incorreto no parâmetro da url, pedimos que consuma à API abaixo para realizar a renovação ou geração da chave de acesso. Clique aqui

Retorno de Not Found e No records found (404)

Campo Tipo Descrição
code Number Código do response da requisição(404)
url String Url utilizada na requisição
name String Nome da resposta
causes String Causa do retorno 404

Obs: O response code 404 é ocasionado quando há um erro de sintaxe na url da requisição ou quando não encontramos id passado por parâmetro na URL.

Retorno em caso de sucesso (status code 200 ou 201)

Retorno com Sucesso:

{
  "message":"Deleted",
  "id":"123",
  "code":200
}
Campo Tipo Descrição
message String Mensagem de retorno
:id Number Código do produto is_kit=1
code Number Código do retorno(200)

APIs de imagens de produtos e variações

Cadastro e Atualização de Imagem de Produto#post

Requisição para cadastrar ou atualizar imagens do produto.

https://{{api_address}}/products/{id_do_produto}/images?access_token={{access_token}

Observação:

Assim que realizado o envio, as imagens serão processadas em fila, podendo levar alguns minutos para serem exibidas no cadastro do produto.

Regras de envio

Exemplo de código:

 {
    "Images":  {
        "picture_source_1":"http://bancodeimagens/imagem1.jpg",
        "picture_source_2":"http://bancodeimagens/imagem2.jpg",
        "picture_source_3":"http://bancodeimagens/imagem3.jpg",
        "picture_source_4":"http://bancodeimagens/imagem4.jpg",
        "picture_source_5":"http://bancodeimagens/imagem5.jpg",
        "picture_source_6":"http://bancodeimagens/imagem6.jpg",
        "picture_source_7":"http://bancodeimagens/imagem7.jpg",
        "picture_source_8":"http://bancodeimagens/imagem8.jpg",
        "picture_source_9":"http://bancodeimagens/imagem9.jpg",
        "picture_source_10":"http://bancodeimagens/imagem10.jpg",
        "picture_source_11":"http://bancodeimagens/imagem11.jpg",
        "picture_source_12":"http://bancodeimagens/imagem12.jpg",
        "picture_source_13":"http://bancodeimagens/imagem13.jpg",
        "picture_source_14":"http://bancodeimagens/imagem14.jpg",
        "picture_source_15":"http://bancodeimagens/imagem15.jpg"
    }
}

Resposta:


{
    "message": "Uploaded images",
    "code": 200
}

OBS: Para atualização de imagem, enviar APENAS os campos o qual será atualizado, ou seja, caso queira atualizar apenas a 3 imagem deve enviar apenas o campo picture_source_3.

Cadastro e Atualização de Imagem da Variação#post

Requisição para cadastrar ou atualizar imagens da variação.

https://{{api_address}}/variants/{id_da_variacao}/images?access_token={{access_token}}

Observação:

Assim que realizado o envio, as imagens serão processadas em fila, podendo levar alguns minutos para serem exibidas no cadastro do produto.

Regras de envio

Exemplo de código:

 '{
    "Images":  {
        "picture_source_1":"http://bancodeimagens/imagem1.jpg",
        "picture_source_2":"http://bancodeimagens/imagem2.jpg",
        "picture_source_3":"http://bancodeimagens/imagem3.jpg",
        "picture_source_4":"http://bancodeimagens/imagem4.jpg",
        "picture_source_5":"http://bancodeimagens/imagem5.jpg",
        "picture_source_6":"http://bancodeimagens/imagem6.jpg",
        "picture_source_7":"http://bancodeimagens/imagem7.jpg",
        "picture_source_8":"http://bancodeimagens/imagem8.jpg",
        "picture_source_9":"http://bancodeimagens/imagem9.jpg",
        "picture_source_10":"http://bancodeimagens/imagem10.jpg",
        "picture_source_11":"http://bancodeimagens/imagem11.jpg",
        "picture_source_12":"http://bancodeimagens/imagem12.jpg",
        "picture_source_13":"http://bancodeimagens/imagem13.jpg",
        "picture_source_14":"http://bancodeimagens/imagem14.jpg",
        "picture_source_15":"http://bancodeimagens/imagem15.jpg"
    }
}'

Resposta:


{
    "message": "Uploaded images",
    "code": 200
}

OBS: Para atualização de imagem, enviar APENAS os campos o qual será atualizado, ou seja, caso queira atualizar apenas a 3 imagem deve enviar apenas o campo picture_source_3.

Remoção de imagens#post

A remoção da imagem no cadastro do produto será realizada ao recebermos na requisição um espaço em branco entre aspas no lugar da URL, referente a posição da imagem que se pretende remover.

Exemplo: Remover imagem da posição 3 do produto id 1234

https://{{api_address}}/products/1234/images?access_token={{access_token}}

Observação:

Assim que realizado o envio, as imagens serão processadas em fila, podendo levar alguns minutos para serem exibidas no cadastro do produto.

Exemplo de código:

{
   "Images":  {
        "picture_source_3":" ",
    }
}

APIs de Produtos Vendidos

Listagem de Produtos Vendidos#get

Requisição para consultar os dados dos produtos vendidos.

Método GET

https://{api_address}/products_solds/:id

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/products_solds/'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/products_solds/');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/products_solds/");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/products_solds/")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Parâmetros enviados

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do produto vendido

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso

{
    "paging": {
        "total": 1,
        "page": 1,
        "offset": 0,
        "limit": 30,
        "maxLimit": 50
    },
    "sort": [
        {
            "id": "asc"
        }
    ],
    "availableFilters": [
        "id",
        "product_id"
    ],
    "appliedFilters": [],
    "ProductsSolds": [
        {
            "ProductsSold": {
                "id": "123",
                "product_id": "456",
                "order_id": "789",
                "name": "Produto de Teste",
                "price": "51.80",
                "original_price": "50.00",
                "quantity": "1",
                "model": "Modelo de Teste",
                "reference": "REF0001",
                "variant_id": "0",
                "additional_information": ""
            }
        }
    ]
}
Campo Tipo Descrição
paging Object Dados de paginação
total Number Total de registros
page Number Páginas corrente
offset Number Registro inicial da página
limit Number Limite de registros
maxLimit Number Máximo de registros
sort Object Ordenação
availableFilters String Filtros disponíveis
appliedFilters String Filtros utilizados
ProductsSolds Object Lista de produtos vendidos
ProductsSold Object Dados do produto vendido
id Number Código do produto vendido
product_id Number Código do produto
order_id Number Código do pedido
name String Nome do produto
price Decimal Valor de venda
original_price Decimal Valor original
quantity Number Quantidade vendida
model String Modelo
reference String Código de referência
variant_id Number Código da variação
additional_information String Informações adicionais

APIs de Pedidos

Listagem de Pedidos#get

Requisição para consultar os dados das categorias de forma estruturada.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/orders'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/orders');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/orders");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/orders")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/orders?access_token={{token}}

Parâmetros enviados

Campo Tipo Descrição
access_token String Chave de acesso
id Number Código do pedido
status String Status do pedido
partner_id String Código do parceiro
limit Number Limite de registros
page Number Página corrente
sort String Ordenação ex.: [campo]_[asc/desc]
modified Date Filtro de data de modificação, ex.: [start], [end] Formato: aaaa-mm-dd

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
  {
    "paging": {
        "total": 7,
        "page": 1,
        "offset": 0,
        "limit": 30,
        "maxLimit": 50
    },
    "sort": [
        {
          "id": "asc"
        }
    ],
    "availableFilters": [
        "id",
        "status",
        "partner_id",
        "session_id",
        "sending_code",
        "customer_id",
        "shipment",
        "point_sale",
        "payment_form",
        "access_code",
        "external_code",
        "has_payment",
        "has_invoice",
        "has_shipment",
        "with_statuses",
        "printed",
        "payment_method_id",
        "store_note",
        "discount_coupon",
        "modified",
        "date",
        "shipment_date",
        "payment_date"
    ],
    "appliedFilters": [],
    "Orders": [
      {
        "Order": {
            "status": "A ENVIAR",
            "id": "5",
            "date": "2020-12-07",
            "customer_id": "5",
            "partial_total": "35999.00",
            "taxes": "0.00",
            "discount": "0.00",
            "point_sale": "LOJA VIRTUAL",
            "shipment": "Correios Expresso",
            "shipment_value": "28.35",
            "shipment_date": "",
            "store_note": "07/12/2020 11:55:22 Pedido em 1 vez de R$ 27,027.60 através do Boleto - Yapay - Boleto",
            "discount_coupon": "natal25/8999.75",
            "payment_method_rate": "0.00",
            "value_1": "0.00",
            "payment_form": "Boleto - Yapay",
            "sending_code": "",
            "session_id": "rdlq7ogripa61r33p75bei8cj2",
            "total": "27027.60",
            "payment_date": "0000-00-00",
            "access_code": "DB91EEA5D671CA2",
            "progressive_discount": "0.00",
            "shipping_progressive_discount": "0.00",
            "shipment_integrator": "Frete Fácil",
            "modified": "2020-12-21 11:21:52",
            "printed": "",
            "interest": "0.00",
            "id_quotation": "3220",
            "estimated_delivery_date": "2020-12-22",
            "external_code": "",
            "has_payment": "0",
            "has_shipment": "0",
            "has_invoice": "1",
            "total_comission_user": "0.00",
            "total_comission": "0.00",
            "coupon": {
                "code": "natal25",
                "discount": "8999.75"
            },
            "is_traceable": "",
            "OrderStatus": {
                "id": "1",
                "default": "1",
                "type": "open",
                "show_backoffice": "1",
                "allow_edit_order": "0",
                "description": "",
                "status": "A ENVIAR",
                "show_status_central": "",
                "background": "#CAFAD1"
            },
            "PickupLocation": [],
            "ProductsSold": [
                {
                    "id": "5"
                }
            ],
            "Payment": [],
            "OrderInvoice": [
                {
                    "id": "7",
                    "link": ""
                }
            ],
            "MlOrder": [],
            "OrderTransactions": [],
            "MarketplaceOrder": [],
            "Extensions": []
        }
    }
}
Campo Tipo Descrição
paging Object Dados de paginação
total Number Total de registros
page Number Página corrente
offset Number Registro inicial da página
limit Number Limite de registros
maxLimit Number Máximo de registros
sort Object Ordenação
availableFilters String Filtros disponíveis
appliedFilters String Filtros utilizados
Orders Object Lista de produtos
Order Object Dados do pedido
id Number Código do pedido
status String Status do pedido
date Date Data do pedido
customer_id Number Código do cliente
partial_total Decimal Valor parcial do pedido
taxes Decimal Valor de acréscimo / taxa
discount Decimal Valor de desconto
shipment_value Decimal Valor de frete
shipment_date Date Data de envio do pedido
discount_coupon Decimal Código do cupom de desconto
payment_method_rate Decimal Taxa do meio de pagamento
value_1 Decimal Valor
payment_form String Forma de pagamento do pedido
sending_code String Código de Envio
session_id Number Código da sessão
total Number Valor total do pedido
payment_date Date Data de provisionamento ou data de pagamento de acordo com a seleção no painel
access_code String Código de acesso
shipment_integrator String Integrador de Envio
modified Date Data de Modificação
printed String "se o retorno for 1 - o pedido já foi impresso se o retorno for vazio """" - o pedido ainda não foi impresso"
interest Decimal Valor do Juros do Pedido
id_quotation Number Código externo de cotação de frete (Gateway de Frete)
estimated_delivery_date Number Tempo estimado de entrega
external_code String codigo externo
total_comission_user Decimal Comissão por usuario
total_comission Decimal Total de comissão
is_traceable Number É rastreavel
OrderStatus Object Detalhes de status do pedido
ProductsSold Object Lista de produtos do pedido
id Number Código dos produtos do pedido
Payment Object Informações de pagamento do pedido
id Number Código de pagamento do pedido
OrderInvoice Object Informações da nota fiscal do pedido
id Number Código da nota fiscal do pedido

OBS: As Tabelas auxiliares estão logo a baixo do DELETE

Dados do Pedido#get

Exemplos com availableFilters

Filtrar pedido por data específica
'https://{api_address}/orders?access_token={{access_token}}&date=2021-07-13,2021-07-13 23:59:59'

Requisição para consultar os dados das categorias de forma estruturada.

Método GET

https://{api_address}/orders/:id?access_token={{token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do pedido

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
  "Order": {
      "status": "FINALIZADO",
      "id": "15",
      "date": "2021-02-10",
      "hour": "11:28:21",
      "customer_id": "1",
      "partial_total": "59900.00",
      "taxes": "0.00",
      "discount": "0.00",
      "point_sale": "LOJA VIRTUAL",
      "shipment": "Correios Expresso",
      "shipment_value": "38.91",
      "shipment_date": "",
      "delivered": "",
      "shipping_cancelled": "",
      "store_note": "10/02/2021 11:28:28 Pedido em 1 vez de R$ 62,935.86 através do Boleto - Yapay - Boleto Link da transação: https://intermediador.yapay.com.br/orders/billet/17471d7cd90f7d3jk54643e1da0f15",
      "customer_note": "",
      "partner_id": "0",
      "discount_coupon": "",
      "payment_method_rate": "2996.95",
      "installment": "1",
      "value_1": "0.00",
      "sending_code": "",
      "sending_date": "0000-00-00",
      "billing_address": "0",
      "delivery_time": "3",
      "payment_method_id": "80",
      "payment_method": "Boleto - Yapay",
      "session_id": "k8ku3icuvb5uge2qj7u8gbtli6",
      "total": "62935.86",
      "payment_date": "2021-02-10",
      "access_code": "38D071AEFEF4960",
      "shipment_integrator": "Frete Fácil",
      "modified": "2021-05-06 10:38:45",
      "printed": "",
      "interest": "0.00",
      "id_quotation": "3220",
      "estimated_delivery_date": "2021-02-15",
      "is_traceable": "",
      "external_code": "",
      "tracking_url": "",
      "has_payment": "0",
      "has_shipment": "0",
      "has_invoice": "0",
      "total_comission_user": "0.00",
      "total_comission": "0.00",
      "OrderStatus": {
          "id": "69",
          "default": "1",
          "type": "closed",
          "show_backoffice": "1",
          "allow_edit_order": "0",
          "description": "",
          "status": "FINALIZADO",
          "show_status_central": "",
          "background": "#85CC8D"
      },
      "PickupLocation": [],
      "ProductsSold": [
          {
              "id": "17"
          }
      ],
      "Payment": [],
      "OrderInvoice": [],
      "MlOrder": [],
      "OrderTransactions": [
            {
                "url_payment": "https://intermediador.yapay.com.br/orders/billet/8eb117cdada159753468efe9cd45157c7"
            }
        ],
        "MarketplaceOrder": [],
        "Extensions": [],
        "CustomerAddress": {
            "id": "15"
        },
        "ShippingLabel": {
            "application": "Nome do Aplictivo",
            "url": "https://trayparceiros.commercesuite.com.br?store_id=391250&id=25"
        },
        "payments_notification": {
            "notification": "https://trayparceiros.commercesuite.com.br/loja/retorno_pagamento.php?loja=391250&gateway=5&codigoAcesso=F32QFG02A185CFF¬ification=true"
        },
        "partner_name": ""
    }
}
Campo Tipo Descrição
Order Object Dados do pedido
id Number Código do pedido
status String Status do pedido
date Date Data do pedido
delivery_date Date Data da entrega
hour Hour Horário do pedido
customer_id Number Código do cliente
partial_total Decimal Valor parcial do pedido
taxes Decimal Valor de acréscimo / taxa
discount Decimal Valor de desconto
point_sale String Local de venda
shipment String Tipo de frete
shipment_value Decimal Valor de frete
shipment_date Date Data de envio do pedido
delivered Number Pedido enviado (Veja Tabela A)
store_note String Informações adicionais da loja
customer_note String Informações adicionais do cliente
partner_id Number Código do parceiro
discount_coupon Decimal Código do cupom de desconto
payment_method_rate Decimal Taxa do meio de pagamento
installment Number Quantidade de parcelas
value_1 Decimal Valor
sending_code String Código de envio
sending_date Date Data de envio
billing_address Number Código do endereço de cobrança
delivery_time String Tempo de entrega
payment_method_id Number Código do meio de pagamento
payment_method Number Meio de pagamento
session_id Number Código da sessão
total Number Valor total do pedido
payment_date Date Data de provisionamento ou data de pagamento de acordo com a seleção no painel
access_code String Código de acesso
shipment_integrator String Integrador de envio
modified Date Data de Moticação
id_quotation Number Código externo de cotação de frete (Gateway de Frete)
estimated_delivery_date Number Tempo estimado de entrega
is_traceable Number É rastreavel
external_code String codigo externo
tracking_url String URL de rastreio
has_payment String "se o retorno for 1 - existe pagamento efetuado se o retorno for 0 - não há pagamento confirmado"
has_shipment String "se o retorno for 1 - existe forma de envio se o retorno for 0 - não há forma de envio"
has_invoice String "se o retorno for 1 - existe dados fiscais se o retorno for 0 - ainda não há dados fiscais"
printed String "se o retorno for 1 - o pedido já foi impresso se o retorno for vazio """" - o pedido ainda não foi impresso"
interest Decimal Valor do Juros do Pedido
total_comission_user String Total de commisão por Usuario
total_comission String Total de commisão
OrderStatus Object Detalhes do status do pedido
ProductsSold Object Lista de produtos do pedido
id Number Código dos produtos do pedido
Payment Object Informações de pagamento do pedido
id Number Código de pagamento do pedido
OrderInvoice Object Informações da nota fiscal do pedido
id Number Código da nota fiscal do pedido
CustomerAddress Object Informações de endereço do cliente
id Number Código de endereço do cliente
payments_notification Object Informações de notificação do pedido
ShippingLabel String URL de Impressão da Etiqueta
notification String URL de notificação do pedido

OBS: As Tabelas auxiliares estão logo a baixo do DELETE

Dados Completo do Pedido#get

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/orders/:id/complete'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/orders/:id/complete');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/orders/:id/complete");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/orders/:id/complete")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Requisição para consultar os dados das categorias de forma estruturada.

Método GET

https://{api_address}/orders/:id/complete?access_token={{token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do pedido

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
  "Order": {
      "status": "FINALIZADO",
      "id": "15",
      "date": "2021-02-10",
      "hour": "11:28:21",
      "customer_id": "1",
      "partial_total": "59900.00",
      "taxes": "0.00",
      "discount": "0.00",
      "point_sale": "LOJA VIRTUAL",
      "shipment": "Correios Expresso",
      "shipment_value": "38.91",
      "shipment_date": "",
      "delivered": "",
      "shipping_cancelled": "",
      "store_note": "10/02/2021 11:28:28 Pedido em 1 vez de R$ 62,935.86 através do Boleto - Yapay - Boleto Link da transação: https://intermediador.yapay.com.br/orders/billet/17471d7cd90fd3ee4643e1da0f15",
      "customer_note": "",
      "partner_id": "0",
      "discount_coupon": "",
      "payment_method_rate": "2996.95",
      "installment": "1",
      "value_1": "0.00",
      "sending_code": "",
      "sending_date": "0000-00-00",
      "billing_address": "0",
      "delivery_time": "3",
      "payment_method_id": "80",
      "payment_method": "Boleto - Yapay",
      "session_id": "k8ku3icuvb5uge2qj7u8gbtli6",
      "total": "62935.86",
      "payment_date": "2021-02-10",
      "access_code": "38D071AEFEF4960",
      "shipment_integrator": "Frete Fácil",
      "modified": "2021-05-06 10:38:45",
      "printed": "",
      "interest": "0.00",
      "id_quotation": "3220",
      "estimated_delivery_date": "2021-02-15",
      "is_traceable": "",
      "external_code": "",
      "tracking_url": "",
      "has_payment": "0",
      "has_shipment": "0",
      "has_invoice": "0",
      "total_comission_user": "0.00",
      "total_comission": "0.00",
      "OrderStatus": {
          "id": "69",
          "default": "1",
          "type": "closed",
          "show_backoffice": "1",
          "allow_edit_order": "0",
          "description": "",
          "status": "FINALIZADO",
          "show_status_central": "",
          "background": "#85CC8D"
      },
      "PickupLocation": [],
      "cost": "0",
      "urls": {
          "payment": "https://trayparceiros.commercesuite.com.br/loja/pagamento.php?loja=391250&pedido=38D071AEFEF4960"
      },
      "payment_method_type": "bank_billet",
      "Customer": {
          "cnpj": "",
          "newsletter": "0",
          "created": "0000-00-00 00:00:00",
          "terms": "0000-00-00 00:00:00",
          "id": "1",
          "name": "Nome Cliente",
          "registration_date": "2008-10-14",
          "rg": "",
          "cpf": "12442673177",
          "phone": "1434546185",
          "cellphone": "",
          "birth_date": "0000-00-00",
          "gender": "0",
          "email": "email@tray.com.br",
          "nickname": "",
          "token": "0BBB15A404B6BA1",
          "total_orders": "0",
          "observation": "Teste 2",
          "type": "0",
          "company_name": "",
          "state_inscription": "",
          "reseller": "0",
          "discount": "0.000",
          "blocked": "",
          "credit_limit": "0.00",
          "indicator_id": "0",
          "profile_customer_id": "1",
          "last_sending_newsletter": "0000-00-00",
          "last_purchase": "2021-02-23",
          "last_visit": "2021-02-25",
          "last_modification": "0000-00-00 00:00:00",
          "address": "Rua Teste",
          "zip_code": "17500-000",
          "number": "55",
          "complement": "Casa 26",
          "neighborhood": "Centro",
          "city": "Marília",
          "state": "SP",
          "country": "Brasil",
          "modified": "2021-04-05 09:33:59",
          "Extensions": {
              "Profile": {
                  "id": "1",
                  "name": "Padrao"
              },
              "Profiles": [
                  {
                      "id": "1",
                      "price_list_id": "0",
                      "name": "Padrao",
                      "approves_registration": "0",
                      "show_price": "",
                      "theme_id": "0",
                      "selected": "1"
                  }
              ]
          },
          "CustomerAddresses": [
              {
                  "CustomerAddress": {
                      "id": "7",
                      "customer_id": "1",
                      "address": "Rua Teste",
                      "number": "55",
                      "complement": "Casa 26",
                      "neighborhood": "Centro",
                      "city": "Marília",
                      "state": "SP",
                      "zip_code": "17500-000",
                      "country": "Brasil",
                      "type": "1",
                      "active": "1",
                      "description": "Residencial",
                      "recipient": "",
                      "type_delivery": "1",
                      "not_list": "0"
                  }
              }
          ]
      },
      "ProductsSold": [
          {
              "ProductsSold": {
                  "product_kit_id": "0",
                  "product_kit_id_kit": "0",
                  "id_campaign": "0",
                  "product_id": "13",
                  "quantity": "1",
                  "id": "17",
                  "order_id": "15",
                  "name": "Notebook Alienware Gamer,
                  "original_name": "Notebook Alienware Gamer",
                  "virtual_product": "0",
                  "ean": "",
                  "Sku": [
                      {
                        "type": "Voltagem",
                        "value": "110v"
                      }
                  ],
                  "price": "59900.00",
                  "cost_price": "0.00",
                  "original_price": "59900.00",
                  "weight": "3000",
                  "weight_cubic": "15000",
                  "brand": "Dell Alienware",
                  "model": "area51m",
                  "reference": "",
                  "length": "40",
                  "width": "45",
                  "height": "40",
                  "variant_id": "25",
                  "additional_information": "",
                  "text_variant": "",
                  "warranty": "",
                  "bought_together_id": "0",
                  "ncm": "",
                  "included_items": "",
                  "release_date": "",
                  "commissioner_value": "0.00",
                  "comissao": "0.00",
                  "ProductSoldImage": [
                      {
                        "http": "http://images.tcdn.com.br/img/img_prod/391250/notebook_alienware_gamer_13_1_8396502fb367dd214dd15f06782390c3.png",
                        "https": "https://images.tcdn.com.br/img/img_prod/391250/notebook_alienware_gamer_13_1_8396502fb367dd214dd15f06782390c3.png",
                        "thumbs": {
                            "30": {
                                "http": "http://images.tcdn.com.br/img/img_prod/391250/30_notebook_alienware_gamer_13_1_8396502fb367dd214dd15f06782390c3.png",
                                "https": "https://images.tcdn.com.br/img/img_prod/391250/30_notebook_alienware_gamer_13_1_8396502fb367dd214dd15f06782390c3.png"
                            },
                            "90": {
                                "http": "http://images.tcdn.com.br/img/img_prod/391250/90_notebook_alienware_gamer_13_1_8396502fb367dd214dd15f06782390c3.png",
                                "https": "https://images.tcdn.com.br/img/img_prod/391250/90_notebook_alienware_gamer_13_1_8396502fb367dd214dd15f06782390c3.png"
                            },
                            "180": {
                                "http": "http://images.tcdn.com.br/img/img_prod/391250/180_notebook_alienware_gamer_13_1_8396502fb367dd214dd15f06782390c3.png",
                                "https": "https://images.tcdn.com.br/img/img_prod/391250/180_notebook_alienware_gamer_13_1_8396502fb367dd214dd15f06782390c3.png"
                            }
                          }
                      }
                  ],
                  "Category": [
                      {
                        "id": "5",
                        "name": "Notebooks",
                        "main_category": "0"
                      },
                      {
                        "id": "15",
                        "name": "Gamer",
                        "main_category": "1"
                      }
                  ],
                  "is_giveaway": "",
                  "BoughtTogether": [],
                  "url": {
                    "http": "http://trayparceiros.commercesuite.com.br/notebooks/gamer/notebook-alienware-gamer",
                    "https": "https://trayparceiros.commercesuite.com.br/notebooks/gamer/notebook-alienware-gamer"
                  },
                  "Discount": [],
                  "Stock": {
                    "id": "1",
                    "name": "Loja"
                  }
              }
          }
      ],
      "OrderInvoice": [],
      "Payment": [],
      "MlOrder": [],
      "MarketplaceOrder": [
            {
                "MarketplaceOrder": {
                    "order_id": "123456",
                    "marketplace_name": "Dafiti",
                    "marketplace_seller_name": "Loja",
                    "marketplace_seller_id": "",
                    "marketplace_document": "1154987592",
                    "payment_responsible_document": "11200456549",
                    "marketplace_order_id": "987654",
                    "marketplace_shipping_id": "",
                    "marketplace_shipping_type": "",
                    "marketplace_internal_status": "",
                    "created": "2021-06-11 10:00:51",
                    "updated": "2021-06-11 10:00:51"
                }
            }
        ],
      "OrderTransactions": [
            {
                "url_payment": "https://intermediador.yapay.com.br/orders/billet/8eb117cdada15975368efe9cd45157c7",
                "bank_slip": ""
            }
        ],
        "OrderInvoiceAmount": [],
        "ExtraTabs": [],
        "ShippingLabel": {
            "application": "Nome do Aplicativo",
            "url": "https://trayparceiros.commercesuite.com.br?store_id=391250&id=25"
        },
        "PaymentMethodMessage": {
            "text": "",
            "text_pag": "",
            "text_confirm": "",
            "confirmation": "0"
        },
        "payments_notification": {
            "notification": "https://trayparceiros.commercesuite.com.br/loja/retorno_pagamento.php?loja=391250&gateway=5&codigoAcesso=F32GTQ92A185CFF¬ification=true"
        },
        "partner_name": ""
    },
    "Extensions": [],
    "User": [],
    "Confirmation": []
}
Campo Tipo Descrição
Order Object Dados do pedido
id Number Código do pedido
status String Status do pedido
date Date Data do pedido
delivery_date Date Data da entrega
hour Hour Horário do pedido
customer_id Number Id do usuario
partial_total Decimal Valor parcial do pedido
taxes Decimal Valor de acréscimo / taxa
discount Decimal Valor de desconto
point_sale String Local de venda
shipment String Tipo de frete
shipment_value Decimal Valor de frete
shipment_date Date Data de envio do pedido
delivered Number Pedido enviado (Veja Tabela A)
store_note String Informações adicionais da loja
customer_note String Informações adicionais do cliente
partner_id Number Código do parceiro
discount_coupon Decimal Código do cupom de desconto
PickupLocation String Dados referente ao ponto de coleta dos Correios
shipping_id Number Id da modalidade de frete selecionada
code Number Código da agência no sistema dos Correios em que o produto será retirado
name String Nome da agência dos Correios em que o produto será retirado
address String Dados do endereço da agência dos Correios onde o produto será retirado
value Number Valor do frete
information String Dados gerais sobre a retirada do produto
cellphone Number Telefone para contato da agência
payment_method_rate Decimal Taxa do meio de pagamento
installment Number Quantidade de parcelas
sending_code String Código de envio
sending_date Date Data de envio
billing_address Number Código do endereço de cobrança
delivery_time String Tempo de entrega
payment_method_id Number Código do meio de pagamento
payment_method Number Meio de pagamento
session_id Number Código da sessão
total Number Valor total do pedido
payment_date Date Data de provisionamento ou data de pagamento de acordo com a seleção no painel
modified Number Data de modificação do pedido
id_quotation Number Código externo de cotação de frete (Gateway de Frete)
estimated_delivery_date Number Tempo estimado de entrega
is_traceable Number É rastreavel
external_code String codigo externo
tracking_url String URL de rastreio
has_payment String "se o retorno for 1 - existe pagamento efetuado se o retorno for 0 - não há pagamento confirmado"
has_shipment String "se o retorno for 1 - existe forma de envio se o retorno for 0 - não há forma de envio"
has_invoice String "se o retorno for 1 - existe dados fiscais se o retorno for 0 - ainda não há dados fiscais"
printed String "se o retorno for 1 - o pedido já foi impresso se o retorno for vazio """" - o pedido ainda não foi impresso"
interest Decimal Valor do Juros do Pedido
cupom Object Dados do cupom de desconto
code Object Código do cupom de desconto
discount Object Valor de desconto
Customer Object Dados do cliente
id Number Código do cliente
name String Nome
rg String RG
cpf String CPF
phone String Telefone fixo
cellphone String Telefone celular
birth_date Date Data de aniversário
gender Number Sexo (Veja Tabela C)
email String E-mail
nickname String Apelido
token String Chave única do cliente
total_orders Number Total de pedidos
observation String Informações sobre o cliente
type Number Tipo de cliente (Veja Tabela B)
cnpj String CNPJ
company_name String Razão social
state_inscription String Inscrição estatual
reseller Number Cliente revendedor
discount Decimal Valor de desconto
blocked Number Cliente bloqueado (Veja Tabela F)
credit_limit Decimal Valor de crédito
indicator_id Number Código de indicação
profile_customer_id Number Código do perfil do cliente
last_sending_newsletter Date Data do último envio de newsletter
last_purchase Date Data da última compra
last_visit Date Data da última visita
last_modification Date Data de modificação
address String Logradouro
zip_code String CEP
Number Number Número do endereço
complement String Complemento
neighborhood String Bairro
city String Cidade
state String Sigla do estado
newsletter Number Newsletter ativa
registration_date Date Data de registro
modified Date Data de modificação
CustomerAddresses Object Lista de endereços do cliente
CustomerAddress Object Endereços do cliente
id String Código do endereço do cliente
customer_id String Código do cliente
recipient String Nome do cliente
address String Logradouro
Number Number Número do endereço
complement String Complemento
neighborhood String Bairro
city String Cidade
state String Sigla do estado
zip_code String CEP
country String País
type Number Tipo de endereço (Veja Tabela D)
active Number Endereço ativo (Veja Tabela E)
description String Descrição do Endereço
ProductsSolds Object Lista de produtos vendidos
ProductsSold Object Dados do produto vendido
id Number Código do produto vendido
product_id Number Código do produto
order_id Number Código do pedido
name String Nome do produto
original_price Decimal Valor original
weight Number Peso
weight_cubic Number Peso cúbico
quantity Number Quantidade vendida
model String Modelo
reference String Código de referência
length String Comprimento do produto
width String Largura do produto
height String Altura do produto
variant_id Number Código da variação
additional_information String Informações adicionais
OrderInvoices Object Listagem das notas fiscais
OrderInvoice Object Dados da nota fiscal
id Number Código da nota fiscal
order_id String Código do pedido
issue_date Date Data de emissão
Number String Número da nota fiscal
serie String Série da nota fiscal
value Decimal Valor total da nota fiscal
key String Chave da nota fiscal
link String URL de acesso da nota fiscal
xml_danfe String XML Danfe
ProductCfop Object Dados dos produtos CFOP
product_id Number Código do produto
cfop Number Código CFOP
order_invoice_id Number Código da nota fiscal
Payment Object Informações de pagamento do pedido
Payment Object Informações de pagamento do pedido
id Number Código do pagamento do pedido
order_id Number Código do pedido
payment_method_id Number Código da forma de pagamento
method String Nome da forma de pagamento
payment_place String Local do pagamento
value Decimal Valor do pagamento
date Date Data do pagamento
note String Observação do pagamento
created Date Data de criação do pagamento
modified Date Data de modificação do pagamento
MlOrder Object "Lista de Dados do Mercado Livre *verificar retorno dos campos do ML no rodapé"
MlOrder Object "Dados do Mercado Livre *verificar retorno dos campos do ML no rodapé"
marketplace_name String Nome do Marketplace
marketplace_seller_name String Nome do Seller junto ao marketplace
marketplace_seller_id String Id do vendedor junto ao marketplace
marketplace_document String CNPJ do marketplace
payment_responsible_document String CNPJ do intermediador de pagamento que processou o pagamento
marketplace_order_id String Id do pedido junto ao marketplace
marketplace_shipping_id String Id do envio junto ao marketplace (OBS. Não é o código de rastreio)
marketplace_shipping_type String Tipo de envio do marketplace
marketplace_internal_status String Status do pedido dentro do marketplace
id Number Codigo interno
created Date Data de criação
updated Date Data de atualização
cliente_id Number Código interno do cliente
codigo Number Código do Mercado Livre
item_id String Código do item
user_id Number Código do usuário no Mercado Livre
nickname String Apelido do usuário
mercado_envio String Código do mercado envio
shipment_id Number Código do envio
status_frete_ml String Status de frete do Mercado Livre
substatus_frete_ml String Substatus de frete do Mercado Livre
ml_coleta Number Coleta do Mercado Livre
romaneio_id Number Código do romaneio
invoice_data_id Number Código da data da fatura
service_id Number Código do serviço
order_id Number Código interno do pedido
ml_collect Number Coletado pelo Mercado Livre
shipping_mode String Modo de envio
ShippingLabel String URL de Impressão da Etiqueta
payments_notification Object Informações de notificação do pedido
notification String URL de notificação do pedido

OBS: As Tabelas auxiliares estão logo a baixo do DELETE

Cadastrar Pedido#post

Requisição para consultar os dados das categorias de forma estruturada.

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/orders?access_token={{access_token}}' \
--data-urlencode '["Order"]["point_sale"]=PARTICULAR' \
--data-urlencode '["Order"]["session_id"]=0BBB15A404B6BA1' \
--data-urlencode '["Order"]["shipment"] =Sedex' \
--data-urlencode '["Order"]["shipment_value"]=10.44' \
--data-urlencode '["Order"]["payment_form"]=Boleto - TrayCheckout' \
--data-urlencode '["Order"]["Customer"]["type"]=0' \
--data-urlencode '["Order"]["Customer"]["name"]=Nome do Cliente' \
--data-urlencode '["Order"]["Customer"]["cpf"]=00000000000' \
--data-urlencode '["Order"]["Customer"]["email"]=email@docliente.com' \
--data-urlencode '["Order"]["Customer"]["rg"]=00.000.000-X' \
--data-urlencode '["Order"]["Customer"]["gender"]=M' \
--data-urlencode '["Order"]["Customer"]["phone"]=1133330001' \
--data-urlencode '["Order"]["Customer"]["CustomerAddress"][0]["address"]=Endereço do Cliente' \
--data-urlencode '["Order"]["Customer"]["CustomerAddress"][0]["zip_code"]=04001001' \
--data-urlencode '["Order"]["Customer"]["CustomerAddress"][0]["number"]=123' \
--data-urlencode '["Order"]["Customer"]["CustomerAddress"][0]["complement"]=Sala 123' \
--data-urlencode '["Order"]["Customer"]["CustomerAddress"][0]["neighborhood"] =Bairro do Cliente' \
--data-urlencode '["Order"]["Customer"]["CustomerAddress"][0]["city"]=Cidade do Cliente' \
--data-urlencode '["Order"]["Customer"]["CustomerAddress"][0]["state"]=SP' \
--data-urlencode '["Order"]["Customer"]["CustomerAddress"][0]["country"]=BRASIL' \
--data-urlencode '["Order"]["Customer"]["CustomerAddress"][0]["type"]=1' \
--data-urlencode '["Order"]["Customer"]["ProductsSold"][0]["product_id"]=1' \
--data-urlencode '["Order"]["Customer"]["ProductsSold"][0]["variant_id"]=12' \
--data-urlencode '["Order"]["Customer"]["ProductsSold"][0]["price"]=42.90' \
--data-urlencode '["Order"]["Customer"]["ProductsSold"][0]["original_price"]=42.90' \
--data-urlencode '["Order"]["Customer"]["ProductsSold"][0]["quantity"]=1' \
--data-urlencode '["Order"]["MarketplaceOrder""]["marketplace_name"]=Mercado Livre' \
--data-urlencode '["Order"]["MarketplaceOrder""]["marketplace_seller_name"]=1234567890' \
--data-urlencode '["Order"]["MarketplaceOrder""]["marketplace_seller_id"]=273480425' \
--data-urlencode '["Order"]["MarketplaceOrder""]["marketplace_document"]=0000000000000' \
--data-urlencode '["Order"]["MarketplaceOrder""]["payment_responsible_document"]=0000000000000' \
--data-urlencode '["Order"]["MarketplaceOrder""]["marketplace_order_id"]=4429804558' \
--data-urlencode '["Order"]["MarketplaceOrder""]["marketplace_shipping_id"]=40457395268' \
--data-urlencode '["Order"]["MarketplaceOrder""]["marketplace_shipping_type"]=me2' \
--data-urlencode '["Order"]["MarketplaceOrder""]["marketplace_internal_status"]=shipping'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/orders?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["Order"]["point_sale"]' => 'PARTICULAR',
  '["Order"]["session_id"] ' => '0BBB15A404B6BA1',
  '["Order"]["shipment"] ' => 'Sedex',
  '["Order"]["shipment_value"]' => '10.44',
  '["Order"]["payment_form"]' => 'Boleto - TrayCheckout',
  '["Order"]["Customer"]["type"]' => '0',
  '["Order"]["Customer"]["name"]' => 'Nome do Cliente',
  '["Order"]["Customer"]["cpf"]' => '00000000000',
  '["Order"]["Customer"]["email"]' => 'email@docliente.com',
  '["Order"]["Customer"]["rg"]' => '00.000.000-X',
  '["Order"]["Customer"]["gender"]' => 'M',
  '["Order"]["Customer"]["phone"]' => '1133330001',
  '["Order"]["Customer"]["CustomerAddress"][0]["address"]' => 'Endereço do Cliente',
  '["Order"]["Customer"]["CustomerAddress"][0]["zip_code"]' => '04001001',
  '["Order"]["Customer"]["CustomerAddress"][0]["number"]' => '123',
  '["Order"]["Customer"]["CustomerAddress"][0]["complement"]' => 'Sala 123',
  '["Order"]["Customer"]["CustomerAddress"][0]["neighborhood"] ' => 'Bairro do Cliente',
  '["Order"]["Customer"]["CustomerAddress"][0]["city"]' => 'Cidade do Cliente',
  '["Order"]["Customer"]["CustomerAddress"][0]["state"]' => 'SP',
  '["Order"]["Customer"]["CustomerAddress"][0]["country"]' => 'BRASIL',
  '["Order"]["Customer"]["CustomerAddress"][0]["type"]' => '1',
  '["Order"]["Customer"]["ProductsSold"][0]["product_id"]' => '1',
  '["Order"]["Customer"]["ProductsSold"][0]["variant_id"]' => '12',
  '["Order"]["Customer"]["ProductsSold"][0]["price"]' => '42.90',
  '["Order"]["Customer"]["ProductsSold"][0]["original_price"]' => '42.90',
  '["Order"]["Customer"]["ProductsSold"][0]["quantity"]' => '1',
  '["Order"]["MarketplaceOrder""]["marketplace_name"]' => 'Mercado Livre',
  '["Order"]["MarketplaceOrder""]["marketplace_seller_name"]' => '1234567890',
  '["Order"]["MarketplaceOrder""]["marketplace_seller_id"]' => '273480425',
  '["Order"]["MarketplaceOrder""]["marketplace_document"]' => '0000000000000',
  '["Order"]["MarketplaceOrder""]["payment_responsible_document"]' => '0000000000000',
  '["Order"]["MarketplaceOrder""]["marketplace_order_id"]' => '4429804558',
  '["Order"]["MarketplaceOrder""]["marketplace_shipping_id"]' => '40457395268',
  '["Order"]["MarketplaceOrder""]["marketplace_shipping_type"]' => 'me2',
  '["Order"]["MarketplaceOrder""]["marketplace_internal_status"]' => 'shipping'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/orders?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("[\"Order\"][\"point_sale\"]", "PARTICULAR");
request.AddParameter("[\"Order\"][\"session_id\"]", "0BBB15A404B6BA1");
request.AddParameter("[\"Order\"][\"shipment\"] ", "Sedex");
request.AddParameter("[\"Order\"][\"shipment_value\"]", "10.44");
request.AddParameter("[\"Order\"][\"payment_form\"]", "Boleto - TrayCheckout");
request.AddParameter("[\"Order\"][\"Customer\"][\"type\"]", "0");
request.AddParameter("[\"Order\"][\"Customer\"][\"name\"]", "Nome do Cliente");
request.AddParameter("[\"Order\"][\"Customer\"][\"cpf\"]", "00000000000");
request.AddParameter("[\"Order\"][\"Customer\"][\"email\"]", "email@docliente.com");
request.AddParameter("[\"Order\"][\"Customer\"][\"rg\"]", "00.000.000-X");
request.AddParameter("[\"Order\"][\"Customer\"][\"gender\"]", "M");
request.AddParameter("[\"Order\"][\"Customer\"][\"phone\"]", "1133330001");
request.AddParameter("[\"Order\"][\"Customer\"][\"CustomerAddress\"][0][\"address\"]", "Endereço do Cliente");
request.AddParameter("[\"Order\"][\"Customer\"][\"CustomerAddress\"][0][\"zip_code\"]", "04001001");
request.AddParameter("[\"Order\"][\"Customer\"][\"CustomerAddress\"][0][\"number\"]", "123");
request.AddParameter("[\"Order\"][\"Customer\"][\"CustomerAddress\"][0][\"complement\"]", "Sala 123");
request.AddParameter("[\"Order\"][\"Customer\"][\"CustomerAddress\"][0][\"neighborhood\"] ", "Bairro do Cliente");
request.AddParameter("[\"Order\"][\"Customer\"][\"CustomerAddress\"][0][\"city\"]", "Cidade do Cliente");
request.AddParameter("[\"Order\"][\"Customer\"][\"CustomerAddress\"][0][\"state\"]", "SP");
request.AddParameter("[\"Order\"][\"Customer\"][\"CustomerAddress\"][0][\"country\"]", "BRASIL");
request.AddParameter("[\"Order\"][\"Customer\"][\"CustomerAddress\"][0][\"type\"]", "1");
request.AddParameter("[\"Order\"][\"Customer\"][\"ProductsSold\"][0][\"product_id\"]", "1");
request.AddParameter("[\"Order\"][\"Customer\"][\"ProductsSold\"][0][\"variant_id\"]", "12");
request.AddParameter("[\"Order\"][\"Customer\"][\"ProductsSold\"][0][\"price\"]", "42.90");
request.AddParameter("[\"Order\"][\"Customer\"][\"ProductsSold\"][0][\"original_price\"]", "42.90");
request.AddParameter("[\"Order\"][\"Customer\"][\"ProductsSold\"][0][\"quantity\"]", "1");
request.AddParameter("[\"Order\"][\"MarketplaceOrder\"\"][\"marketplace_name\"]", "Mercado Livre");
request.AddParameter("[\"Order\"][\"MarketplaceOrder\"\"][\"marketplace_seller_name\"]", "1234567890");
request.AddParameter("[\"Order\"][\"MarketplaceOrder\"\"][\"marketplace_seller_id\"]", "273480425");
request.AddParameter("[\"Order\"][\"MarketplaceOrder\"\"][\"marketplace_document\"]", "0000000000000");
request.AddParameter("[\"Order\"][\"MarketplaceOrder\"\"][\"payment_responsible_document\"]", "0000000000000");
request.AddParameter("[\"Order\"][\"MarketplaceOrder\"\"][\"marketplace_order_id\"]", "4429804558");
request.AddParameter("[\"Order\"][\"MarketplaceOrder\"\"][\"marketplace_shipping_id\"]", "40457395268");
request.AddParameter("[\"Order\"][\"MarketplaceOrder\"\"][\"marketplace_shipping_type\"]", "me2");
request.AddParameter("[\"Order\"][\"MarketplaceOrder\"\"][\"marketplace_internal_status\"]", "shipping");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"Order\"][\"point_sale\"]=PARTICULAR&[\"Order\"][\"session_id\"]=0BBB15A404B6BA1&[\"Order\"][\"shipment\"] =Sedex&[\"Order\"][\"shipment_value\"]=10.44&[\"Order\"][\"payment_form\"]=Boleto - TrayCheckout&[\"Order\"][\"Customer\"][\"type\"]=0&[\"Order\"][\"Customer\"][\"name\"]=Nome do Cliente&[\"Order\"][\"Customer\"][\"cpf\"]=00000000000&[\"Order\"][\"Customer\"][\"email\"]=email@docliente.com&[\"Order\"][\"Customer\"][\"rg\"]=00.000.000-X&[\"Order\"][\"Customer\"][\"gender\"]=M&[\"Order\"][\"Customer\"][\"phone\"]=1133330001&[\"Order\"][\"Customer\"][\"CustomerAddress\"][0][\"address\"]=Endereço do Cliente&[\"Order\"][\"Customer\"][\"CustomerAddress\"][0][\"zip_code\"]=04001001&[\"Order\"][\"Customer\"][\"CustomerAddress\"][0][\"number\"]=123&[\"Order\"][\"Customer\"][\"CustomerAddress\"][0][\"complement\"]=Sala 123&[\"Order\"][\"Customer\"][\"CustomerAddress\"][0][\"neighborhood\"] =Bairro do Cliente&[\"Order\"][\"Customer\"][\"CustomerAddress\"][0][\"city\"]=Cidade do Cliente&[\"Order\"][\"Customer\"][\"CustomerAddress\"][0][\"state\"]=SP&[\"Order\"][\"Customer\"][\"CustomerAddress\"][0][\"country\"]=BRASIL&[\"Order\"][\"Customer\"][\"CustomerAddress\"][0][\"type\"]=1&[\"Order\"][\"Customer\"][\"ProductsSold\"][0][\"product_id\"]=1&[\"Order\"][\"Customer\"][\"ProductsSold\"][0][\"variant_id\"]=12&[\"Order\"][\"Customer\"][\"ProductsSold\"][0][\"price\"]=42.90&[\"Order\"][\"Customer\"][\"ProductsSold\"][0][\"original_price\"]=42.90&[\"Order\"][\"Customer\"][\"ProductsSold\"][0][\"quantity\"]=1&[\"Order\"][\"MarketplaceOrder\"\"][\"marketplace_name\"]=Mercado Livre&[\"Order\"][\"MarketplaceOrder\"\"][\"marketplace_seller_name\"]=1234567890&[\"Order\"][\"MarketplaceOrder\"\"][\"marketplace_seller_id\"]=273480425&[\"Order\"][\"MarketplaceOrder\"\"][\"marketplace_document\"]=0000000000000&[\"Order\"][\"MarketplaceOrder\"\"][\"payment_responsible_document\"]=0000000000000&[\"Order\"][\"MarketplaceOrder\"\"][\"marketplace_order_id\"]=4429804558&[\"Order\"][\"MarketplaceOrder\"\"][\"marketplace_shipping_id\"]=40457395268&[\"Order\"][\"MarketplaceOrder\"\"][\"marketplace_shipping_type\"]=me2&[\"Order\"][\"MarketplaceOrder\"\"][\"marketplace_internal_status\"]=shipping");
Request request = new Request.Builder()
  .url("https://{api_address}/orders?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Método POST

https://{api_address}/orders?access_token={{token}}

Parâmetros enviados:

Estrutura do Json:

{
    "Order":{
      "point_sale":"PARTICULAR",
      "session_id": "0BBB15A404B6BA1",
      "shipment":"Sedex",
      "shipment_value":"10.44",
      "payment_form":"Boleto - TrayCheckout",
      "Customer":{"type":"0",
      "name":"Nome do Cliente",
      "cpf":"00000000000",
      "email":"email@docliente.com",
      "rg":"00.000.000-X",
      "gender":"M",
      "phone":"1133330001",
      "CustomerAddress":[{
          "address":"Endereço do Cliente",
          "zip_code":"04001001",
          "number":"123",
          "complement":"Sala 123",
          "neighborhood":"Bairro do Cliente",
          "city":"Cidade do Cliente",
          "state":"SP",
          "country":"BRA",
          "type":"1"
          }
      ]},
      "ProductsSold":[{
          "product_id":1,
          "variant_id":12,
          "price":"42.90",
          "original_price":"42.90",
          "quantity":1  
        }
      ],
      "MarketplaceOrder": [{
          "marketplace_name": "Mercado Livre",
          "marketplace_seller_name": "1234567890",
          "marketplace_seller_id": "273480425",
          "marketplace_document": "0000000000000",
          "payment_responsible_document": "0000000000000",
          "marketplace_order_id": "4429804558",
          "marketplace_shipping_id": "40457395268",
          "marketplace_shipping_type": "me2",
          "marketplace_internal_status": "shipping"
        }
      ]
    }    
}
Campo Tipo Descrição
access_token String Chave de acesso
Order JSON Dados do pedido
point_sale String (45) Local de venda
session_id String Sessão do Pedido
shipment String (100) Tipo de frete
shipment_value Decimal (9) Valor de frete
payment_form String (50) Forma de pagamento
Customer Object Informações do cliente
type Object Tipo do cliente (Veja Tabela B)
name Object (300) Nome completo do cliente
cpf Object CPF do cliente
email Object (100) E-mail do cliente
rg Object RG do cliente
gender Object (1) Sexo do cliente (Veja Tabela C)
phone Object Telefone do cliente
CustomerAddress Object (200) Informações de endereços do cliente
address Number (9) Logradouro
zip_code Number (8) CEP
number Number (9) Número
complement Number (60) Complemento
neighborhood Number (100) Bairro
city Number (200) Cidade
state Number (2) Sigla do estado
country Number (3) Sigla do país
type Number Tipo de endereço (Veja Tabela D)
ProductsSold Object Lista de produtos do pedido
product_id Number Código do produto
variant_id Number Código da variação do produto
price Number Preço do produto
original_price Number Valor original do produto
quantity Number Quantidade vendida do produto
marketplace_name String Nome do Marketplace
marketplace_seller_name String Nome do Seller junto ao marketplace
marketplace_seller_id String Id do vendedor junto ao marketplace
marketplace_document String CNPJ do marketplace
payment_responsible_document String CNPJ do intermediador de pagamento que processou o pagamento
marketplace_order_id String Id do pedido junto ao marketplace
marketplace_shipping_id String Id do envio junto ao marketplace (OBS. Não é o código de rastreio)
marketplace_shipping_type String Tipo de envio do marketplace
marketplace_internal_status String Status do pedido dentro do marketplace

OBS: As Tabelas auxiliares estão logo a baixo do DELETE

Retorno em caso de sucesso (status code 200 ou 201):

Retorno de Sucesso:

{       
    "message":"Created",    
    "id":"123",    
    "code":201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do pedido
code Number Código do retorno (201)

Atualizar Dados do Pedido#put

Requisição para alterar os dados de um pedido. Deverá enviar o JSON com os dados do pedido para a alteração.

Código de Exemplo:

curl --location -g --request PUT 'https://{api_address}/orders/:id?access_token={{access_token}}' \
--data-urlencode '["Order"]["status_id"]=16' \
--data-urlencode '["Order"]["taxes"]=0.01' \
--data-urlencode '["Order"]["shipment"]=Sedex' \
--data-urlencode '["Order"]["shipment_value"]=5.58' \
--data-urlencode '["Order"]["discount"]=0.01' \
--data-urlencode '["Order"]["sending_code"]=123456' \
--data-urlencode '["Order"]["sending_date"]=2015-04-20' \
--data-urlencode '["Order"]["tracking_url"]=www.urlderastreio.com.br' \
--data-urlencode '["Order"]["store_note"]=Pedido em 1 vez de R$ 51,85 através do Boleto.' \
--data-urlencode '["Order"]["customer_note"]=' \
--data-urlencode '["Order"]["partner_id"]=2'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/orders/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_PUT);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["Order"]["status_id"]' => '16',
  '["Order"]["taxes"]' => '0.01',
  '["Order"]["shipment"]' => 'Sedex',
  '["Order"]["shipment_value"]' => '5.58',
  '["Order"]["discount"]' => '0.01',
  '["Order"]["sending_code"]' => '123456',
  '["Order"]["sending_date"]' => '2015-04-20',
  '["Order"]["store_note"]' => 'Pedido em 1 vez de R$ 51,85 através do Boleto.',
  '["Order"]["customer_note"]' => '',
  '["Order"]["partner_id"]' => '2'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/orders/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.PUT);
request.AddParameter("[\"Order\"][\"status_id\"]", "16");
request.AddParameter("[\"Order\"][\"taxes\"]", "0.01");
request.AddParameter("[\"Order\"][\"shipment\"]", "Sedex");
request.AddParameter("[\"Order\"][\"shipment_value\"]", "5.58");
request.AddParameter("[\"Order\"][\"discount\"]", "0.01");
request.AddParameter("[\"Order\"][\"sending_code\"]", "123456");
request.AddParameter("[\"Order\"][\"sending_date\"]", "2015-04-20");
request.AddParameter("[\"Order\"][\"store_note\"]", "Pedido em 1 vez de R$ 51,85 através do Boleto.");
request.AddParameter("[\"Order\"][\"customer_note\"]", "");
request.AddParameter("[\"Order\"][\"partner_id\"]", "2");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"Order\"][\"status_id\"]=16&[\"Order\"][\"taxes\"]=0.01&[\"Order\"][\"shipment\"]=Sedex&[\"Order\"][\"shipment_value\"]=5.58&[\"Order\"][\"discount\"]=0.01&[\"Order\"][\"sending_code\"]=123456&[\"Order\"][\"sending_date\"]=2015-04-20&[\"Order\"][\"store_note\"]=Pedido em 1 vez de R$ 51,85 através do Boleto.&[\"Order\"][\"customer_note\"]=&[\"Order\"][\"partner_id\"]=2");
Request request = new Request.Builder()
  .url("https://{api_address}/orders/:id?access_token={{access_token}}")
  .method("PUT", body)
  .build();
Response response = client.newCall(request).execute();

Método PUT

https://{api_address}/orders/:id?access_token={{token}}

Parâmetros enviados:

Estrutura do Json:

{
    "Order": {
        "status_id": "16",
        "taxes": "0.01",
        "shipment": "Sedex",
        "shipment_value": "0.01",
        "discount": "0.01",
        "sending_code": "123456",
        "sending_date": "2015-04-20",
        "tracking_url": "www.urlderastreio.com.br",
        "store_note": "Pedido em 1 vez de R$ 51,85 através do Boleto.",
        "customer_note": "",
        "partner_id": "2"
    }
}
Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do pedido
Order JSON Dados do pedido
status_id Number Código de status do pedido
taxes Decimal Valor de acréscimo / taxa
shipment Decimal Tipo de frete
shipment_value Decimal Valor de frete
discount Decimal Valor de desconto
sending_code String Código de envio
sending_date Date Data de envio
tracking_url String URL de rastreio
store_note String Informações adicionais da loja
customer_note String Informações adicionais do cliente
partner_id Number Código do parceiro

OBS: As Tabelas auxiliares estão logo a baixo do DELETE

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{       
    "message":"Saved",    
    "id":"123",    
    "code":200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do pedido
code Number Código do retorno (201)

Cancelar Pedido#put

Requisição para cancelar um pedido.

Método PUT

https://{api_address}/orders/cancel/:id?access_token={{token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do pedido

Retorno em caso de sucesso(status code 200 ou 201):

Retorno de Sucesso:

{       
    "message":"Saved",    
    "id":"123",    
    "code":200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do pedido
code Number Código do retorno (201)

Incluir Produtos no Pedido#post

Requisição para inclusão de um produto no pedido. Deverá enviar o JSON com os dados do produto para inclusão do mesmo no pedido.

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/orders/includeProduct/:order_id?access_token={{access_token}}' \
--data-urlencode '["ProductsSold"]["product_id"]=9999' \
--data-urlencode '["ProductsSold"]["variant_id"]=123' \
--data-urlencode '["ProductsSold"]["price"]=55.80' \
--data-urlencode '["ProductsSold"]["original_price"]=55.80' \
--data-urlencode '["ProductsSold"]["quantity"]=1'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/orders/includeProduct/:order_id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["ProductsSold"]["product_id"]' => '9999',
  '["ProductsSold"]["variant_id"]' => '123',
  '["ProductsSold"]["price"]' => '55.80',
  '["ProductsSold"]["original_price"]' => '55.80',
  '["ProductsSold"]["quantity"]' => '1'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/orders/includeProduct/:order_id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("[\"ProductsSold\"][\"product_id\"]", "9999");
request.AddParameter("[\"ProductsSold\"][\"variant_id\"]", "123");
request.AddParameter("[\"ProductsSold\"][\"price\"]", "55.80");
request.AddParameter("[\"ProductsSold\"][\"original_price\"]", "55.80");
request.AddParameter("[\"ProductsSold\"][\"quantity\"]", "1");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"ProductsSold\"][\"product_id\"]=9999&[\"ProductsSold\"][\"variant_id\"]=123&[\"ProductsSold\"][\"price\"]=55.80&[\"ProductsSold\"][\"original_price\"]=55.80&[\"ProductsSold\"][\"quantity\"]=1");
Request request = new Request.Builder()
  .url("https://{api_address}/orders/includeProduct/:order_id?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Método POST

https://{api_address}/orders/includeProduct/{order_id}?access_token={{token}}

Parâmetros enviados:

Estrutura do Json:

{
    "ProductsSold": {
        "product_id": "9999",
        "variant_id": "123",
        "price": "55.80",
        "original_price": "55.80",
        "quantity": "1"
    }
}
Campo Tipo Descrição
access_token String Token de acesso
:order_id String Código do pedido
ProductsSold JSON Dados do Produto
product_id Number Código produto
variant_id Number Código da variação
price Decimal Valor de venda do produto / variação
original_price Decimal Valor original do produto / variação
quantity Number Quantidade do roduto / variação

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{       
    "message":"Success",    
    "id":"123",    
    "code":201
}
Campo Tipo Descrição
message String Mensagem de retorno
order_id Number Código do pedido
code Number Código do retorno (201)

Excluir Produto do Pedido#delete

Requisição para excluir um produto do pedido.

Código de Exemplo:

curl --location -g --request PUT 'https://{api_address}/orders/excludeProduct/:order_id/:product_id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/orders/excludeProduct/:order_id/:product_id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_PUT);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/orders/excludeProduct/:order_id/:product_id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.PUT);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://{api_address}/orders/excludeProduct/:order_id/:product_id?access_token={{access_token}}")
  .method("PUT", body)
  .build();
Response response = client.newCall(request).execute();

Método DELETE

https://{api_address}/orders/excludeProduct/:order_id/:product_id?access_token={{token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Token de acesso
:order_id String Código do pedido
:product_id String Código do produto

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{       
    "message":"Success",    
    "id":"123",    
    "code":200
}
Campo Tipo Descrição
message String Mensagem de retorno
order_id Number Código do pedido
code Number Código do retorno (201)

Tabelas Auxiliares de Pedidos

Tabela A - Confirmação de pedido enviado (campo delivered)

Campo Tipo
0 Pedido não enviado
1 Pedido enviado

Tabela B - Tipo do cliente (campo Customer.type)

Campo Tipo
0 Pessoa física
1 Pessoa jurídica

Tabela C - Sexo do cliente (campo Customer.gender)

Campo Tipo
0 Masculino
1 Feminino

Tabela D - Tipo de endereço do cliente (campo Customer.CustomerAddress.type)

Campo Tipo
0 Endereço de cobrança
1 Endereço de entrega
2 Endereço do tipo lista de presente

Tabela E - Tipo de status do pedido (campo OrderStatus.default)

Campo Tipo
0 Status padrão
1 Status adicional

Tabela F - Bloqueio do cliente (campo blocked)

Campo Tipo
0 Cliente desbloqueada
1 Cliente bloqueada

Tabela G - Tipo de arquivo da etiqueta (campo type)

Campo Tipo
0 Arquivo ZPL2
1 Arquivo PDF

Retorno da API dentro de Pedidos Completo, quando á venda ocorrer no Mercado Livre

Retorno dos campos:

Exemplo de retorno do MLorder:

{

    "MlOrder": [
        {
        "MlOrder": {
            "id": "1919191111",
            "created": "2020-08-03 17:05:11",
            "updated": "2020-08-03 17:05:11",
            "pedido_id": "9874566666",
            "cliente_id": "664654",
            "codigo": "9415263",
            "item_id": "MLB1111111111",
            "item_quantity": "1",
            "item_title": "Nome do produto",
            "user_id": "2222222",
            "nickname": "APELIDO",
            "mercado_envio": "me2",
            "shipment_id": "44444444444",
            "pack_id": "",
            "status_frete_ml": "shipped",
            "substatus_frete_ml": "out_for_delivery",
            "ml_coleta": "1",
            "romaneio_id": "0",
            "invoice_data_id": "161616166",
            "service_id": "151515",
            "logistic_type": "fulfillment",
            "messages_locked_by": "",
            "date_delivered": "0000-00-00",
            "estimated_delivery_time": "2020-08-04",
            "estimated_handling_limit": "2020-08-03",
            "shipping_option_id": "3133133133",
            "pickup_id": "",
            "order_id": "88888",
            "ml_collect": "1",
            "shipping_mode": "me2",
            "shipping_status": "shipped",
            "shipping_substatus": "out_for_delivery"
        }
    }
    ]
}
Campo Tipo Descrição
MlOrder String Retorno dos dados do Mercado Livre
id String Id do pedido no MLorders - Controle Tray
created String Data da criação do pedido na Tray
updated String Data da ultima atualização do pedido
pedido_id String ID do pedido na Tray
cliente_id String ID do cliente na Tray
codigo String Código da venda no Mercado Livre
item_id String Anúncio do Mercado Livre comprado
item_quantity String Quantidade do anúncio que foi comprado
item_title String Nome do produto comprado
user_id String ID do apelido que teve venda
nickname String Nome do apelido que teve venda
mercado_envio String Tipo de envio da venda.
shipment_id String Código que identifica o envio no ML
pack_id String ID do carrinho, quando ocorre venda de mais de 1 produto.
status_frete_ml String Status do shipments no ML
substatus_frete_ml String Substatus do shipments no ML
ml_coleta String Se é um serviço de coleta do ML (0 ou 1)
romaneio_id String Não é mais utilizado, não precisa ser mais considerado no fluxo da aplicação
invoice_data_id String ID da nota fiscal no ML.
service_id String Identificação do ID de serviço no ML.
logistic_type String Tipo de logistica do envio. Dado com base na API do ML
messages_locked_by String Campo interno Tray. É utilizado pra controlar qual usuario ta enviando mensagens nesse pedido no momento, para que outro usuario não tente mandar ao mesmo tempo
date_delivered String Data quando foi entregue o pedido.
estimated_delivery_time String Estimativa de entrega
estimated_handling_limit String Data-limite para o vendedor encaminhar
shipping_option_id String Id do shipments option da API do ML
pickup_id String ID do pickup quando existente
order_id String ID do pedido na Tray
ml_collect String Se é um serviço de coleta do ML (0 ou 1)
shipping_mode String Tipo de entrega no ML
shipping_status String Status do shipments no ML
shipping_substatus String Substatus do shipments no ML

API de Integração de Frete

Integração de Frete

Atualmente disponibilizamos duas formas para integração de frete.

Integração Gateway de Frete Descrição
Objetivo Disponibilizar cotações de frete ao lojista, conforme disponibilidade de envio do integrador
Funcionalidade "A integração via Gateway de Frete, não é necessário um aplicativo para disponibilizar as cotações. Conforme a documentação, você precisará apenas disponibilizar uma url para integrar com a loja do cliente. A informação da url e o token, são disponibilizado no painel administrativo da loja, dessa forma, para efetuar o cadastro da url do Gateway de Frete, o integrador deverá informar o lojista para que o mesmo efetue a configuração da url e o token dentro da loja para integração do Gateway de Frete, lembrando que o token deverá ser fornecido por loja que integrar e o mesmo deverá ser fixo. Esse token do Gateway de Frete, ele não pode ser atualizado, ele deverá ser fixo por loja."

imagem

Integração API de Frete Descrição
Usabilidade Geralmente utilizada pelos MARKETPLACES e serviços externos, para realizar uma cotação fora da loja
Objetivo Realizar cotações e listar formas de envio mediante configurações na loja, atualizando os pedidos da loja, conforme necessidade
Funcionalidade "Conforme a documentação informada acima, para acessar alguma informação do cliente e realizar cotação de frete ou inserir rastreio, será necessário realizar ter acesso a API de Frete e API do Pedido. No entanto, para consumir qualquer tipo de API, atualmente é obrigatório possuir o aplicativo credenciado junto a plataforma, pois através desse aplicativo, será possível gerar uma chave chamada access_token, onde poderá realizar a integração com a Tray e realizar o consumo das APIs. Para isso, será necessário primeiramente entrar em contato diretamente com a nossa equipe de parcerias"

No caso de algumas Transportadoras, elas possuem dois tipos de integração:

1- Integração via Gateway de Frete (utilizada para cotação de frete);

2- Integração via Aplicativo - API Rest (utilizada para manutenção de pedidos)

Onde no Gateway elas disponibilizam a url e o token diretamente ao lojista e na integração via aplicativo, utilizando a API de Pedidos ela envia os dados para o pedido do cliente. Lembrando que para integrar o aplicativo, é necessário contatar nossa equipe de parcerias.

imagem

Gateway de Frete

Integração com o Gateway de Frete

Por padrão, para realizar a integração de frete dentro da Tray, a Transportadora/Integradora, deverá integrar por meio de um Gateway de Frete, ou seja, deverá ser disponibilizado para os nosso lojistas uma url e um token, para que os mesmo configurem diretamente no painel administrativo deles. Atualmente, esse processo é um processo simples e prático para que os nossos lojistas possam ter diversas opções de fretes, na hora do consumidor final realizar a cotação.

Como funciona o processo de Integração de Gateway de Frete:

Para disponibilizar a cotação no front da loja, a Tray irá realizar o envio de uma requisição para a url de gateway do integrador, com esses parâmetros (cep | cep_destino | num_ped (número do pedido) | prods (dados do produto)) e a url do integrador deverá retornar com o valor da cotação no front da loja.

Como o lojista irá habilitar o Gateway de Frete no painel administrativo dele:

https://atendimento.tray.com.br/hc/pt-br/articles/360020060232-Como-Habilitar-o-Gateway-de-Frete-Para-integra%C3%A7%C3%A3o-com-Transportadoras-

Lembrando que, a integração por parte da Tray, ocorre de forma passiva, devendo o desenvolvimento da url de Gateway de frete ocorrer do lado da Transportadora/Integradora, a Tray apenas irá realizar o envio dos parâmetros informados acima, desde que a url do Gateway esteja certa e disponível e receber o retorno da cotação, desde que o desenvolvimento desse processo esteja ok, qualquer divergência no retorno da cotação, o integrador deverá validar sua aplicação.

Existe alguma alternativa de integração de frete, fora o Gateway de Frete? Sim.

Segue abaixo:

O lojista terá a opção de integrar o frete de uma Transportadora, por meio de uma planilha em Excel, a qual a Transportadora deverá encaminhar para ele e o mesmo poderá subir diretamente em seu painel administrativo. Essa planilha deverá conter dados de frete por faixa de cep.

Segue documentação para Importar o frete por faixa de ceps: https://atendimento.tray.com.br/hc/pt-br/articles/115010345068-Importa%C3%A7%C3%A3o-de-tabela-de-faixa-de-cep

OBSERVAÇÃO: Em caso de dúvidas sobre esse processo de integração, deverá ser aberto um chamado diretamente para equipe de atendimento, para que os mesmos possam lhe auxiliar, pois neste canal, trataremos apenas de integração via Gateway de Frete ou API. Para abrir um chamado ao atendimento, favor acessar o link: https://atendimento.tray.com.br/hc/pt-br/requests/new e em "Precisa de ajuda com sua loja virtual?" escolher o escopo: "CONFIGURAÇÕES DE FRETE".

Sobre importação de tabelas de frete:

Há também, outros tipos de importações de frete, por meio de tabelas personalizadas.

Segue a documentação da importação dessas tabelas personalizadas: https://atendimento.tray.com.br/hc/pt-br/sections/360002254752-Tabelas-Personalizadas

OBSERVAÇÃO: Em caso de dúvidas sobre esse processo de integração, deverá ser aberto um chamado diretamente para equipe de atendimento, para que os mesmos possam lhe auxiliar, pois neste canal, trataremos apenas de integração via Gateway de Frete ou API. Para abrir um chamado ao atendimento, favor acessar o link: https://atendimento.tray.com.br/hc/pt-br/requests/new e em "Precisa de ajuda com sua loja virtual?" escolher o escopo: "CONFIGURAÇÕES DE FRETE".

Documentações Gerais:

https://atendimento.tray.com.br/hc/pt-br/categories/360000452772-Frete-e-Envio

FRETE X API

Atualmente, a API que disponibilizamos para cotação de frete, não é para retornar a cotação no front da loja e sim para realizar apenas uma cotação pontual, fora da loja.

Caso a Transportadora/Integradora necessite automatizar alguma parte de seu processo ou necessite realizar consultas e/ou alterações no pedido do cliente, ela precisará consumir nossas APIs, para isso, a mesma deverá se credenciar como Parceira da Tray, contatando nosso time de Relacionamento de Parcerias, através deste link: https://www.tray.com.br/parceiros/quero-ser-parceiro/

Para a integração com o Gateway de Frete, deverá ser construído pelo parceiro um modelo de integração que receba e retorne os dados de cotação de frete seguindo o modelo predefinido pela Tray. A url que integrador disponibilizará para realizar as cotações, deverá ser uma url preparada tanto para enviar o retorno das cotações, quanto para receber as informações da Tray através de parâmetros na url. No caso esses parâmetros necessário para cotação, como os ceps e dados do produto, a Tray irá enviar para a url configurada no Gateway de Frete. Essa será as informações que serão enviadas de forma automática para sua url, (toda vez que houver uma cotação na loja), desde que a mesma esteja preparada para receber. A preparação dessa url deverá ser desenvolvida diretamente no lado da aplicação de vocês, da forma que desejarem.

Consultar Informações de Frete

Para a consulta, deverá ser disponibilizada uma URL para envio (via GET) dos dados da consulta de frete.

Abaixo segue os dados enviados para a URL:

Exemplo da URL enviada para consultar os dados de frete:

http://www.cotacaomodelo.com.br/cotacao?token=123ABC456DEF&cep=04001001 
&cep_destino=04001001&envio=1&num_ped=1&session_id=bengn5mowbdrqkm0rlnilpdtg8& 
prods=0.2;0.2;0.2;0.008;1;0.1;6;43.99/0.3;0.22;0.5;0.033;2;0.235;8;151.33
Parâmetros Enviados Descrição
token Chave para identificação da loja no gateway
cep CEP de origem (Vendedor)
cep_destino CEP de destino (Comprador)
envio Sempre é enviado o valor 1
num_ped Número do pedido. Sempre enviado 1 na cotação devido não existir o pedido.
prods Produto(s) para calculo do frete.
session_id Código da sessão do usuário

No campo prods são enviados todos os dados dos produtos, onde cada produto é separado por uma barra (/). Já os valores dos produtos são separados por ponto e virgulá (;), onde os valores são respectivamente o comprimento(em metros), largura(em metros), altura(em metros), cubagem(em metros cúbicos), quantidade(unitário), peso(em kg, por unidade), código produto(na plataforma), valor(unitário).

Retorno da Consultar de Frete

Após a consulta, é necessário o retorno de um XML, em um padrão predefinido, para possibilitar a exibição dessas informações no momento da consulta de frete na loja.

O retorna da url deverá ser no formato exclusivamente em XML, de acordo com o exemplo disponibilizado abaixo:

<?xml version="1.0"?>
<cotacao>
    <resultado>
        <codigo>03220</codigo>
        <transportadora></transportadora>
        <servico>SEDEX</servico>
        <transporte>TERRESTRE</transporte>
        <valor>111.34</valor>
        <peso>5.334</peso>
        <prazo_min>2</prazo_min>
        <prazo_max>2</prazo_max>
        <imagem_frete>https://fretefacil.tray.com.br/images/sedex.png</imagem_frete>
        <aviso_envio></aviso_envio>
        <entrega_domiciliar>1</entrega_domiciliar>
    </resultado>
    <resultado>
        <codigo>03298</codigo>
        <transportadora></transportadora>
        <servico>PAC</servico>
        <transporte>TERRESTRE</transporte>
        <valor>59.14</valor>
        <peso>5.334</peso>
        <prazo_min>9</prazo_min>
        <prazo_max>9</prazo_max>
        <imagem_frete>https://fretefacil.tray.com.br/images/pac.png</imagem_frete>
        <aviso_envio></aviso_envio>
        <entrega_domiciliar>1</entrega_domiciliar>
    </resultado>
</cotacao>
XML de Retorno Descrição
cotacao Dados da sotação
resultado Resultado(s) da consulta
codigo Código do cotação
transportadora Nome da Transportadora
servico Nome do serviço
transporte Tipo de transporte
peso Peso completo da encomenda
valor Valor da cotação
prazo_min Prazo mínimo de entrega
prazo_max Prazo máximo de entrega
imagem_frete URL da imagem do tipo de frete

Obs: o tamanho da imagem no campo imagem_frete, deverá possuir a seguinte configuração: Formato: PNG; Tamanho: 120x120px

Configuração do Gateway na Loja

Para configurar o Gateway de Frete na loja, basta acessar o menu Configurações > Frete e envio na área administrativa da loja.

Após acessar, clique no botão Integrações externas:

imagem

Mantenha habilitada e digite um nome para identificar a integração. Depois clique em continuar:

imagem

Preencha a URL do WebService e o token de identificação do cliente (este é o token que será enviado via GET na consulta do frete). Depois clique em Salvar.

imagem

OBS: No momento que salvar estas configurações, a URL do WebService deve retornar um XML válido, senão as configurações são desconsideradas.

Após salvar, o gateway já estará disponível na consulta da loja.

As APIs de Frete disponibiliza o consultar as informações de frete, por aplicações externas, conforme cadastrados dentro da plataforma Tray

Cálculo de Frete#get

Requisição para consultar os dados de diversas formas de envio.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/shippings/cotation/?access_token={{access_token}}&zipcode=04001001&products[0][product_id]=123&products[0][price]=58.90&products[0][quantity]=2&products[1][product_id]=456&products[1][price]=98.89&products[1][quantity]=1'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/shippings/cotation/?access_token={{access_token}}&zipcode=04001001&products[0][product_id]=123&products[0][price]=58.90&products[0][quantity]=2&products[1][product_id]=456&products[1][price]=98.89&products[1][quantity]=1');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/shippings/cotation/?access_token={{access_token}}&zipcode=04001001&products[0][product_id]=123&products[0][price]=58.90&products[0][quantity]=2&products[1][product_id]=456&products[1][price]=98.89&products[1][quantity]=1");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/shippings/cotation/?access_token={{access_token}}&zipcode=04001001&products[0][product_id]=123&products[0][price]=58.90&products[0][quantity]=2&products[1][product_id]=456&products[1][price]=98.89&products[1][quantity]=1")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/shippings/cotation/?access_token={{access_token}}&zipcode=04001001&products[0][product_id]=123&products[0][price]=58.90&products[0][quantity]=2&products[1][product_id]=456&products[1][price]=98.89&products[1][quantity]=1

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
zipcode Number CEP do comprador
products Array[ ] Código do produto
product_id Number Código do produto
price Decimal Preço do produto
quantity Number Quantidade do produto

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "Shipping": {
        "origin": {
            "zipcode": "04001001",
            "address": "Endereço de Origem, 123",
            "neighborhood": "Bairro de Origem",
            "city": "São Paulo",
            "state": "SP"
        },
        "destination": {
            "zipcode": "04001001",
            "address": "Endereço de Destino, 123",
            "neighborhood": "Bairro de Destino",
            "city": "São Paulo",
            "state": "SP"
        },
        "cotation": [
            {
                "id": "1",
                "id_quotation": "1",
                "name": "Nome da Forma de Envio 1",
                "identifier": "forma_envio_1",
                "value": "35.10",
                "min_period": "2",
                "max_period": "8",
                "estimated_delivery_date": "2016-08-15",
                "information": "Prazo de entrega: de 02 a 08 dias úteis.",
                "taxe": {
                    "name": "Emissão de Nota Fiscal",
                    "value": "0"
                }
           },
           {
                "id": "2",
                "id_quotation": "2",
                "name": "Nome da Forma de Envio 2",
                "identifier": "forma_envio_2",
                "value": "16.20",
                "min_period": "3",
                "max_period": "10",
                "estimated_delivery_date": "2016-08-30",
                "information": "Prazo de entrega: 03 a 10 dias úteis.",
                "taxe": {
                    "name": "Emissão de Nota Fiscal",
                    "value": "0"
                }
            }
        ]
    }
}
Campo Tipo Descrição
Shipping Object Dados da forma de envio
origin Object Dados de origem
zipcode String CEP de origem
address String Endereço de origem
neighborhood String Bairro de origem
city String Cidade de origem
state String Estado de origem
destination Object Endereço do destinatário
zipcode String CEP do destinatário
address String Endereço do destinatário
neighborhood String Bairro do destinatário
city String Cidade do destinatário
state String Estado do destinatário
cotation Object[ ] Dados do cálculo de frete
id Number Código da forma de envio
id_quotation Number Código externo de cotação de frete (Gateway de Frete)
name String Nome da forma de envio
value Decimal Valor de frete
min_period Number Período mínimo
max_period Number Período máximo
estimated_delivery_date Number Tempo estimado de entrega
information String Informações sobre a cotação
taxe Object Dados do acréscimo / taxa
name String Nome do acréscimo / taxa
value Decimal Valor de acréscimo / taxa

Listagem de Formas de Envio#get

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/shippings/?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/shippings/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/shippings/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/shippings/?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/shippings/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do cliente
status Number Status da forma de envio (Veja Tabela A)

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "paging": {
        "total": 6,
        "page": 1,
        "offset": 0,
        "limit": 30,
        "maxLimit": 50
    },
    "sort": [
        {
            "id": "asc"
        }
    ],
    "availableFilters": [
        "status",
        "gateway"
    ],
    "appliedFilters": [],
    "Shippings": [
        {
            "Shipping": {
                "id": "1",
                "cod": "1",
                "name": "Sedex",
                "identifier": "sedex_1",
                "display_name": "Sedex",
                "status": "1",
                "gateway": "0"
            }
        }
    ]
}
Campo Tipo Descrição
paging Object Dados de paginação
total Number Total de registros
page Number Páginas corrente
offset Number Registro inicial da página
limit Number Limite de registros
maxLimit Number Máximo de registros
sort Object[ ] Ordenação
availableFilters String[ ] Filtros disponíveis
appliedFilters String[ ] Filtros utilizados
Shippings Object[ ] Lista das forma de envio
Shipping Object Dados da forma de envio
id Number Código da forma de envio
cod String Código secundário da forma de envio
name String Nome da forma de envio
display_name String Nome de exibição
status String Status da forma de envio (Veja Tabela A)
gateway Number

Tabela Auxiliar de Forma de Envio

Tabela A - Disponibilidade do produto (campo available)

Valor Descrição
0 Forma de envio inativa
1 Forma de envio ativa

API de Configuração de Forma de Frete

Criação de forma de envio com integração externa#post

Ao clicar no pedido para gerar a etiqueta, iremos abrir um IFRAME do aplicativo, onde deverá conter neste iframe a opção de imprimir a etiqueta.

Dessa forma o aplicativo deverá cadastrar na loja a URL que deverá ser chamada para abrir o iframe.

Estrutura do Json:

{
    "Shipping": {
        "active": "1",
        "name": "Gateway Teste",
        "product_rate": "4",
        "additional_order": "7",
        "shipping_rate": "9",
        "type": "6",
        "customer_message": "Oi",
        "settings": {
            "url": "www.gatewayteste.com.br",
            "token": "abc123def4567"
        }
    }
}

Método POST

https://{api_address}/shippings/method/gateway?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "2659",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da tabela
code Number Código do retorno (201)

Alteração da forma de envio com integração externa pelo ID#put

Estrutura do Json:

{
    "Shipping": {
        "name": "Tabela de CEP Teste",
        "active": 1,
        "product_rate": "10",
        "additional_order": "12",
        "delivery_days": {
            "min": "7",
            "max": "12"
        },
        "customer_message": "Teste",
        "store_display": 1,
        "cart_display": 0,
        "payment_display": 1
    }
}

Método PUT

https://{api_address}/shippings/method/gateway/:id?access_token?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código da tabela

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Saved",
    "id": "123",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da etiqueta
code Number Código do retorno (200)

Exclusão da forma de envio com integração externa pelo ID#delete

Método DELETE

https://{api_address}/shippings/method/gateway/:id?access_token?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código da tabela

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Deleted",
    "id": "123",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da etiqueta
code Number Código do retorno (201)

Criação de tabela de CEP#post

Estrutura do Json:

{
    "Shipping": {
        "name": "Tabela de CEP Teste",
        "active": 1,
        "product_rate": "10",
        "additional_order": "12",
        "delivery_days": {
            "min": "7",
            "max": "12"
        },
        "customer_message": "Teste",
        "store_display": 1,
        "cart_display": 0,
        "payment_display": 1
    }
}

Método POST

https://{api_address}/shippings/method/zipcode_table?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do pedido

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "123",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da tabela
code Number Código do retorno (201)

Alteração de tabela de CEP pelo ID#put

Estrutura do Json:

{
    "Shipping": {
        "name": "Tabela de CEP Teste",
        "active": 1,
        "product_rate": "10",
        "additional_order": "12",
        "delivery_days": {
            "min": "7",
            "max": "12"
        },
        "customer_message": "Teste",
        "store_display": 1,
        "cart_display": 0,
        "payment_display": 1
    }
}

Método PUT

https://{api_address}/shippings/method/zipcode_table/:id?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código da tabela

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Saved",
    "id": "123",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da etiqueta
code Number Código do retorno (200)

Exclusão de tabela de CEP pelo ID#delete

Método DELETE

https://{api_address}/shippings/method/zipcode_table/:id?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código da tabela

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Deleted",
    "id": "123",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da etiqueta
code Number Código do retorno (200)

API de Emissores de Etiqueta

Cadastrando a URL da Etiqueta#post

Requisição para cadastrar a url da etiqueta

Estrutura do Json:

{
    "ShippingLabel": {
        "configuration_url" : "www.urldoadeemissaodeetiquetadoaplicativo.com"
    }
}

Método POST

https://{api_address}/shipping_labels?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "2659",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da tabela
code Number Código do retorno (201)

Vinculando a URL da Etiqueta no Pedido#post

Requisição para vincular a url da etiqueta no pedido.

Nos pedidos que o aplicativo deseja realizar a impressão da etiqueta, deverá ser "marcado" o pedido, devendo apenas realizar a requisição, passando o ID do pedido.

Estrutura do Json:

{
    Não é enviado dado algum, apenas feito a requisição.
}

Método POST

https://{api_address}/orders/{:id}/shipping_label?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do pedido

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "123",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da tabela
code Number Código do retorno (201)

Após criar a URL e Vincular ao Pedido, poderá ser recuperado os dados enviado na URL, na API de Pedidos

Excluindo a URL da Etiqueta#delete

Requisição para excluir a url da etiqueta

Método DELETE

https://{api_address}/orders/{:id}/shipping_label?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do pedido

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Deleted",
    "id": "123",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da tabela
code Number Código do retorno (200)

API de Etiqueta do Mercado Livre

Consultar Etiquetas do Mercado Livre#get

Requisição para a obter o arquivo das etiquetas do Mercado Livre.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/meli/tracking_labels?access_token={{access_token}}&orders=1,2'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/meli/tracking_labels?access_token={{access_token}}&orders=1,2');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/meli/tracking_labels?access_token={{access_token}}&orders=1,2");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/meli/tracking_labels?access_token={{access_token}}&orders=1,2")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/meli/tracking_labels

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
orders String Código dos pedidos (separados por virgula)
type String Tipo de impressão (Veja Tabela A)

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    code:200,
    print_url:"https://php53.docker:9000/mvc/loja/mercado_livre/etiquetas/imprimir/0/zpl2/loja:414159?oids=76b026bc2e333b1561248bfefe7642e3"
}
Campo Tipo Descrição
code Number Código do retorno (200)
message String Mensagem de retorno
id Number Código do cliente

Tabelas Auxiliares

Tabela A - Tipo de arquivo da etiqueta (campo type)

Valor Descrição
zpl2 Arquivo ZPL2
pdf Arquivo PDF

APIs de Scripts Externos

Listagem de Scripts Externos#get

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/external_scripts?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/external_scripts?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/external_scripts?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/external_scripts?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/external_scripts

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
source String URL do script externo
created String Data de criação
modified Number Data de modificação

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "paging": {
        "total": 2,
        "page": 1,
        "offset": 0,
        "limit": 2,
        "maxLimit": 50
    },
    "sort": [],
    "availableFilters": [
        "id",
    ],
    "appliedFilters": [
        "application_id": 1
    ],
    "ExternalScripts": [
        {
            "ExternalScript": {
                "id": "1",
                "source": "http://localhost/assets/store/js/dist/script.js?12345678941c144778663a20caa7dfc4"
            }
        },
        {
            "ExternalScript": {
                "id": "2",
                "source": "http://localhost/assets/store/css/script.css?12345678941c144778663a20caa7dfc4"
            }
        }
    ]
}
Campo Tipo Descrição
paging Object Dados de paginação
total Number Total de registros
page Number Página corrente
offset Number Registro inicial da página
limit Number Limite de registros
maxLimit Number Máximo de registros
sort Object Ordenação
availableFilters String Filtros disponíveis
appliedFilters String Filtros utilizados
ExternalScripts Object Lista de scripts externos
ExternalScript Object Dados do script externo
id Number Código do script externo
source String URL do scripts externo

Cadastrar Script Externo#post

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/external_scripts/?access_token={{access_token}}' \
--data-urlencode '["ExternalScript"]["source"]=http://localhost/assets/store/css/script.css'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/external_scripts/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["ExternalScript"]["source"]' => 'http://localhost/assets/store/css/script.css'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/external_scripts/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("[\"ExternalScript\"][\"source\"]", "http://localhost/assets/store/css/script.css");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"ExternalScript\"][\"source\"]=http://localhost/assets/store/css/script.css");
Request request = new Request.Builder()
  .url("https://{api_address}/external_scripts/?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Método POST

https://{api_address}/external_scripts/

Parâmetros enviados:

Json:

{
    "ExternalScript":{
        "source":"http://localhost/assets/store/css/script.css"
    }
}
Campo Tipo Descrição
access_token String Chave de acesso
ExternalScript JSON Dados do script externo
source String URL do script externo

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "123",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do script externo
code Number Código do retorno (201)

Atualizar Dados Script Externo#put

Código de Exemplo:

curl --location -g --request PUT 'https://{api_address}/external_scripts/:id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/external_scripts/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_PUT);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/external_scripts/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.PUT);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://{api_address}/external_scripts/:id?access_token={{access_token}}")
  .method("PUT", body)
  .build();
Response response = client.newCall(request).execute();

Método PUT

https://{api_address}/external_scripts/:id?access_token={{access_token}}

Parâmetros enviados:

Json:

{
    "ExternalScript":{
        "source":"http://localhost/assets/store/css/script.css"
    }
}
Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do script externo
ExternalScript JSON Dados do script externo
source String URL do script externo

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Saved",
    "code": 200,
    "id": "123"
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do script externo
code Number Código do retorno (201)

Excluir Script Externo#delete

Código de Exemplo:

curl --location -g --request DELETE 'https://{api_address}/external_scripts/:id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/external_scripts/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_DELETE);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/external_scripts/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.DELETE);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://{api_address}/external_scripts/:id?access_token={{access_token}}")
  .method("DELETE", body)
  .build();
Response response = client.newCall(request).execute();

Método DELETE

https://{api_address}/external_scripts/:id

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do script externo

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Deleted",
    "id": "123",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do script externo
code Number Código do retorno (201)

API de Clientes

Listagem de Clientes#get

Requisição para a consulta de clientes.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/customers?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/customers?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/customers?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/customers?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/customers

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
email String Email do cliente
attrs String Atributos do cliente
limit Number Limite de registros
page Number Página corrente
sort String Ordenação ex.: [campo]_[asc/desc]

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
   "paging":{
      "total":6,
      "page":1,
      "offset":0,
      "limit":1,
      "maxLimit":50
   },
   "sort":[
      {
         "id":"desc"
      }
   ],
   "availableFilters":[
      "id",
      "name",
      "email",
      "cpf",
      "cnpj",
      "created",
      "modified"
   ],
   "appliedFilters":[
      
   ],
   "Customers":[
      {
         "Customer":{
            "id":"123",
            "name":"Nome do Cliente",
            "cpf":"00000000000",
            "birth_date":"0000-00-00",
            "gender":"0",
            "email":"emaildo@cliente.com.br",
            "cnpj":"00.000.000/0000-00",
            "last_visit":"2016-08-15",
            "city":"Cidade do Cliente",
            "state":"SP",
            "newsletter":"1",
            "created":"2008-10-14 18:17:23",
            "registration_date":"2008-10-14",
            "modified":"2016-08-15 18:17:23",
            "CustomerAddress":[
               {
                  "id":"1"
               },
               {
                  "id":"2"
               }
            ]
         }
      }
   ]
}

Campo Tipo Descrição
paging Object Dados de paginação
total Number Total de registros
page Number Página corrente
offset Number Registro inicial da página
limit Number Limite de registros
maxLimit Number Máximo de registros
sort Object Ordenação
availableFilters String Filtros disponíveis
appliedFilters String Filtros utilizados
Customers Object Lista de clientes
Customer Object Dados do cliente
id Number Código do cliente
name String Nome
cpf String CPF
birth_date Date Data de aniversário
gender Number Sexo (Veja Tabela A)
email String E-mail
cnpj String CNPJ
last_visit Date Data da última visita
city String Cidade
state String Sigla do estado
newsletter Number Newsletter ativa
created Date Data de criação
registration_date Date Data de registro
modified Date Data de modificação
CustomerAddress Object Endereços do cliente
id Number Código do endereço do cliente

Consultar Dados do Cliente#get

Requisição para a consulta de dados de um cliente.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/customers/:id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/customers/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/customers/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/customers/:id?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/customers/:id

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do cliente

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "Customer": {
        "id": "123",
        "name": "Nome do Cliente",
        "rg": "00.000.000-0",
        "cpf": "00000000000",
        "phone": "1133330000",
        "cellphone": "11999990000",
        "birth_date": "0000-00-00",
        "gender": "0",
        "email": "emaildo@cliente.com.br",
        "nickname": "",
        "token": "123QWE123QWE123ASD",
        "total_orders": "8",
        "observation": "",
        "type": "1",
        "cnpj": "00.000.000/0000-00",
        "company_name": "Razão Social do Cliente",
        "state_inscription": "Isento",
        "reseller": "0",
        "discount": "0.00",
        "blocked": "0",
        "credit_limit": "10.00",
        "indicator_id": "0",
        "profile_customer_id": "1",
        "last_sending_newsletter": "2016-08-02",
        "last_purchase": "2016-08-02",
        "last_visit": "2016-08-15",
        "last_modification": "0000-00-00 00:00:00",
        "address": "Endereço do Cliente",
        "zip_code": "04001-001",
        "number": "123",
        "complement": "Sala 123",
        "neighborhood": "Bairro do Cliente",
        "city": "Cidade do Cliente",
        "state": "SP",
        "newsletter": "1",
        "created": "2008-10-14 18:17:23",
        "registration_date": "2008-10-14",
        "modified": "2016-08-15 18:17:23",
        "CustomerAddress": [
            {
                "id": "1"
            },
            {
                "id": "2"
            }
        ]
    }
}
Campo Tipo Descrição
Customer Object Dados do cliente
id Number Código do cliente
name String Nome
rg String RG
cpf String CPF
phone String Telefone fixo
cellphone String Telefone celular
birth_date Date Data de aniversário
gender Number Sexo (Veja Tabela A)
email String E-mail
nickname String Apelido
token String Chave única do cliente
total_orders Number Total de pedidos
observation String Informações sobre o cliente
type Number Tipo de cliente (Veja Tabela B)
cnpj String CNPJ
company_name String Razão social
state_inscription String Inscrição estatual
reseller Number Cliente revendedor
discount Decimal Valor de desconto
blocked Number Cliente bloqueado (Veja Tabela C)
credit_limit Decimal Valor de crédito
indicator_id Number Código de indicação
profile_customer_id Number Código do perfil do cliente
last_sending_newsletter Date Data do último envio de newsletter
last_purchase Date Data da última compra
last_visit Date Data da última visita
last_modification Date Data de modificação
address String Logradouro
zip_code String CEP
Number Number Número do endereço
complement String Complemento
neighborhood String Bairro
city String Cidade
state String Sigla do estado
newsletter Number Newsletter ativa
created Date Data de criação
registration_date Date Data de registro
modified Date Data de modificação
CustomerAddress Object Endereços do cliente
id Number Código do endereço do cliente

Cadastrar Cliente#post

Requisição para inclusão de um cliente. Deverá enviar o JSON com os dados do cliente para a criação.

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/customers?access_token={{access_token}}' \
--data-urlencode '["Customer"]["name"]=Nome do Cliente' \
--data-urlencode '["Customer"]["rg"]=00.000.000-0' \
--data-urlencode '["Customer"]["cpf"]=00000000000' \
--data-urlencode '["Customer"]["phone"]=1133330000' \
--data-urlencode '["Customer"]["cellphone"] =11998877665' \
--data-urlencode '["Customer"]["birth_date"]=0000-00-00' \
--data-urlencode '["Customer"]["gender"] =0' \
--data-urlencode '["Customer"]["email"] =emaildo@cliente.com.br' \
--data-urlencode '["Customer"]["nickname"]=""' \
--data-urlencode '["Customer"]["observation"]=""' \
--data-urlencode '["Customer"]["type"]=1' \
--data-urlencode '["Customer"]["company_name"]=Razão Social do Cliente' \
--data-urlencode '["Customer"]["cnpj"]=00.000.000/0000-00' \
--data-urlencode '["Customer"]["state_inscription"]=Isento' \
--data-urlencode '["Customer"]["reseller"]=0' \
--data-urlencode '["Customer"]["discount"]=0' \
--data-urlencode '["Customer"]["blocked"]=0' \
--data-urlencode '["Customer"]["credit_limit"]=0' \
--data-urlencode '["Customer"]["indicator_id"]=0' \
--data-urlencode '["Customer"]["profile_customer_id"]=1' \
--data-urlencode '["Customer"]["address"]=Endereço do Cliente' \
--data-urlencode '["Customer"]["zip_code"]=04001-001' \
--data-urlencode '["Customer"]["number"]=123' \
--data-urlencode '["Customer"]["complement"]=Sala 123' \
--data-urlencode '["Customer"]["neighborhood"]=Bairro do Cliente' \
--data-urlencode '["Customer"]["city"]=Cidade do Cliente' \
--data-urlencode '["Customer"]["state"]=SP' \
--data-urlencode '["Customer"]["newsletter"]=1' \
--data-urlencode '["Customer"]["CustomerAddress"][0]["recipient"]=Nome do Cliente' \
--data-urlencode '["Customer"]["CustomerAddress"][0]["address"]=Outro Endereço do Cliente' \
--data-urlencode '["Customer"]["CustomerAddress"][0]["number"]=456' \
--data-urlencode '["Customer"]["CustomerAddress"][0]["complement"]=Sala 456' \
--data-urlencode '["Customer"]["CustomerAddress"][0]["neighborhood"]=Bairro do Cliente' \
--data-urlencode '["Customer"]["CustomerAddress"][0]["city"]=Cidade do Cliente' \
--data-urlencode '["Customer"]["CustomerAddress"][0]["state"]=SP' \
--data-urlencode '["Customer"]["CustomerAddress"][0]["zip_code"]=04001-001' \
--data-urlencode '["Customer"]["CustomerAddress"][0]["country"]=BRA' \
--data-urlencode '["Customer"]["CustomerAddress"][0]["type"]=1' \
--data-urlencode '["Customer"]["CustomerAddress"][0]["active"]=1' \
--data-urlencode '["Customer"]["CustomerAddress"][0]["description"]=""'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/customers?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["Customer"]["name"]' => 'Nome do Cliente',
  '["Customer"]["rg"]' => '00.000.000-0',
  '["Customer"]["cpf"]' => '00000000000',
  '["Customer"]["phone"]' => '1133330000',
  '["Customer"]["cellphone"] ' => '11998877665',
  '["Customer"]["birth_date"]' => '0000-00-00',
  '["Customer"]["gender"] ' => '0',
  '["Customer"]["email"] ' => 'emaildo@cliente.com.br',
  '["Customer"]["nickname"]' => '""',
  '["Customer"]["observation"]' => '""',
  '["Customer"]["type"]' => '1',
  '["Customer"]["company_name"]' => 'Razão Social do Cliente',
  '["Customer"]["cnpj"]' => '00.000.000/0000-00',
  '["Customer"]["state_inscription"]' => 'Isento',
  '["Customer"]["reseller"]' => '0',
  '["Customer"]["discount"]' => '0',
  '["Customer"]["blocked"]' => '0',
  '["Customer"]["credit_limit"]' => '0',
  '["Customer"]["indicator_id"]' => '0',
  '["Customer"]["profile_customer_id"]' => '1',
  '["Customer"]["address"]' => 'Endereço do Cliente',
  '["Customer"]["zip_code"]' => '04001-001',
  '["Customer"]["number"]' => '123',
  '["Customer"]["complement"]' => 'Sala 123',
  '["Customer"]["neighborhood"]' => 'Bairro do Cliente',
  '["Customer"]["city"]' => 'Cidade do Cliente',
  '["Customer"]["state"]' => 'SP',
  '["Customer"]["newsletter"]' => '1',
  '["Customer"]["CustomerAddress"][0]["recipient"]' => 'Nome do Cliente',
  '["Customer"]["CustomerAddress"][0]["address"]' => 'Outro Endereço do Cliente',
  '["Customer"]["CustomerAddress"][0]["number"]' => '456',
  '["Customer"]["CustomerAddress"][0]["complement"]' => 'Sala 456',
  '["Customer"]["CustomerAddress"][0]["neighborhood"]' => 'Bairro do Cliente',
  '["Customer"]["CustomerAddress"][0]["city"]' => 'Cidade do Cliente',
  '["Customer"]["CustomerAddress"][0]["state"]' => 'SP',
  '["Customer"]["CustomerAddress"][0]["zip_code"]' => '04001-001',
  '["Customer"]["CustomerAddress"][0]["country"]' => 'BRA',
  '["Customer"]["CustomerAddress"][0]["type"]' => '1',
  '["Customer"]["CustomerAddress"][0]["active"]' => '1',
  '["Customer"]["CustomerAddress"][0]["description"]' => '""'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/customers?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("[\"Customer\"][\"name\"]", "Nome do Cliente");
request.AddParameter("[\"Customer\"][\"rg\"]", "00.000.000-0");
request.AddParameter("[\"Customer\"][\"cpf\"]", "00000000000");
request.AddParameter("[\"Customer\"][\"phone\"]", "1133330000");
request.AddParameter("[\"Customer\"][\"cellphone\"] ", "11998877665");
request.AddParameter("[\"Customer\"][\"birth_date\"]", "0000-00-00");
request.AddParameter("[\"Customer\"][\"gender\"] ", "0");
request.AddParameter("[\"Customer\"][\"email\"] ", "emaildo@cliente.com.br");
request.AddParameter("[\"Customer\"][\"nickname\"]", "\"\"");
request.AddParameter("[\"Customer\"][\"observation\"]", "\"\"");
request.AddParameter("[\"Customer\"][\"type\"]", "1");
request.AddParameter("[\"Customer\"][\"company_name\"]", "Razão Social do Cliente");
request.AddParameter("[\"Customer\"][\"cnpj\"]", "00.000.000/0000-00");
request.AddParameter("[\"Customer\"][\"state_inscription\"]", "Isento");
request.AddParameter("[\"Customer\"][\"reseller\"]", "0");
request.AddParameter("[\"Customer\"][\"discount\"]", "0");
request.AddParameter("[\"Customer\"][\"blocked\"]", "0");
request.AddParameter("[\"Customer\"][\"credit_limit\"]", "0");
request.AddParameter("[\"Customer\"][\"indicator_id\"]", "0");
request.AddParameter("[\"Customer\"][\"profile_customer_id\"]", "1");
request.AddParameter("[\"Customer\"][\"address\"]", "Endereço do Cliente");
request.AddParameter("[\"Customer\"][\"zip_code\"]", "04001-001");
request.AddParameter("[\"Customer\"][\"number\"]", "123");
request.AddParameter("[\"Customer\"][\"complement\"]", "Sala 123");
request.AddParameter("[\"Customer\"][\"neighborhood\"]", "Bairro do Cliente");
request.AddParameter("[\"Customer\"][\"city\"]", "Cidade do Cliente");
request.AddParameter("[\"Customer\"][\"state\"]", "SP");
request.AddParameter("[\"Customer\"][\"newsletter\"]", "1");
request.AddParameter("[\"Customer\"][\"CustomerAddress\"][0][\"recipient\"]", "Nome do Cliente");
request.AddParameter("[\"Customer\"][\"CustomerAddress\"][0][\"address\"]", "Outro Endereço do Cliente");
request.AddParameter("[\"Customer\"][\"CustomerAddress\"][0][\"number\"]", "456");
request.AddParameter("[\"Customer\"][\"CustomerAddress\"][0][\"complement\"]", "Sala 456");
request.AddParameter("[\"Customer\"][\"CustomerAddress\"][0][\"neighborhood\"]", "Bairro do Cliente");
request.AddParameter("[\"Customer\"][\"CustomerAddress\"][0][\"city\"]", "Cidade do Cliente");
request.AddParameter("[\"Customer\"][\"CustomerAddress\"][0][\"state\"]", "SP");
request.AddParameter("[\"Customer\"][\"CustomerAddress\"][0][\"zip_code\"]", "04001-001");
request.AddParameter("[\"Customer\"][\"CustomerAddress\"][0][\"country\"]", "BRA");
request.AddParameter("[\"Customer\"][\"CustomerAddress\"][0][\"type\"]", "1");
request.AddParameter("[\"Customer\"][\"CustomerAddress\"][0][\"active\"]", "1");
request.AddParameter("[\"Customer\"][\"CustomerAddress\"][0][\"description\"]", "\"\"");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"Customer\"][\"name\"]=Nome do Cliente&[\"Customer\"][\"rg\"]=00.000.000-0&[\"Customer\"][\"cpf\"]=00000000000&[\"Customer\"][\"phone\"]=1133330000&[\"Customer\"][\"cellphone\"] =11998877665&[\"Customer\"][\"birth_date\"]=0000-00-00&[\"Customer\"][\"gender\"] =0&[\"Customer\"][\"email\"] =emaildo@cliente.com.br&[\"Customer\"][\"nickname\"]=\"\"&[\"Customer\"][\"observation\"]=\"\"&[\"Customer\"][\"type\"]=1&[\"Customer\"][\"company_name\"]=Razão Social do Cliente&[\"Customer\"][\"cnpj\"]=00.000.000/0000-00&[\"Customer\"][\"state_inscription\"]=Isento&[\"Customer\"][\"reseller\"]=0&[\"Customer\"][\"discount\"]=0&[\"Customer\"][\"blocked\"]=0&[\"Customer\"][\"credit_limit\"]=0&[\"Customer\"][\"indicator_id\"]=0&[\"Customer\"][\"profile_customer_id\"]=1&[\"Customer\"][\"address\"]=Endereço do Cliente&[\"Customer\"][\"zip_code\"]=04001-001&[\"Customer\"][\"number\"]=123&[\"Customer\"][\"complement\"]=Sala 123&[\"Customer\"][\"neighborhood\"]=Bairro do Cliente&[\"Customer\"][\"city\"]=Cidade do Cliente&[\"Customer\"][\"state\"]=SP&[\"Customer\"][\"newsletter\"]=1&[\"Customer\"][\"CustomerAddress\"][0][\"recipient\"]=Nome do Cliente&[\"Customer\"][\"CustomerAddress\"][0][\"address\"]=Outro Endereço do Cliente&[\"Customer\"][\"CustomerAddress\"][0][\"number\"]=456&[\"Customer\"][\"CustomerAddress\"][0][\"complement\"]=Sala 456&[\"Customer\"][\"CustomerAddress\"][0][\"neighborhood\"]=Bairro do Cliente&[\"Customer\"][\"CustomerAddress\"][0][\"city\"]=Cidade do Cliente&[\"Customer\"][\"CustomerAddress\"][0][\"state\"]=SP&[\"Customer\"][\"CustomerAddress\"][0][\"zip_code\"]=04001-001&[\"Customer\"][\"CustomerAddress\"][0][\"country\"]=BRA&[\"Customer\"][\"CustomerAddress\"][0][\"type\"]=1&[\"Customer\"][\"CustomerAddress\"][0][\"active\"]=1&[\"Customer\"][\"CustomerAddress\"][0][\"description\"]=\"\"");
Request request = new Request.Builder()
  .url("https://{api_address}/customers?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Método POST

https://{api_address}/customers

Parâmetros enviados:

Estrutura do Json:

{
    "Customer": {
        "name": "Nome do Cliente",
        "rg": "00.000.000-0",
        "cpf": "00000000000",
        "phone": "1133330000",
        "cellphone": "11999990000",
        "birth_date": "0000-00-00",
        "gender": "0",
        "email": "emaildo@cliente.com.br",
        "nickname": "",
        "observation": "",
        "type": "1",
        "company_name": "Razão Social do Cliente",
        "cnpj": "00.000.000/0000-00",
        "state_inscription": "Isento",
        "reseller": "0",
        "discount": "0",
        "blocked": "0",
        "credit_limit": "0",
        "indicator_id": "0",
        "profile_customer_id": "1",
        "address": "Endereço do Cliente",
        "zip_code": "04001-001",
        "number": "123",
        "complement": "Sala 123",
        "neighborhood": "Bairro do Cliente",
        "city": "Cidade do Cliente",
        "state": "SP",
        "newsletter": "1",
        "CustomerAddress": [
            {
                "recipient": "Nome do Cliente",
                "address": "Outro Endereço do Cliente",
                "number": "456",
                "complement": "Sala 456",
                "neighborhood": "Bairro do Cliente",
                "city": "Cidade do Cliente",
                "state": "SP",
                "zip_code": "04001-001",
                "country": "BRA",
                "type": "1",
                "active": "1",
                "description": ""
            }
        ]
    }
}
Campo Tipo Descrição
access_token String Chave de acesso
Customer JSON Dados do cliente
name String Nome
rg String RG
cpf String CPF
phone String Telefone fixo
cellphone String Telefone celular
birth_date Date Data de aniversário
gender Number Sexo (Veja Tabela A)
email String E-mail
nickname String Apelido
observation String Informações sobre o cliente
type Number Tipo de cliente (Veja Tabela B)
company_name String Razão social
cnpj String CNPJ
state_inscription String Inscrição estatual
reseller Number Cliente revendedor
discount Decimal Valor de desconto
blocked Number Cliente bloqueado (Veja Tabela C)
credit_limit Decimal Valor de crédito
indicator_id Number Código de indicação
profile_customer_id Number Código do perfil do cliente
address String Logradouro
zip_code String CEP
Number Number Número do endereço
complement String Complemento
neighborhood String Bairro
city String Cidade
state String Sigla do estado
newsletter Number Newsletter ativa
CustomerAddress Object Endereços do cliente
recipient String Nome do cliente
address String Logradouro
Number Number Número do endereço
complement String Complemento
neighborhood String Bairro
city String Cidade
state String Sigla do estado
zip_code String CEP
country String País
type Number Tipo de endereço (Veja Tabela D)
active Number Endereço ativo (Veja Tabela E)
description String Descrição do Endereço

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "123",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do cliente
code Number Código do retorno (201)

Atualizar Dados do Cliente#put

Requisição para alterar os dados de um cliente. Deverá enviar o JSON com os dados do cliente para a alteração.

Código de Exemplo:

curl --location -g --request PUT 'https://{api_address}/customers/:id?access_token={{access_token}}' \
--data-urlencode '["Customer"]["name"]=Nome do Cliente' \
--data-urlencode '["Customer"]["rg"]=00.000.000-0' \
--data-urlencode '["Customer"]["cpf"]=00000000000' \
--data-urlencode '["Customer"]["phone"]=1133330000' \
--data-urlencode '["Customer"]["cellphone"] =11998877665' \
--data-urlencode '["Customer"]["birth_date"]=0000-00-00' \
--data-urlencode '["Customer"]["gender"] =0' \
--data-urlencode '["Customer"]["email"] =emaildo@cliente.com.br' \
--data-urlencode '["Customer"]["nickname"]=""' \
--data-urlencode '["Customer"]["observation"]=""' \
--data-urlencode '["Customer"]["type"]=1' \
--data-urlencode '["Customer"]["company_name"]=Razão Social do Cliente' \
--data-urlencode '["Customer"]["cnpj"]=00.000.000/0000-00' \
--data-urlencode '["Customer"]["state_inscription"]=Isento' \
--data-urlencode '["Customer"]["reseller"]=0' \
--data-urlencode '["Customer"]["discount"]=0' \
--data-urlencode '["Customer"]["blocked"]=0' \
--data-urlencode '["Customer"]["credit_limit"]=0' \
--data-urlencode '["Customer"]["indicator_id"]=0' \
--data-urlencode '["Customer"]["profile_customer_id"]=1' \
--data-urlencode '["Customer"]["newsletter"]=1'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/customers/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_PUT);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["Customer"]["name"]' => 'Nome do Cliente',
  '["Customer"]["rg"]' => '00.000.000-0',
  '["Customer"]["cpf"]' => '00000000000',
  '["Customer"]["phone"]' => '1133330000',
  '["Customer"]["cellphone"] ' => '11998877665',
  '["Customer"]["birth_date"]' => '0000-00-00',
  '["Customer"]["gender"] ' => '0',
  '["Customer"]["email"] ' => 'emaildo@cliente.com.br',
  '["Customer"]["nickname"]' => '""',
  '["Customer"]["observation"]' => '""',
  '["Customer"]["type"]' => '1',
  '["Customer"]["company_name"]' => 'Razão Social do Cliente',
  '["Customer"]["cnpj"]' => '00.000.000/0000-00',
  '["Customer"]["state_inscription"]' => 'Isento',
  '["Customer"]["reseller"]' => '0',
  '["Customer"]["discount"]' => '0',
  '["Customer"]["blocked"]' => '0',
  '["Customer"]["credit_limit"]' => '0',
  '["Customer"]["indicator_id"]' => '0',
  '["Customer"]["profile_customer_id"]' => '1',
  '["Customer"]["newsletter"]' => '1'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/customers/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.PUT);
request.AddParameter("[\"Customer\"][\"name\"]", "Nome do Cliente");
request.AddParameter("[\"Customer\"][\"rg\"]", "00.000.000-0");
request.AddParameter("[\"Customer\"][\"cpf\"]", "00000000000");
request.AddParameter("[\"Customer\"][\"phone\"]", "1133330000");
request.AddParameter("[\"Customer\"][\"cellphone\"] ", "11998877665");
request.AddParameter("[\"Customer\"][\"birth_date\"]", "0000-00-00");
request.AddParameter("[\"Customer\"][\"gender\"] ", "0");
request.AddParameter("[\"Customer\"][\"email\"] ", "emaildo@cliente.com.br");
request.AddParameter("[\"Customer\"][\"nickname\"]", "\"\"");
request.AddParameter("[\"Customer\"][\"observation\"]", "\"\"");
request.AddParameter("[\"Customer\"][\"type\"]", "1");
request.AddParameter("[\"Customer\"][\"company_name\"]", "Razão Social do Cliente");
request.AddParameter("[\"Customer\"][\"cnpj\"]", "00.000.000/0000-00");
request.AddParameter("[\"Customer\"][\"state_inscription\"]", "Isento");
request.AddParameter("[\"Customer\"][\"reseller\"]", "0");
request.AddParameter("[\"Customer\"][\"discount\"]", "0");
request.AddParameter("[\"Customer\"][\"blocked\"]", "0");
request.AddParameter("[\"Customer\"][\"credit_limit\"]", "0");
request.AddParameter("[\"Customer\"][\"indicator_id\"]", "0");
request.AddParameter("[\"Customer\"][\"profile_customer_id\"]", "1");
request.AddParameter("[\"Customer\"][\"newsletter\"]", "1");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"Customer\"][\"name\"]=Nome do Cliente&[\"Customer\"][\"rg\"]=00.000.000-0&[\"Customer\"][\"cpf\"]=00000000000&[\"Customer\"][\"phone\"]=1133330000&[\"Customer\"][\"cellphone\"] =11998877665&[\"Customer\"][\"birth_date\"]=0000-00-00&[\"Customer\"][\"gender\"] =0&[\"Customer\"][\"email\"] =emaildo@cliente.com.br&[\"Customer\"][\"nickname\"]=\"\"&[\"Customer\"][\"observation\"]=\"\"&[\"Customer\"][\"type\"]=1&[\"Customer\"][\"company_name\"]=Razão Social do Cliente&[\"Customer\"][\"cnpj\"]=00.000.000/0000-00&[\"Customer\"][\"state_inscription\"]=Isento&[\"Customer\"][\"reseller\"]=0&[\"Customer\"][\"discount\"]=0&[\"Customer\"][\"blocked\"]=0&[\"Customer\"][\"credit_limit\"]=0&[\"Customer\"][\"indicator_id\"]=0&[\"Customer\"][\"profile_customer_id\"]=1&[\"Customer\"][\"newsletter\"]=1");
Request request = new Request.Builder()
  .url("https://{api_address}/customers/:id?access_token={{access_token}}")
  .method("PUT", body)
  .build();
Response response = client.newCall(request).execute();

Método PUT

https://{api_address}/customers/:id

Parâmetros enviados:

Estrutura do Json:

{
   "Customer":{
      "name":"Nome do Cliente",
      "rg":"00.000.000-0",
      "cpf":"00000000000",
      "phone":"1133330000",
      "cellphone":"11999990000",
      "birth_date":"0000-00-00",
      "gender":"0",
      "email":"emaildo@cliente.com.br",
      "nickname":"",
      "observation":"",
      "type":"1",
      "company_name":"Razão Social do Cliente",
      "cnpj":"00.000.000/0000-00",
      "state_inscription":"Isento",
      "reseller":"0",
      "discount":"0",
      "blocked":"0",
      "credit_limit":"0",
      "indicator_id":"0",
      "profile_customer_id":"1",
      "newsletter":"1"
   }
}
Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do cliente
Customer JSON Dados do cliente
name String Nome
rg String RG
cpf String CPF
phone String Telefone fixo
cellphone String Telefone celular
birth_date Date Data de aniversário
gender Number Sexo (Veja Tabela A)
email String E-mail
nickname String Apelido
observation String Informações sobre o cliente
type Number Tipo de cliente (Veja Tabela B)
company_name String Razão social
cnpj String CNPJ
state_inscription String Inscrição estatual
reseller Number Cliente revendedor
discount Decimal Valor de desconto
blocked Number Cliente bloqueado (Veja Tabela C)
credit_limit Decimal Valor de crédito
indicator_id Number Código de indicação
profile_customer_id Number Código do perfil do cliente
newsletter Number Newsletter ativa

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Saved",
    "id": "123",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do cliente
code Number Código do retorno (200)

Excluir Cliente#delete

Requisição para excluir um cliente.

Código de Exemplo:

curl --location -g --request DELETE 'https://{api_address}/customers/:id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/customers/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_DELETE);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/customers/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.DELETE);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://{api_address}/customers/:id?access_token={{access_token}}")
  .method("DELETE", body)
  .build();
Response response = client.newCall(request).execute();

Método DELETE

https://{api_address}/customers/:id

Parâmetros enviados

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do cliente

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Deleted",
    "id": "123",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do cliente
code Number Código do retorno (200)

Listagem de Endereços de Cliente#get

Requisição para a consulta de diversos endereços do cliente.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/customers/addresses?access_token={{access_token}}&sort=id_desc'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/customers/addresses?access_token={{access_token}}&sort=id_desc');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/customers/addresses?access_token={{access_token}}&sort=id_desc");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/customers/addresses?access_token={{access_token}}&sort=id_desc")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/customers/addresses

Parâmetros enviados

Campo Tipo Descrição
access_token String Chave de acesso
attrs String Atributos do endereço do cliente
limit Number Limite de registros
page Number Página corrente
sort String Ordenação ex.: [campo]_[asc/desc]

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "paging": {
        "total": 3,
        "page": 1,
        "offset": 0,
        "limit": 30,
        "maxLimit": 50
    },
    "sort": [
        {
            "id": "asc"
        }
    ],
    "availableFilters": [
        "customer_id",
        "type",
        "not_list"
    ],
    "appliedFilters": {
        "CustomerAddress.customer_id !=": "0"
    },
    "CustomerAddresses": [
        {
            "CustomerAddress": {
                "id": "1",
                "customer_id": "1",
                "address": "Nome da Rua do Cliente",
                "number": "130",
                "complement": "",
                "neighborhood": "Bairro do Cliente",
                "city": "Cidade do Cliente",
                "state": "SP",
                "zip_code": "04001-001",
                "country": "Brasil",
                "type": "1",
                "active": "0",
                "description": "",
                "recipient": "",
                "type_delivery": "1",
                "not_list": "0"
            }
        }
    ]
}
Campo Tipo Descrição
paging Object Dados de paginação
total Number Total de registros
page Number Página corrente
offset Number Registro inicial da página
limit Number Limite de registros
maxLimit Number Máximo de registros
sort Object Ordenação
availableFilters String Filtros disponíveis
appliedFilters String Filtros utilizados
CustomerAddresses Object Lista de endereços do cliente
CustomerAddress Object Dados do endereço do cliente
id String Código do endereço
customer_id String Código do cliente
address String Endereço do Cliente
Number String
complement String Complemento do endereço do Cliente
neighborhood String Bairro do Cliente
city String Cidade
state String Sigla do estado
zip_code String CEP
country String País
type Number Tipo do Endereço. Tabela B
active Number Endereço ativo (Veja Tabela E)
description String Descrição do Endereço
recipient String Nome do Cliente
type_delivery Number
no_list Number

Consultar Dados do Endereço de um Cliente#get

Requisição para a consulta de dados de um endereço do cliente.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/customers/addresses/:id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/customers/addresses/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/customers/addresses/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/customers/addresses/:id?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/customers/addresses/:id

Parâmetros enviados

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do endereço do cliente

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "CustomerAddress": {
        "id": "123",
        "customer_id": "123",
        "address": "Endereço do Cliente",
        "number": "123",
        "complement": "",
        "neighborhood": "Bairro do Cliente",
        "city": "Cidade do Cliente",
        "state": "SP",
        "zip_code": "04001-001",
        "country": "BRA",
        "type": "1",
        "active": "0",
        "description": "",
        "recipient": "",
        "type_delivery": "1",
        "not_list": "0"
    }
}
Campo Tipo Descrição
CustomerAddress Object Endereços do cliente
id String Código do endereço do cliente
customer_id String Código do cliente
recipient String Nome do cliente
address String Logradouro
number Number Número do endereço
complement String Complemento
neighborhood String Bairro
city String Cidade
state String Sigla do estado
zip_code String CEP
country String País
type Number Tipo de endereço (Veja Tabela D)
active Number Endereço ativo (Veja Tabela E)
description String Descrição do Endereço
type_delivery Number
not_list Number

Cadastrar Endereço#post

Requisição para inclusão de um endereço do cliente. Deverá enviar o JSON com os dados do endereço para a criação.

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/customers?access_token={{access_token}}' \
--data-urlencode '["CustomerAddress"]["customer_id"]=1' \
--data-urlencode '["CustomerAddress"][0]["recipient"]=Nome do Cliente' \
--data-urlencode '["CustomerAddress"][0]["address"]=Endereço do Cliente' \
--data-urlencode '["CustomerAddress"][0]["number"]=123' \
--data-urlencode '["CustomerAddress"][0]["complement"]=Sala 123' \
--data-urlencode '["CustomerAddress"][0]["neighborhood"]=Bairro do Cliente' \
--data-urlencode '["CustomerAddress"][0]["city"]=Cidade do Cliente' \
--data-urlencode '["CustomerAddress"][0]["state"]=SP' \
--data-urlencode '["CustomerAddress"][0]["zip_code"]=04001-001' \
--data-urlencode '["CustomerAddress"][0]["country"]=BRA' \
--data-urlencode '["CustomerAddress"][0]["type"]=1' \
--data-urlencode '["CustomerAddress"][0]["active"]=1' \
--data-urlencode '["CustomerAddress"][0]["description"]=1'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/customers?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["CustomerAddress"]["customer_id"]' => '1',
  '["CustomerAddress"][0]["recipient"]' => 'Nome do Cliente',
  '["CustomerAddress"][0]["address"]' => 'Endereço do Cliente',
  '["CustomerAddress"][0]["number"]' => '123',
  '["CustomerAddress"][0]["complement"]' => 'Sala 123',
  '["CustomerAddress"][0]["neighborhood"]' => 'Bairro do Cliente',
  '["CustomerAddress"][0]["city"]' => 'Cidade do Cliente',
  '["CustomerAddress"][0]["state"]' => 'SP',
  '["CustomerAddress"][0]["zip_code"]' => '04001-001',
  '["CustomerAddress"][0]["country"]' => 'BRA',
  '["CustomerAddress"][0]["type"]' => '1',
  '["CustomerAddress"][0]["active"]' => '1',
  '["CustomerAddress"][0]["description"]' => '1'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/customers?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("[\"CustomerAddress\"][\"customer_id\"]", "1");
request.AddParameter("[\"CustomerAddress\"][0][\"recipient\"]", "Nome do Cliente");
request.AddParameter("[\"CustomerAddress\"][0][\"address\"]", "Endereço do Cliente");
request.AddParameter("[\"CustomerAddress\"][0][\"number\"]", "123");
request.AddParameter("[\"CustomerAddress\"][0][\"complement\"]", "Sala 123");
request.AddParameter("[\"CustomerAddress\"][0][\"neighborhood\"]", "Bairro do Cliente");
request.AddParameter("[\"CustomerAddress\"][0][\"city\"]", "Cidade do Cliente");
request.AddParameter("[\"CustomerAddress\"][0][\"state\"]", "SP");
request.AddParameter("[\"CustomerAddress\"][0][\"zip_code\"]", "04001-001");
request.AddParameter("[\"CustomerAddress\"][0][\"country\"]", "BRA");
request.AddParameter("[\"CustomerAddress\"][0][\"type\"]", "1");
request.AddParameter("[\"CustomerAddress\"][0][\"active\"]", "1");
request.AddParameter("[\"CustomerAddress\"][0][\"description\"]", "1");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"CustomerAddress\"][\"customer_id\"]=1&[\"CustomerAddress\"][0][\"recipient\"]=Nome do Cliente&[\"CustomerAddress\"][0][\"address\"]=Endereço do Cliente&[\"CustomerAddress\"][0][\"number\"]=123&[\"CustomerAddress\"][0][\"complement\"]=Sala 123&[\"CustomerAddress\"][0][\"neighborhood\"]=Bairro do Cliente&[\"CustomerAddress\"][0][\"city\"]=Cidade do Cliente&[\"CustomerAddress\"][0][\"state\"]=SP&[\"CustomerAddress\"][0][\"zip_code\"]=04001-001&[\"CustomerAddress\"][0][\"country\"]=BRA&[\"CustomerAddress\"][0][\"type\"]=1&[\"CustomerAddress\"][0][\"active\"]=1&[\"CustomerAddress\"][0][\"description\"]=1");
Request request = new Request.Builder()
  .url("https://{api_address}/customers?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Método POST

https://{api_address}/customers/addresses

Parâmetros enviados

Estrutura do Json:

{   
    "CustomerAddress":{
        "customer_id":"123",
        "recipient":"",
        "address":"Endereço do Cliente",
        "number":"123",
        "complement":"Sala 123",
        "neighborhood":"Bairro do Cliente",
        "city":"Cidade do Cliente",
        "state":"SP",
        "zip_code":"04001-001",
        "country":"BRA",
        "type":"1",
        "active":"0",
        "description":""
    }
}
Campo Tipo Descrição
access_token String Chave de acesso
CustomerAddress JSON Endereços do cliente
customer_id Number Código do cliente
recipient String Nome do cliente
address String Logradouro
Number Number Número do endereço
complement String Complemento
neighborhood String Bairro
city String Cidade
state String Sigla do estado
zip_code String CEP
country String País
type Number Tipo de endereço (Veja Tabela D)
active Number Endereço ativo (Veja Tabela E)
description String Descrição do Endereço

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "123",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do endereço do cliente
code Number Código do retorno (201)

Excluir Endereço#delete

Requisição para excluir um endereço do cliente.

Código de Exemplo:

curl --location -g --request DELETE 'https://{api_address}/customers/addresses/:id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/customers/addresses/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_DELETE);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/customers/addresses/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.DELETE);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://{api_address}/customers/addresses/:id?access_token={{access_token}}")
  .method("DELETE", body)
  .build();
Response response = client.newCall(request).execute();

Método DELETE

https://{api_address}/customers/addresses/:id

Parâmetros enviados

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do endereço do cliente

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Deleted",
    "id": "123",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do endereço do cliente
code Number Código do retorno (200)

Consultar Perfil de Cliente#get

Método GET

https://{api_address}/customers/profiles

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
  "CustomerProfile": {
    "id": "1",
    "status": "1",
    "price_list_id": "0",
    "name": "Padrao",
    "approves_registration": "0",
    "show_price": "",
    "theme_id": "0"
  }
}
Campo Tipo Descrição
CustomerProfile Object Objeto do perfil
id Number Código do perfil
status Number Status do perfil
price_list_id Number ID da lista de preço
name String Nome do Perfil
approves_registration Number Aprova de registro
show_price String Mostra o preço
theme_id Number ID do Tema

Cadastrar Perfil de Cliente#post

Método POST

https://{api_address}/customers/profiles

Dados enviados:

{
  "CustomerProfile": {
    "status": "1",
    "price_list_id": "0",
    "name": "Nome",
    "approves_registration": "0",
    "show_price": "",
    "theme_id": "0"
  }
}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
  "message": "Created",
  "id": "5",
  "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do perfil
code Number Código do retorno (201)

Atualizar Perfil de Cliente#put

Método PUT

https://{api_address}/customers/profiles/:id

Dados enviados:

{
  "CustomerProfile": {
    "status": "1",
    "price_list_id": "0",
    "name": "Padrao",
    "approves_registration": "0",
    "show_price": "",
    "theme_id": "0"
  }
}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
  "message": "Saved",
  "id": "5",
  "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do perfil
code Number Código do retorno (200)

Excluir Perfil de Cliente#delete

Método DELETE

https://{api_address}/customers/profiles/:id

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Deleted",
    "id": "5",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do perfil
code Number Código do retorno (200)

Relacionar Perfil#post

Método POST

https://{api_address}/customers/profiles/relation

Dados enviados:

{
  "Customer": {
    "Profiles": [
      {
        "customer_id": "1",
        "customer_profile_id": "1"
      },
      {
        "customer_id": "1",
        "customer_profile_id": "3"
      }
    ]
  }
}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Saved",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
code Number Código do retorno (200)

Remover Relacionamento#post

Método POST

https://{api_address}/customers/profiles/relation_delete

Dados enviados:

{
  "Customer": {
    "Profiles": [
      {
        "customer_id": "1",
        "customer_profile_id": "1"
      }
    ]
  }
}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
  "message": "Saved",
  "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
code Number Código do retorno (200)

Tabelas Auxiliares de Clientes

Tabela A - Sexo do cliente (campo gender)

Campo Tipo
0 Masculino
1 Feminino

Tabela B - Tipo do cliente (campo type)

Campo Tipo
0 Pessoa física
1 Pessoa jurídica

Tabela C - Bloqueio do cliente (campo blocked)

Campo Tipo
0 Cliente desbloqueado
1 Cliente bloqueado

Tabela D - Tipo de endereço do cliente (campo CustomerAddress.type)

Campo Tipo
0 Endereço de cobrança
1 Endereço de entrega

Tabela E - Disponibilidade do endereço do cliente (campo CustomerAddress.active)

Campo Tipo
0 Endereço indisponível
1 Endereço disponível

API de Cupom

Alteração dos Cupons#put

Requisição para alterar dados do cupom.

Método PUT

Adicionar produtos, categorias, marcas, clientes ou frete

Assim como demonstrado no tópico de criação do cupom, basta enviar o PUT do cupom com os dados que deseja adicionar.

Modificações no cupom que são conflitantes

O cupom da Tray não é possível utilizar ao mesmo tempo “produtos específicos” + “marcas especificas” + “categorias especificas”, dessa forma caso seu cupom esteja configurado como “categoria especifica” e seja enviado “produtos específicos”, o cupom será alterado para “produtos específicos” e as categorias que estavam antes selecionadas será excluída do cupom.

Consultar Cupom#get

Requisição para a consulta de dados do cupom.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/discount_coupons/?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/discount_coupons/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/discount_coupons/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/discount_coupons/?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/discount_coupons/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
  "paging": {
    "total": 32,
    "page": 1,
    "offset": 0,
    "limit": 30,
    "maxLimit": 50
  },
  "sort": [
    {
      "id": "asc"
    }
  ],
  "availableFilters": [
    "id",
    "code",
    "type",
    "description",
    "status",
    "used",
    "accumulated_discount_start",
    "accumulated_discount_end"
  ],
  "appliedFilters": [],
  "DiscountCoupons": [
    {
      "DiscountCoupon": {
        "id": "7",
        "created": "2019-08-22 15:55:42",
        "updated": "2019-08-22 15:55:42",
        "code": "CUPOM",
        "description": "Cupom criado pela API",
        "starts_at": "2019-08-01",
        "ends_at": "2019-08-30",
        "value": "10.00",
        "usage_counter": "0",
        "usage_sum": "0.00",
        "type": "$",
        "value_start": "10.00",
        "value_end": "100.00",
        "usage_sum_limit": "10.00",
        "usage_counter_limit": "0",
        "coupon_type": "loja",
        "local_application": "loja",
        "freight_application": "nao_aplicavel",
        "usage_counter_limit_customer": "10",
        "cumulative_discount": "1"
      }
    }
  ]
}
Campo Tipo Descrição
DiscountCoupon JSON Dados do cupom
id String id do cupom
created Date Data de criação do cupom
updated Date Data da última atualização do cupom
code String Nome do cupom. Obs: Neste campo não é aceito espaço e acentuação nas palavras
description String Descrição do cupom
starts_at Date Data de início da validade do cupom 0000-00-00
ends_at Date Data final da validade do cupom 0000-00-00
value Decimal Valor de desconto do cupom
usage_counter String
usage_sum Number
value_start Decimal Valor mínimo do produto para ser aplicado o desconto
value_end Decimal Valor máximo do produto para ser aplicado o desconto
usage_sum_limit Decimal Limita o valor do cupom
usage_counter_limit String Limita a quantidade de vezes que o cupom poderá ser usado no geral
usage_counter_limit String Limita a quantidade de vezes que o cupom poderá ser utilizado por cliente
coupon_type String
local_application String
freight_application String
usage_counter_limit_customer String
cumulative_discount Number Permitir que o cupom acumule o desconto com o desconto progressivo. Tabela B

Consultar Dados do Cupom#get

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/discount_coupons/:id/?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/discount_coupons/:id/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/discount_coupons/:id/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/discount_coupons/:id/?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/discount_coupons/:id/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do cupom

Retorno de Sucesso:

{
    "DiscountCoupon": {
        "id": "7",
        "created": "2019-08-22 15:55:42",
        "updated": "2019-08-22 15:55:42",
        "code": "CUPOM",
        "description": "Cupom criado pela API",
        "starts_at": "2019-08-01",
        "ends_at": "2019-08-30",
        "value": "10.00",
        "usage_counter": "0",
        "usage_sum": "0.00",
        "type": "$",
        "value_start": "10.00",
        "value_end": "100.00",
        "usage_sum_limit": "10.00",
        "usage_counter_limit": "0",
        "coupon_type": "loja",
        "local_application": "loja",
        "freight_application": "nao_aplicavel",
        "usage_counter_limit_customer": "10",
        "cumulative_discount": "1"
    }
}

CONSULTA DO CUPOM BÁSICO + LIMITAÇÕES (2/3/4/5/6)

Clientes Relacionados ao Cupom#get

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/discount_coupons/customer_relationship/:id/?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/discount_coupons/customer_relationship/:id/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/discount_coupons/customer_relationship/:id/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/discount_coupons/customer_relationship/:id/?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/discount_coupons/customer_relationship/:id/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do cupom

Retorno de Sucesso:

{
    "paging": {
        "total": 2,
        "page": 1,
        "offset": 0,
        "limit": 30,
        "maxLimit": 50
    },
    "DiscountCouponCustomers": [
        {
            "DiscountCouponCustomer": {
                "customer_id": "1"
            }
        },
        {
            "DiscountCouponCustomer": {
                "customer_id": "20"
            }
        }
    ]
}

Produtos Relacionados ao Cupom#get

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/discount_coupons/product_relationship/:id/?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/discount_coupons/product_relationship/:id/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/discount_coupons/product_relationship/:id/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/discount_coupons/product_relationship/:id/?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/discount_coupons/product_relationship/:id/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do cupom

Retorno de Sucesso:

{
    "paging": {
        "total": 3,
        "page": 1,
        "offset": 0,
        "limit": 30,
        "maxLimit": 50
    },
    "DiscountCouponProducts": [
        {
            "DiscountCouponProduct": {
                "product_id": "10"
            }
        },
        {
            "DiscountCouponProduct": {
                "product_id": "20"
            }
        },
        {
            "DiscountCouponProduct": {
                "product_id": "30"
            }
        }
    ]
}

Categorias Relacionadas ao Cupom#get

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/discount_coupons/category_relationship/:id/?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/discount_coupons/category_relationship/:id/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/discount_coupons/category_relationship/:id/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/discount_coupons/category_relationship/:id/?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/discount_coupons/category_relationship/:id/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do cupom

Retorno de Sucesso:

{
    "paging": {
        "total": 2,
        "page": 1,
        "offset": 0,
        "limit": 30,
        "maxLimit": 50
    },
    "DiscountCouponCategories": [
        {
            "DiscountCouponCategory": {
                "category_id": "3"
            }
        },
        {
            "DiscountCouponCategory": {
                "category_id": "11"
            }
        }
    ]
}

Marcas Relacionadas ao Cupom#get

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/discount_coupons/brand_relationship/:id/?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/discount_coupons/brand_relationship/:id/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/discount_coupons/brand_relationship/:id/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/discount_coupons/brand_relationship/:id/?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/discount_coupons/brand_relationship/:id/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do cupom

Retorno de Sucesso:

{
    "paging": {
        "total": 2,
        "page": 1,
        "offset": 0,
        "limit": 30,
        "maxLimit": 50
    },
    "DiscountCouponBrands": [
        {
            "DiscountCouponBrand": {
                "brand_id": "6"
            }
        },
        {
            "DiscountCouponBrand": {
                "brand_id": "24"
            }
        }
    ]
}

Fretes Relacionados ao Cupom#get

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/discount_coupons/shipping_relationship/:id/?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/discount_coupons/shipping_relationship/:id/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/discount_coupons/shipping_relationship/:id/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/discount_coupons/shipping_relationship/:id/?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/discount_coupons/shipping_relationship/:id/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do cupom

Retorno em caso de sucesso (status code 200 ou 201)

Retornos de Sucessos:

Exemplo do Frete Grátis:

{
    "DiscountCouponShippings": [
        {
            "DiscountCouponShipping": {
                "shipping_id": "1"
            }
        },
        {
            "DiscountCouponShipping": {
                "shipping_id": "2"
            }
        },
        {
            "DiscountCouponShipping": {
                "shipping_id": "52"
            }
        },
        {
            "DiscountCouponShipping": {
                "shipping_id": "20"
            }
        }
    ]
}

Exemplo do Desconto no Frete:

{
    "DiscountCouponShippings": [
        {
            "DiscountCouponShipping": {
                "value": "20.00"
            }
        }
    ]
}

Como foi visto, temos retorno em separado para os Gets de Clientes relacionados, Produtos, Marca, Categoria e Frete. Para que não seja necessário a consulta em todas as APIs, ao realizar o GET principal ( /discount_coupons?access_token=) é retornado o campos " coupon_type" e " local_application", onde informa qual o tipo de cupom e assim qual API deve ser chamada para obter o restante dos dados.

Exemplo: Caso o " coupon_type" esteja com o valor "clientes", então teremos cliente relacionados e assim é necessário realizar um GET na API de customers para visualizar os clientes relacionados.

Valores possíveis:

Cadastrar Cupom#post

Requisição para inclusão de um cupom. Deverá enviar o JSON com os dados do cupom para a criação.

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/discount_coupons/?access_token={{access_token}}' \
--data-urlencode '["DiscountCoupon"]["code"]=123' \
--data-urlencode '["DiscountCoupon"]["description"]=Cupom criado pela API' \
--data-urlencode '["DiscountCoupon"]["starts_at"] =2019-01-10' \
--data-urlencode '["DiscountCoupon"]["ends_at"]=2019-01-20' \
--data-urlencode '["DiscountCoupon"]["value"]=10.00' \
--data-urlencode '["DiscountCoupon"]["type"]=$' \
--data-urlencode '["DiscountCoupon"]["value_start"]=10.00' \
--data-urlencode '["DiscountCoupon"]["value_end"]=100.00' \
--data-urlencode '["DiscountCoupon"]["usage_sum_limit"]=10.00' \
--data-urlencode '["DiscountCoupon"]["usage_counter_limit"]=' \
--data-urlencode '["DiscountCoupon"]["usage_counter_limit_customer"]=10' \
--data-urlencode '["DiscountCoupon"]["cumulative_discount"]=1'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/discount_coupons/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["DiscountCoupon"]["code"]' => '123',
  '["DiscountCoupon"]["description"]' => 'Cupom criado pela API',
  '["DiscountCoupon"]["starts_at"] ' => '2019-01-10',
  '["DiscountCoupon"]["ends_at"]' => '2019-01-20',
  '["DiscountCoupon"]["value"]' => '10.00',
  '["DiscountCoupon"]["type"]' => '$',
  '["DiscountCoupon"]["value_start"]' => '10.00',
  '["DiscountCoupon"]["value_end"]' => '100.00',
  '["DiscountCoupon"]["usage_sum_limit"]' => '10.00',
  '["DiscountCoupon"]["usage_counter_limit"]' => '',
  '["DiscountCoupon"]["usage_counter_limit_customer"]' => '10',
  '["DiscountCoupon"]["cumulative_discount"]' => '1'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/discount_coupons/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("[\"DiscountCoupon\"][\"code\"]", "123");
request.AddParameter("[\"DiscountCoupon\"][\"description\"]", "Cupom criado pela API");
request.AddParameter("[\"DiscountCoupon\"][\"starts_at\"] ", "2019-01-10");
request.AddParameter("[\"DiscountCoupon\"][\"ends_at\"]", "2019-01-20");
request.AddParameter("[\"DiscountCoupon\"][\"value\"]", "10.00");
request.AddParameter("[\"DiscountCoupon\"][\"type\"]", "$");
request.AddParameter("[\"DiscountCoupon\"][\"value_start\"]", "10.00");
request.AddParameter("[\"DiscountCoupon\"][\"value_end\"]", "100.00");
request.AddParameter("[\"DiscountCoupon\"][\"usage_sum_limit\"]", "10.00");
request.AddParameter("[\"DiscountCoupon\"][\"usage_counter_limit\"]", "");
request.AddParameter("[\"DiscountCoupon\"][\"usage_counter_limit_customer\"]", "10");
request.AddParameter("[\"DiscountCoupon\"][\"cumulative_discount\"]", "1");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"DiscountCoupon\"][\"code\"]=123&[\"DiscountCoupon\"][\"description\"]=Cupom criado pela API&[\"DiscountCoupon\"][\"starts_at\"] =2019-01-10&[\"DiscountCoupon\"][\"ends_at\"]=2019-01-20&[\"DiscountCoupon\"][\"value\"]=10.00&[\"DiscountCoupon\"][\"type\"]=$&[\"DiscountCoupon\"][\"value_start\"]=10.00&[\"DiscountCoupon\"][\"value_end\"]=100.00&[\"DiscountCoupon\"][\"usage_sum_limit\"]=10.00&[\"DiscountCoupon\"][\"usage_counter_limit\"]=&[\"DiscountCoupon\"][\"usage_counter_limit_customer\"]=10&[\"DiscountCoupon\"][\"cumulative_discount\"]=1");
Request request = new Request.Builder()
  .url("https://{api_address}/discount_coupons/?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Método POST

https://{api_address}/discount_coupons/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
DiscountCoupon JSON Dados do cupom
code String Nome do cupom. Obs: Neste campo não é aceito espaço e acentuação nas palavras
description String Descrição do cupom
starts_at Date Data de início da validade do cupom 0000-00-00
ends_at Date Data final da validade do cupom 0000-00-00
value Decimal Valor de desconto do cupom
type String Tipo de desconto em reais ou percentual. Tabela A
value_start Decimal Valor mínimo do produto para ser aplicado o desconto
value_end Decimal Valor máximo do produto para ser aplicado o desconto
usage_sum_limit Decimal Limita o valor do cupom
usage_counter_limit String Limita a quantidade de vezes que o cupom poderá ser usado no geral
usage_counter_limit_customer String Limita a quantidade de vezes que o cupom poderá ser utilizado por cliente
cumulative_discount Number Permitir que o cupom acumule o desconto com o desconto progressivo. Tabela B

Observação: Ao utilizar somente o CUPOM GENÉRICO, sem realizar nenhum outro POST relacinando a clientes/produtos/categorias/marcas, o cupom poderá ser aplicado à toda a loja e à todos os clientes

Estrutura de Json:

{
  "DiscountCoupon": {
      "code": "123",
      "description": "Cupom criado pela API",
      "starts_at": "2019-01-10",
      "ends_at": "2019-01-20",
      "value": "10.00",
      "type": "$",
      "value_start": "10",
      "value_end": "100.00",
      "usage_sum_limit": "",
      "usage_counter_limit": "",
      "usage_counter_limit_customer": "10",
      "cumulative_discount": "1"
  }
}

Observação: Caso não deseje limitar o valor do produto, para que o cupom seja aplicado a todos os produtos de quaisquer valores, você poderá enviar os campos "value_start", "value_end" vazios.

Se não desejar limitar a quantidade de uso do cupom, poderá também enviar esses campos vazios "usage_counter_limit", "usage_counter_limit_customer".

Esses campos "usage_counter_limit":, "usage_counter_limit_customer": precisam estar alinhados, pois um limita a quantidade em que o cupom poderá ser utilizado e outro limita quantas vezes o cupom poderá ser utilizado pelo mesmo cliente. Se desejar que o mesmo cliente utilize o cupom por duas vezes, o campo "usage_counter_limit": deverá conter a mesma quantidade, no caso 2, ou então ser enviado vazio, para não dar conflito na hora do consumidor aplicar o cupom.

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
  "message": "Created",
  "id": "1",
  "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do cupom
code Number Código do retorno (201)

CUPOM BÁSICO + LIMITAÇÕES (2/3/4/5/6/7/8)

Relacionando Cliente no Cupom#post

O envio dos dados dentro do json, é limitado a 100 registros por POST. Dessa forma caso tenha 200 registros, será necessários enviar dois POST com 100 registros cada. Cada id dentro das chaves, representará um registro de informação.

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}' \
--data-raw '{
  "DiscountCouponCustomer": [
    {
      "customer_id": "10"
    },
    {
      "customer_id": "20"
    }
  ]
}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setBody('{\n  "DiscountCouponCustomer": [\n    {\n      "customer_id": "10"\n    },\n    {\n      "customer_id": "20"\n    }\n  ]\n}');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("text/plain", "{\n  \"DiscountCouponCustomer\": [\n    {\n      \"customer_id\": \"10\"\n    },\n    {\n      \"customer_id\": \"20\"\n    }\n  ]\n}",  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n  \"DiscountCouponCustomer\": [\n    {\n      \"customer_id\": \"10\"\n    },\n    {\n      \"customer_id\": \"20\"\n    }\n  ]\n}");
Request request = new Request.Builder()
  .url("https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Método POST

https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
DiscountCouponCustomer JSON Dados do cupom
customer_id String Id do cliente

Estrutura de Json:

{
  "DiscountCouponCustomer": [
    {
      "customer_id": "10"
    },
    {
      "customer_id": "20"
    }
  ]
}

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "1",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do cupom
code Number Código do retorno (201)

Relacionando Produtos no Cupom#post

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}' \
--data-raw '{
  "DiscountCouponProduct": [
    {
      "product_id": "10"
    },
    {
      "product_id": "20"
    }
  ]
}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setBody('{\n  "DiscountCouponProduct": [\n    {\n      "product_id": "10"\n    },\n    {\n      "product_id": "20"\n    }\n  ]\n}');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("text/plain", "{\n  \"DiscountCouponProduct\": [\n    {\n      \"product_id\": \"10\"\n    },\n    {\n      \"product_id\": \"20\"\n    }\n  ]\n}",  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n  \"DiscountCouponProduct\": [\n    {\n      \"product_id\": \"10\"\n    },\n    {\n      \"product_id\": \"20\"\n    }\n  ]\n}");
Request request = new Request.Builder()
  .url("https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Método POST

https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
DiscountCouponCustomer JSON Dados do cupom
product_id String Id do produto

Estrutura de Json:

{
  "DiscountCouponProduct": [
    {
      "product_id": "10"
    },
    {
      "product_id": "20"
    }
  ]
}

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "1",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do cupom
code Number Código do retorno (201)

Relacionando Categorias no Cupom#post

curl --location -g --request POST 'https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}' \
--data-raw '{
  "DiscountCouponCategory": [
    {
      "category_id": "10"
    },
    {
      "category_id": "20"
    }
  ]
}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setBody('{\n  "DiscountCouponCategory": [\n    {\n      "category_id": "10"\n    },\n    {\n      "category_id": "20"\n    }\n  ]\n}');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("text/plain", "{\n  \"DiscountCouponCategory\": [\n    {\n      \"category_id\": \"10\"\n    },\n    {\n      \"category_id\": \"20\"\n    }\n  ]\n}",  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n  \"DiscountCouponCategory\": [\n    {\n      \"category_id\": \"10\"\n    },\n    {\n      \"category_id\": \"20\"\n    }\n  ]\n}");
Request request = new Request.Builder()
  .url("https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

O envio dos dados dentro do json, é limitado a 100 registros por POST. Dessa forma caso tenha 200 registros, será necessários enviar dois POST com 100 registros cada. Cada id dentro das chaves, representará um registro de informação.

Método POST

https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
DiscountCouponCategory JSON Dados do cupom
category_id String Id da categoria

Estrutura de Json:

{
  "DiscountCouponCategory": [
    {
      "category_id": "10"
    },
    {
      "category_id": "20"
    }
  ]
}

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "1",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do cupom
code Number Código do retorno (201)

Relacionando Marcas no Cupom#post

curl --location -g --request POST 'https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}' \
--data-raw '{
  "DiscountCouponBrand": [
    {
      "brand_id": "10"
    },
    {
      "brand_id": "20"
    }
  ]
}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setBody('{\n  "DiscountCouponBrand": [\n    {\n      "brand_id": "10"\n    },\n    {\n      "brand_id": "20"\n    }\n  ]\n}');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("text/plain", "{\n  \"DiscountCouponBrand\": [\n    {\n      \"brand_id\": \"10\"\n    },\n    {\n      \"brand_id\": \"20\"\n    }\n  ]\n}",  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n  \"DiscountCouponBrand\": [\n    {\n      \"brand_id\": \"10\"\n    },\n    {\n      \"brand_id\": \"20\"\n    }\n  ]\n}");
Request request = new Request.Builder()
  .url("https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

O envio dos dados dentro do json, é limitado a 100 registros por POST. Dessa forma caso tenha 200 registros, será necessários enviar dois POST com 100 registros cada. Cada id dentro das chaves, representará um registro de informação.

Método POST

https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
DiscountCouponBrand JSON Dados do cupom
brand_id String Id da marca

Estrutura de Json:

{
  "DiscountCouponBrand": [
    {
      "brand_id": "10"
    },
    {
      "brand_id": "20"
    }
  ]
}

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "1",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do cupom
code Number Código do retorno (201)

Relacionando Frete Grátis no Cupom#post

curl --location -g --request POST 'https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}' \
--data-raw '{
  "DiscountCouponShipping": [
    {
      "shipping_id": "10"
    },
    {
      "shipping_id": "20"
    }
  ]
}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setBody('{\n  "DiscountCouponShipping": [\n    {\n      "shipping_id": "10"\n    },\n    {\n      "shipping_id": "20"\n    }\n  ]\n}');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("text/plain", "{\n  \"DiscountCouponShipping\": [\n    {\n      \"shipping_id\": \"10\"\n    },\n    {\n      \"shipping_id\": \"20\"\n    }\n  ]\n}",  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n  \"DiscountCouponShipping\": [\n    {\n      \"shipping_id\": \"10\"\n    },\n    {\n      \"shipping_id\": \"20\"\n    }\n  ]\n}");
Request request = new Request.Builder()
  .url("https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

O envio dos dados dentro do json, é limitado a 100 registros por POST. Dessa forma caso tenha 200 registros, será necessários enviar dois POST com 100 registros cada. Cada id dentro das chaves, representará um registro de informação. Para informar o id do frete, você poderá capturar através dessa API: https://traydevelopers.zendesk.com/hc/pt-br/articles/360012934234-Listagem-de-Formas-de-Envio.

Método POST

https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
DiscountCouponShipping JSON Dados do cupom
shipping_id String Id da forma de envio do frete

Estrutura de Json:

{
  "DiscountCouponShipping": [
    {
      "shipping_id": "10"
    },
    {
      "shipping_id": "20"
    }
  ]
}

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "1",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do cupom
code Number Código do retorno (201)

Relacionando Desconto no Frete no Cupom#post

curl --location -g --request POST 'https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}' \
--data-raw '{
  "DiscountCouponShipping": {
    "value": "10"
  }
}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setBody('{\n  "DiscountCouponShipping": {\n    "value": "10"\n  }\n}');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("text/plain", "{\n  \"DiscountCouponShipping\": {\n    \"value\": \"10\"\n  }\n}",  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n  \"DiscountCouponShipping\": {\n    \"value\": \"10\"\n  }\n}");
Request request = new Request.Builder()
  .url("https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

O desconto no frete sempre será em reais, nunca será em percentual, mesmo que no cupom genérico o tipo de desconto no campo "type" tenha sido em percentual.

Método POST

https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
DiscountCouponShipping JSON Dados do cupom
value String Valor do desconto

Estrutura de Json:

{
  "DiscountCouponShipping": {
    "value": "10"
  }
}

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "1",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do cupom
code Number Código do retorno (201)

Cupom de Troca#post

curl --location -g --request POST 'https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}' \
--data-raw '{
  "DiscountCouponCustomer": {
    "order_id": "10"
  }
}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setBody('{\n  "DiscountCouponCustomer": {\n    "order_id": "10"\n  }\n}');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("text/plain", "{\n  \"DiscountCouponCustomer\": {\n    \"order_id\": \"10\"\n  }\n}",  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n  \"DiscountCouponCustomer\": {\n    \"order_id\": \"10\"\n  }\n}");
Request request = new Request.Builder()
  .url("https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Após criar o “CUPOM GENÉRICO - BÁSICO”, é possível apenas enviar o código do pedido nos dados do json e o cupom será automaticamente relacionado ao cliente e o desconto será com base no valor do pedido.

Método POST

https://{api_address}/discount_coupons/create_relationship/:id/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
DiscountCouponShipping JSON Dados do cupom
value String Valor do desconto

Estrutura de Json:

{
  "DiscountCouponCustomer": {
    "order_id": "10"
  }
}

Tabelas Auxiliares de Cupons

Tabela A - Tipo de desconto em reais ou percentual (campo type)

Valor Descrição
$ Desconto em reais
% Desconto em percentual

Tabela B - Permitir que o cupom acumule o desconto com o desconto progressivo (campo cumulative_discount)

Valor Descrição
0 Desconto não acumulativo
1 Desconto acumulativo

Exclusão do Cupom Genérico#delete

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/discount_coupons/:id/?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/discount_coupons/:id/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/discount_coupons/:id/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/discount_coupons/:id/?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método Delete

https://{api_address}/discount_coupons/:id/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do cupom

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Deleted",
    "id": "123",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do cliente
code Number Código do retorno (200)

Exclusão do cupom que contenha produtos específicos, categorias, marcas, clientes ou fretes associados#delete

Para excluir um produto que esteja relacionado ao produto, categoria, marca, cliente ou frete, é possível através dos métodos abaixo:

Método Delete

https://{api_address}/delete_relationship/:id/?access_token={{access_token}}

Exemplo de remoção de cliente:

{
    "DiscountCouponCustomer": [
        {
        "customer_id": "10"
    },
    {
        "customer_id": "20"
    }
    ]
}

Exemplo de remoção de TODOS os clientes:

{
    "DiscountCouponCustomer":
        {
        "delete": "all"
    }
}

Exemplo de remoção de produtos:

{
    "DiscountCouponProduct": [
        {
        "product_id": "10"
    },
    {
        "product_id": "20"
    }
    ]
}

Exemplo de remoção de todos os produtos:

{
    "DiscountCouponProduct":
        {
        "delete": "all"
    }
}

Exemplo remoção de categorias:

{
    "DiscountCouponCategory": [
        {
        "category_id": "10"
    },
    {
        "category_id": "20"
    }
    ]
}

Exemplo de remoção de todas as categorias:

{
    "DiscountCouponCategory":
        {
        "delete": "all"
    }
}

Exemplo de remoção de marcas:

{
    "DiscountCouponBrand": [
        {
        "brand_id": "10"
    },
    {
        "brand_id": "20"
    }
    ]
}

Exemplo de remoção de todas as marcas:

{
    "DiscountCouponBrand":
        {
        "delete": "all"
    }
}

Exemplo de remoção de fretes ou desconto no frete:

{
    "DiscountCouponShipping": [
        {
        "shipping_id": "10"
    },
    {
        "shipping_id": "20"
    }
    ]
}

Exemplo de remoção de todos os desconto de frete:

{
    "DiscountCouponShipping":
        {
        "delete": "all"
    }
}

APIs de Características

Consultar Características do Produto#get

Requisição para consultar os dados das características dos produtos.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/products/properties?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/products/properties?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/products/properties?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/products/properties?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/products/properties?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
id String Código da característica
name String Nome da característica
position String Posição da característica
display String Visível na loja virtual
active_display String Ativo na loja virtual

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "paging": {
        "total": 24,
        "page": 1,
        "offset": 0,
        "limit": 30,
        "maxLimit": 50
    },
    "sort": [
        {
            "id": "asc"
        }
    ],
    "availableFilters": [
        "id",
        "name",
        "position",
        "display",
        "active_display"
    ],
    "appliedFilters": {
        "Property.active_display": "1"
    },
    "Properties": [
        {
            "Property": {
                "id": "2",
                "active_display": "1",
                "name": "Cor",
                "position": "1",
                "display": "1",
                "has_product": "1",
                "PropertyValues": [
                    {
                        "id": "72",
                        "name": "Preto",
                        "property_id": "2",
                        "image": {
                            "http": "http://urldaimagem/img/img_prod/123/cor_4.png?123",
                            "https": "https://urldaimagem/img/img_prod/123/cor_4.png?123"
                        }
                    },
                    {
                        "id": "74",
                        "name": "Vermelho",
                        "property_id": "2",
                        "image": {
                            "http": "http://urldaimagem/img/img_prod/123/cor_12.png?123",
                            "https": "https://urldaimagem/img/img_prod/123/cor_12.png?123"
                        }
                    }
                ]
            }
        }
    ]
}
Campo Tipo Descrição
paging Object Dados de paginação
total Number Total de registros
page Number Páginas corrente
offset Number Registro inicial da página
limit Number Limite de registros
maxLimit Number Máximo de registros
sort Object Ordenação
availableFilters String Filtros disponíveis
appliedFilters String Filtros utilizados
Properties Object Dados das características
Property Object Dados da característica
id Number Código da característica
active_display Number Característica ativa na loja virtual
name String Nome da característica
position Number Posição da característica
display Number Característica visível na loja virtual
has_product Number Característica com produtos
PropertyValues Object Valores da característica
id Number Código do valor da característica
name String Nome do valor da característica
property_id Number Código da característica
image Object Código da característica
http Object Imagem da característica
https Object Imagem da característica em ambiente seguro

Cadastrar/Atualizar Características de Produtos#post

Requisição para cadastro e atualização das características dos produtos.

Ao lado existem duas requisições (Com o index e sem o index).

A mudança na requisição só existe quando dentro do produto existem duas ou mais características iguais, ou seja, com o mesmo property_id. Isso ocorre principalmente em lojas que vendem produtos automotivos e necessitam (para que se adeque ao filtro inteligênte da plataforma) preencher o ano em características separadas dentro do mesmo produto.

Ex:

Ano: 1990

Ano: 1991

Em situações como essa, para que se atualize essa informação via API, você deverá utilizar o index na Requisição, diferenciando os campos de preenchimento. Conforme os exemplos ao lado.

OBS: Para que a caracteristica seja inserida corretamente no produto, precisa primeiro criar a características, após isso vincular a categoria, para que assim seja possível vincular ao produto.

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/products/:id/properties?access_token={{access_token}}' \
--data-urlencode '[]=["property_id" => "1", "value" => "Branco"]' \
--data-urlencode '[]=["property_id" => "2", "value" => "220v"]' \
--data-urlencode '[]=["property_id" => "3", "value" => "Teste"]'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/products/:id/properties?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '[]' => '["property_id" => "1", "value" => "Branco"]',
  '[]' => '["property_id" => "2", "value" => "220v"]',
  '[]' => '["property_id" => "3", "value" => "Teste"]'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/products/:id/properties?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("[]", "[\"property_id\" => \"1\", \"value\" => \"Branco\"]");
request.AddParameter("[]", "[\"property_id\" => \"2\", \"value\" => \"220v\"]");
request.AddParameter("[]", "[\"property_id\" => \"3\", \"value\" => \"Teste\"]");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[]=[\"property_id\" => \"1\", \"value\" => \"Branco\"]&[]=[\"property_id\" => \"2\", \"value\" => \"220v\"]&[]=[\"property_id\" => \"3\", \"value\" => \"Teste\"]");
Request request = new Request.Builder()
  .url("https://{api_address}/products/:id/properties?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Estrutura do Json:

[
    {
        "property_id": "1",
        "value": "Branco"
    },
    {
        "property_id": "2",
        "value": "220v"
        
    },
    {
        "property_id": "3",
        "value": "Teste"
    }
]

Estrutura JSON com index:

[
    {
      "property_id": "4",
      "value": "1990",
      "index": 0
    },
    {
      "property_id": "4",
      "value": "1991",
      "index": 1
    }
]

Método POST

https://{api_address}/products/:id/properties?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
property_id String Código da característica do produto
value String (100) característica do produto
index Number Ordem da característica

OBS: Para que a caracteristica seja inserida corretamente no produto, precisa primeiro criar a características, após isso vincular a categoria, para que assim seja possível vincular ao produto.

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
code Number Código do retorno (201)

Criar uma Característica#post

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/properties?access_token={{access_token}}' \
--data-raw '{
    "name": "Caracteristica via API 1",
    "PropertyValues": [
        {
            "name": "Valor 1"
        },
        {
            "name": "Valor 2"
        }
    ]
}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/properties?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setBody('{\n    "name": "Caracteristica via API 1",\n    "PropertyValues": [\n        {\n            "name": "Valor 1"\n        },\n        {\n            "name": "Valor 2"\n        }\n    ]\n}');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/properties?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("text/plain", "{\n    \"name\": \"Caracteristica via API 1\",\n    \"PropertyValues\": [\n        {\n            \"name\": \"Valor 1\"\n        },\n        {\n            \"name\": \"Valor 2\"\n        }\n    ]\n}",  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n    \"name\": \"Caracteristica via API 1\",\n    \"PropertyValues\": [\n        {\n            \"name\": \"Valor 1\"\n        },\n        {\n            \"name\": \"Valor 2\"\n        }\n    ]\n}");
Request request = new Request.Builder()
  .url("https://{api_address}/properties?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Método POST

https://{api_address}/properties?access_token={{access_token}}

OBS: Para que a caracteristica seja inserida corretamente no produto, precisa primeiro criar a características, após isso vincular a categoria, para que assim seja possível vincular ao produto.

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
name String Nome da característica
PropertyValues Array[ ] Propriedades da característica
name String Nome da propriedade

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "19",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da característica
code Number Código do retorno (201)

Deletar uma Característica#delete

Código de Exemplo:

curl --location -g --request DELETE 'https://{api_address}/properties/:id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/properties/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_DELETE);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/properties/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.DELETE);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://{api_address}/properties/:id?access_token={{access_token}}")
  .method("DELETE", body)
  .build();
Response response = client.newCall(request).execute();

Método Delete

https://{api_address}/properties/:id?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do cliente

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
  "message": "Deleted",
  "id": "19",
  "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da característica
code Number Código do retorno (200)

API de Categorias

As APIs de Categorias disponibiliza a manutenção das categorias dentro da plataforma Tray, possiblilitando criar, atualizar e excluir as categorias por aplicações externas.

Consultar Árvore de Categorias#get

Requisição para consultar os dados das categorias de forma estruturada.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/categories/tree/:id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/categories/tree/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/categories/tree/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/categories/tree/:id?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/categories/tree/:id

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do categoria

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
  "Category": [
    {
      "Category": {
        "slug": "categoria-teste",
        "id": "123",
        "parent_id": "",
        "name": "Categoria Teste",
        "description": "Descrição da Categoria de Teste",
        "title": "",
        "small_description": "",
        "link": {
          "http": "http://loja.commercesuite.com.br/categoria-teste",
          "https": "https://loja.commercesuite.com.br/categoria-teste"
        },
        "images": [
          {
            "http": "http://images.tcdn.com.br/img/img_prod/123/categoria_img_1_123.png",
            "https": "https://images.tcdn.com.br/img/img_prod/123/categoria_img_1_123.png"
          }
        ],
        "has_product": "1",
        "children": [
          {
            "Category": {
              "slug": "subcategoria-teste",
              "id": "456",
              "parent_id": "",
              "name": "Subcategoria Teste",
              "description": "Descrição da Categoria de Teste",
              "title": "",
              "small_description": "",
              "link": {
                "http": "http://loja.commercesuite.com.br/subcategoria-teste",
                "https": "https://loja.commercesuite.com.br/subcategoria-teste"
              },
              "images": [
                {
                  "http": "http://images.tcdn.com.br/img/img_prod/123/categoria_img_1_456.png",
                  "https": "https://images.tcdn.com.br/img/img_prod/123/categoria_img_1_456.png"
                }
              ],
              "has_product": "1",
              "children": null
            }
          }
        ]
      }
    }
  ]
}
Campo Tipo Descrição
Category Object Lista da categoria
slug String Final da URL da categoria
id Number Código da categoria
parent_id Number Código da categoria pai
name String Nome da categoria
title String Titulo da categoria
small_description String Descrição resumida da categoria
link Object URLs da categoria
http String URL da categoria
https String URL segura da categoria
images Object Imagens da categoria
http Number URL da imagem da categoria
https Number URL segura da imagem da categoria
has_product Number Categoria com produto relacionado 0
children Object Subcategoria do produto (com os mesmos dados deste Object Category)

Consultar Dados das Categorias#get

Requisição para consultar os dados das categorias.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/categories/?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/categories/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/categories/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/categories/?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/categories/

Parâmetros enviados:

Campo Tipo Descrição
access_token String Token de acesso
attrs String Atributos da categoria
limit Number Limite de registros
page Number Página corrente
sort String Ordenação ex.: [campo]_[asc/desc]

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
  "paging": {
      "total": 39,
      "page": 1,
      "offset": 0,
      "limit": 30,
      "maxLimit": 50
  },
  "sort": [
      {
          "id": "asc"
      }
  ],
  "availableFilters": [
      "id",
      "name",
      "parent_id"
  ],
  "appliedFilters": [],
  "Categories": [
      {
          "Category": {
              "id": "123",
              "parent_id": "",
              "name": "Categoria Teste",
              "small_description": "",
              "Images": [
                  {
                      "http": "http://images.tcdn.com.br/img/img_prod/123/categoria_img_1_123.png",
                      "https": "https://images.tcdn.com.br/img/img_prod/123/categoria_img_1_123.png"
                  }
              ]
          }
      }
  ]
}
Campo Tipo Descrição
paging Object Dados de paginação
total Number Total de registros
page Number Página corrente
offset Number Registro inicial da página
limit Number Limite de registros
maxLimit Number Máximo de registros
sort Object Ordenação
availableFilters String Filtros disponíveis
appliedFilters String Filtros utilizados
Categories Object Lista de categorias
Category Object Dados da categoria
id Number Código da categoria
parent_id Number Código da categoria pai
name String Nome da categoria
small_description String Descrição resumida da categoria
Images Object Imagens da categoria
http Number URL da imagem da categoria
https Number URL segura da imagem da categoria

Consultar Dados da Categoria-por :id#get

Requisição para consultar os dados de uma categoria.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/categories/:id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/categories/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/categories/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/categories/:id?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/categories/:id

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código da categoria

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
  "Category": {
      "slug": "categoria-teste",
      "id": "123",
      "parent_id": "",
      "name": "Categoria Teste",
      "order": "2",
      "title": "Categoria",
      "small_description": "",
      "link": {
        "http": "http://loja.commercesuite.com.br/categoria-teste",
        "https": "https://loja.commercesuite.com.br/categoria-teste"
      },
      "has_acceptance_term": "",
      "acceptance_term": "",
      "metatag": [
        {
            "type": "description",
            "content": ""
        },
        {
            "type": "keywords",
            "content": ""
        }
      ],
      "Images": [
        {
            "http": "http://images.tcdn.com.br/img/img_prod/123/categoria_img_1_123.png",
            "https": "https://images.tcdn.com.br/img/img_prod/123/categoria_img_1_123.png"
        }
      ]
  }
}
Campo Tipo Descrição
Category Object Dados da categoria
slug String Final da URL da categoria
id Number Código da categoria
parent_id Number Código da categoria pai
name String Nome da categoria
order Number Apenas leitura
Ordem de exibição da categoria
title String Título da categoria
small_description String Descrição resumida da categoria
link Object URLs da categoria
http String URL da categoria
https String URL segura da categoria
has_acceptance_term Number Categoria com termo de aceitação ( 0 / 1)
acceptance_term String Texto com os termos a ser aceito na categoria
Images Object Imagens da categoria
http String URL da imagem da categoria
https String URL segura da imagem da categoria

Cadastrar Categoria#post

Requisição para criação de uma categoria. Deverá enviar o JSON com os dados da categoria para a criação.

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/categories/?access_token={{access_token}}' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode '["Category"]["name"]=Categoria Teste' \
--data-urlencode '["Category"]["description"]=Categoria de Teste da Loja' \
--data-urlencode '["Category"]["slug"]=categoria-teste' \
--data-urlencode '["Category"]["order"]=2' \
--data-urlencode '["Category"]["title"]=Categoria de Teste' \
--data-urlencode '["Category"]["small_description"]=Categoria de Teste da Loja' \
--data-urlencode '["Category"]["has_acceptance_term"]=1' \
--data-urlencode '["Category"]["acceptance_term"]=Eu aceito os termos de uso ...' \
--data-urlencode '["Category"]["metatag"]["keywords"]=categoria teste' \
--data-urlencode '["Category"]["metatag"]["description"]=categoria teste da loja' \
--data-urlencode '["Category"]["property"]=Característica Teste 1","Característica Teste 2'
var client = new RestClient("https://{api_address}/categories/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddParameter("[\"Category\"][\"name\"]", "Categoria Teste");
request.AddParameter("[\"Category\"][\"description\"]", "Categoria de Teste da Loja");
request.AddParameter("[\"Category\"][\"slug\"]", "categoria-teste");
request.AddParameter("[\"Category\"][\"order\"]", "2");
request.AddParameter("[\"Category\"][\"title\"]", "Categoria de Teste");
request.AddParameter("[\"Category\"][\"small_description\"]", "Categoria de Teste da Loja");
request.AddParameter("[\"Category\"][\"has_acceptance_term\"]", "1");
request.AddParameter("[\"Category\"][\"acceptance_term\"]", "Eu aceito os termos de uso ...");
request.AddParameter("[\"Category\"][\"metatag\"][\"keywords\"]", "categoria teste");
request.AddParameter("[\"Category\"][\"metatag\"][\"description\"]", "categoria teste da loja");
request.AddParameter("[\"Category\"][\"property\"]", "Característica Teste 1\",\"Característica Teste 2");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
var client = new RestClient("https://{api_address}/categories/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddParameter("[\"Category\"][\"name\"]", "Categoria Teste");
request.AddParameter("[\"Category\"][\"description\"]", "Categoria de Teste da Loja");
request.AddParameter("[\"Category\"][\"slug\"]", "categoria-teste");
request.AddParameter("[\"Category\"][\"order\"]", "2");
request.AddParameter("[\"Category\"][\"title\"]", "Categoria de Teste");
request.AddParameter("[\"Category\"][\"small_description\"]", "Categoria de Teste da Loja");
request.AddParameter("[\"Category\"][\"has_acceptance_term\"]", "1");
request.AddParameter("[\"Category\"][\"acceptance_term\"]", "Eu aceito os termos de uso ...");
request.AddParameter("[\"Category\"][\"metatag\"][\"keywords\"]", "categoria teste");
request.AddParameter("[\"Category\"][\"metatag\"][\"description\"]", "categoria teste da loja");
request.AddParameter("[\"Category\"][\"property\"]", "Característica Teste 1\",\"Característica Teste 2");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "[\"Category\"][\"name\"]=Categoria Teste&[\"Category\"][\"description\"]=Categoria de Teste da Loja&[\"Category\"][\"slug\"]=categoria-teste&[\"Category\"][\"order\"]=2&[\"Category\"][\"title\"]=Categoria de Teste&[\"Category\"][\"small_description\"]=Categoria de Teste da Loja&[\"Category\"][\"has_acceptance_term\"]=1&[\"Category\"][\"acceptance_term\"]=Eu aceito os termos de uso ...&[\"Category\"][\"metatag\"][\"keywords\"]=categoria teste&[\"Category\"][\"metatag\"][\"description\"]=categoria teste da loja&[\"Category\"][\"property\"]=Característica Teste 1\",\"Característica Teste 2");
Request request = new Request.Builder()
  .url("https://{api_address}/categories/?access_token={{access_token}}")
  .method("POST", body)
  .addHeader("Content-Type", "application/x-www-form-urlencoded")
  .build();
Response response = client.newCall(request).execute();

Método POST

https://{api_address}/categories?access_token={token}

Parâmetros enviados:

Estrutura do Json:

{
  "Category": {
      "name": "Categoria Teste", 
      "description": "Categoria de Teste da Loja",
      "slug": "categoria-teste",
      "title": "Categoria de Teste",
      "small_description":"Categoria de Teste da Loja",
      "has_acceptance_term":"1",
      "acceptance_term": "Eu aceito os termos de uso ...",
      "metatag": {
          "keywords": "categoria teste 123",
          "description": "categoria teste da loja 123"
      },
      "property": [
          "Característica Teste 1 123",
          "Característica Teste 2 123"
      ]
  }
}
Campo Tipo Descrição
access_token String Chave de acesso
Category JSON Dados da categoria
name String (255) Nome da categoria
slug String (255) Final da URL da categoria
title String (255) Title da pagina de categorias
small_description String Descrição detalhada da Categoria
has_acceptance_term Number Categoria com termo de aceitação ( 0 / 1)
acceptance_term String Texto com os termos a ser aceito na categoria
Metatag Object Meta Tag
keywords String (256) Palavras-Chaves de Meta Tag
description String (256) Descrição de Meta Tag
property String Características

Atenção: O parâmetro order não pode ser mais enviado nessa requisição, Clique aqui e veja como ordernar a categoria.

Obs: Caso deseja utilizar o termo de aceita na categoria o qual representa o campo has_acceptance_term, deve ativar o seguinte campo em Configurações -> Configurações Gerais.

imagem

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "456",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da categoria
code Number Código do retorno (201)

Observação:

Para cadastrar uma sub categoria, deverá ser realizado os mesmos procedimento para o cadastro da categoria pai, tendo como única informação adicional no corpo da requisição do json, o campo "parent_id" (categoria pai).

Atualizar Dados da Categoria#put

Requisição para alterar os dados de uma categoria. Deverá enviar o JSON com os dados do categoria para a alteração.

Código de Exemplo:

curl --location -g --request PUT 'https://{api_address}/categories/:id?access_token={{access_token}}' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode '["Category"]["name"]=Categoria Teste' \
--data-urlencode '["Category"]["description"]=Categoria de Teste da Loja' \
--data-urlencode '["Category"]["slug"]=categoria-teste' \
--data-urlencode '["Category"]["title"]=Categoria de Teste' \
--data-urlencode '["Category"]["small_description"]=Categoria de Teste da Loja' \
--data-urlencode '["Category"]["has_acceptance_term"]=1' \
--data-urlencode '["Category"]["acceptance_term"]=Eu aceito os termos de uso ...' \
--data-urlencode '["Category"]["metatag"]["keywords"]=categoria teste' \
--data-urlencode '["Category"]["metatag"]["description"]=categoria teste da loja' \
--data-urlencode '["Category"]["property"]=Característica Teste 1","Característica Teste 2'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/categories/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_PUT);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'Content-Type' => 'application/x-www-form-urlencoded'
));
$request->addPostParameter(array(
  '["Category"]["name"]' => 'Categoria Teste',
  '["Category"]["description"]' => 'Categoria de Teste da Loja',
  '["Category"]["slug"]' => 'categoria-teste',
  '["Category"]["title"]' => 'Categoria de Teste',
  '["Category"]["small_description"]' => 'Categoria de Teste da Loja',
  '["Category"]["has_acceptance_term"]' => '1',
  '["Category"]["acceptance_term"]' => 'Eu aceito os termos de uso ...',
  '["Category"]["metatag"]["keywords"]' => 'categoria teste',
  '["Category"]["metatag"]["description"]' => 'categoria teste da loja',
  '["Category"]["property"]' => 'Característica Teste 1","Característica Teste 2'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/categories/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.PUT);
request.AddHeader("Content-Type", "application/x-www-form-urlencoded");
request.AddParameter("[\"Category\"][\"name\"]", "Categoria Teste");
request.AddParameter("[\"Category\"][\"description\"]", "Categoria de Teste da Loja");
request.AddParameter("[\"Category\"][\"slug\"]", "categoria-teste");
request.AddParameter("[\"Category\"][\"title\"]", "Categoria de Teste");
request.AddParameter("[\"Category\"][\"small_description\"]", "Categoria de Teste da Loja");
request.AddParameter("[\"Category\"][\"has_acceptance_term\"]", "1");
request.AddParameter("[\"Category\"][\"acceptance_term\"]", "Eu aceito os termos de uso ...");
request.AddParameter("[\"Category\"][\"metatag\"][\"keywords\"]", "categoria teste");
request.AddParameter("[\"Category\"][\"metatag\"][\"description\"]", "categoria teste da loja");
request.AddParameter("[\"Category\"][\"property\"]", "Característica Teste 1\",\"Característica Teste 2");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
RequestBody body = RequestBody.create(mediaType, "[\"Category\"][\"name\"]=Categoria Teste&[\"Category\"][\"description\"]=Categoria de Teste da Loja&[\"Category\"][\"slug\"]=categoria-teste&[\"Category\"][\"order\"]=2&[\"Category\"][\"title\"]=Categoria de Teste&[\"Category\"][\"small_description\"]=Categoria de Teste da Loja&[\"Category\"][\"has_acceptance_term\"]=1&[\"Category\"][\"acceptance_term\"]=Eu aceito os termos de uso ...&[\"Category\"][\"metatag\"][\"keywords\"]=categoria teste&[\"Category\"][\"metatag\"][\"description\"]=categoria teste da loja&[\"Category\"][\"property\"]=Característica Teste 1\",\"Característica Teste 2");
Request request = new Request.Builder()
  .url("https://{api_address}/categories/:id?access_token={{access_token}}")
  .method("PUT", body)
  .addHeader("Content-Type", "application/x-www-form-urlencoded")
  .build();
Response response = client.newCall(request).execute();

Método PUT

https://{api_address}/categories/:id?access_token={token}

Parâmetros enviados:

Estrutura do Json:

{
  "Category": {
      "name": "Categoria Teste", 
      "description": "Categoria de Teste da Loja",
      "slug": "categoria-teste",
      "title": "Categoria de Teste",
      "small_description":"Categoria de Teste da Loja",
      "has_acceptance_term":"1",
      "acceptance_term": "Eu aceito os termos de uso ...",
      "metatag": {
          "keywords": "categoria teste 123",
          "description": "categoria teste da loja 123"
      },
      "property": [
          "Característica Teste 1 123",
          "Característica Teste 2 123"
      ]
  }
}
Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código da categoria (pai)
Category JSON Dados da categoria
slug String Final da URL da categoria
title String Title da pagina de categorias
small_description String Descrição detalhada da Categoria
has_acceptance_term Number Categoria com termo de aceitação ( 0
acceptance_term String Texto com os termos a ser aceito na categoria
Metatag Object Meta Tag
keywords String Palavras-Chaves de Meta Tag
description String Descrição de Meta Tag
property String Características

Atenção: O parâmetro order não pode ser mais enviado nessa requisição, Clique aqui e veja como ordernar a categoria.

Obs: caso deseja utilizar o termo de aceita na categoria o qual representa o campo has_acceptance_term, deve ativar o seguinte campo em Configurações -> Configurações Gerais.

imagem

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "456",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da categoria
code Number Código do retorno (201)

Observação:

Para atualizar uma sub categoria, deverá ser realizado os mesmos procedimento acima, no entanto, na url o id informado deverá ser o id da subcategoria

E no corpo da requisição, deverá ser informado o campo "parent_id", que será o id da categoria pai onde se encontra atualmente a subcategoria

Atualizar Ordem da Categoria#put

Deve ser enviado apenas o array.

[3,1,33]

Método PUT

https://{api_address}/categories/update_order?access_token={token}

Para ordenação de categoria, nos inserimos o id da categoria e a ordem que gostariamos de estabelecer.

Por exemplo:

Imagine que temos uma categoria, onde seu id está na ordem é 33, 1 e 3 e gostariamos de alterar para 3, 1 e 33, basta eviar dentro do array a ordem, [3, 1 33] que ficara conforme a baixo.

imagem

Excluir Categoria#delete

Código de Exemplo:

curl --location -g --request DELETE 'https://{api_address}/categories/:id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/categories/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_DELETE);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/categories/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.DELETE);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://{api_address}/categories/:id?access_token={{access_token}}")
  .method("DELETE", body)
  .build();
Response response = client.newCall(request).execute();

Método Delete

https://{api_address}/categories/:id

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código da categoria

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
  "message": "Deleted",
  "id": "456",
  "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da categoria
code Number Código do retorno (200)

APIs de Variação de Produtos

Listagem de Variações#get

Requisição para consultar os dados de diversas variações.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/products/variants/?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/products/variants/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/products/variants/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/products/variants/?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/products/variants/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
id Number Código da variação
product_id Number Código do produto principal
ean String EAN da variação
price Decimal Preço da variação
promotional_price Decimal Preço promocional da variação
stock Number Estoque da variação
minimum_stock Number Estoque mínimo da variação
modified Date Data de modificação (Pode-se enviar um intervalo de data, ex.: [start], end)
sort String Ordenação de listagem (ex.: [campo]_[asc/desc])
limit Number Quantidade de registros (max. 50)
page Number Número da página da consulta

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "paging": {
        "total": 55,
        "page": 1,
        "offset": 0,
        "limit": 30,
        "maxLimit": 50
    },
    "sort": [
        {
            "id": "asc"
        }
    ],
    "availableFilters": [
        "id",
        "product_id",
        "ean",
        "price",
        "promotional_price",
        "stock",
        "minimum_stock",
        "value_1",
        "reference",
        "value_2",
        "type_1",
        "type_2",
        "modified"
    ],
    "appliedFilters": [],
    "Variants": [
        {
            "Variant": {
                "id": "1233",
                "ean": "123",
                "order": "1",
                "product_id": "18",
                "price": "12.50",
                "cost_price": "10.00",
                "stock": "51",
                "minimum_stock": "1",
                "reference": "THR016-1",
                "weight": "21",
                "length": "21",
                "width": "21",
                "height": "21",
                "start_promotion": "2019-01-01",
                "end_promotion": "2019-01-10",
                "promotional_price": "10.00",
                "payment_option": "R$ 11,25 à vista com desconto Boleto - Yapay",
                "payment_option_details": [
                    {
                        "display_name": "Boleto - Yapay",
                        "type": "bank_billet",
                        "plots": "1",
                        "value": "11.25",
                        "tax": "0.00"
                    }
                ],
                "available": "1",
                "illustrative_image": {
                    "http": "http://urldaimagem/img/img_prod/123/123.png",
                    "https": "https://urldaimagem/img/img_prod/123/123.png"
                },
                "quantity_sold": "10",
                "color_id_1": "2",
                "color_id_2": "0",
                "cubic_weight": "1930",
                "Sku": [
                    {
                        "type": "Cor",
                        "value": "Azul",
                        "image": "http://urldaimagem/img/img_prod/123/cor_2.png?20160622100723",
                        "image_secure": "https://urldaimagem/img/img_prod/123/cor_2.png?20160622100723"
                    },
                    {
                        "type": "Tamanho",
                        "value": "38"
                    }
                ],
                "VariantImage": [
                    {
                        "http": "http://urldaimagem/img/img_prod/123/123.png",
                        "https": "https://urldaimagem/img/img_prod/123/123.png",
                        "thumbs": {
                            "30": {
                                "http": "http://urldaimagem/img/img_prod/123/30_123.png",
                                "https": "https://urldaimagem/img/img_prod/123/30_123.png"
                            },
                            "90": {
                                "http": "http://urldaimagem/img/img_prod/123/90_123.png",
                                "https": "https://urldaimagem/img/img_prod/123/90_123.png"
                            },
                            "180": {
                                "http": "http://urldaimagem/img/img_prod/123/180_123.png",
                                "https": "https://urldaimagem/img/img_prod/123/180_123.png"
                            }
                        }
                    }
                ]
            }
        }
    ]
}
Campo Tipo Descrição
access_token String Chave de acesso
paging Object Dados de raginação
total Number Total de tegistros
page Number Páginas corrente
offset Number Registro inicial da página
limit Number Limite de registros
maxLimit Number Máximo de registros
sort Object[ ] Ordenação
availableFilters String[ ] Filtros disponíveis
appliedFilters String[ ] Filtros utilizados
Variants Object[ ] Dados da variações dos produtos
Variant Object Dados da variação
id Number Código da variação
ean String Código EAN da variação
order String Ordem da visualização da variação
product_id Number Código
price Decimal Preço da variação
cost_price Decimal Preço da variação de custo da variação
stock Number Estoque da variação
minimum_stock Number Estoque mínimo da variação
reference String Referência da variação
weight Decimal Peso da variação
cubic_weight Decimal Peso cubico da variação
length Decimal Comprimento da variação
width Decimal Largura da variação
height Decimal Altura da variação
start_promotion Date Data de início de promoção da variação
end_promotion Date Data de termino de promoção da variação
promotional_price Decimal Preço promocional da variação
payment_option String Detalhes/Opções de pagamento da variação
payment_option_details Object[ ] Detalhes/Opções separadas de pagamento da variação
display_name String Nome da forma de pagamento da variação
type String Typo da forma de pagamento da variação
plots Number Quantidade de parcelas da forma de pagamento da variação
value Decimal Valor da parcela da forma de pagamento da variação
tax Decimal Taxa da parcela da forma de pagamento da variação
available Number Variação disponível (Veja Tabela A)
illustrative_image String Imagem ilustrativa da variação
color_id_1 String Código da cor primária da variação
color_id_2 String Código da cor secundaria da variação
type String Tipo de SKU da variação
value String Valor do SKU da variação
image String URL da imagem do SKU da variação
image_secure String URL segura da imagem do SKU da variação
VariantImage Object[ ] Imagens da variação
http String URL da imagem da variação
https String URL segura da imagem da variação
thumbs Object Miniaturas da imagem da variação
30 Object Miniaturas da imagem da variação (30px)
http String URL da miniaturas da imagem da variação (30px)
https String URL segura da miniaturas da imagem da variação (30px)
90 Object Miniaturas da imagem (90px)
http String URL da miniaturas da imagem da variação (90px)
https String URL segura da miniaturas da imagem da variação (90px)
180 Object Miniaturas da imagem da variação (180px)
http String URL da miniaturas da imagem da variação (180px)
https String URL segura da miniaturas da imagem da variação (180px)

Consultar Dados da Variação#get

Requisição para consultar os dados de uma variação do produto.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/products/variants/:id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/products/variants/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/products/variants/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/products/variants/:id?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/products/variants/:id?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código da Variação do produto

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "Variant": {
        "id": "255",
        "ean": "125",
        "order": "1",
        "product_id": "18",
        "price": "12.50",
        "cost_price": "10.00",
        "stock": "51",
        "minimum_stock": "1",
        "reference": "THR016-2",
        "weight": "21",
        "cubic_weight": "1930",
        "length": "21",
        "width": "21",
        "height": "21",
        "start_promotion": "2019-01-01",
        "end_promotion": "2019-01-10",
        "promotional_price": "10.00",
        "payment_option": "R$ 11,25 à vista com desconto Boleto - Yapay",
        "payment_option_details": [
            {
                "display_name": "Boleto - Yapay",
                "type": "bank_billet",
                "plots": "1",
                "value": "11.25",
                "tax": "0.00"
            }
        ],
        "available": "1",
        "illustrative_image": "",
        "Sku": [
            {
                "type": "Cor",
                "value": "Preta"
            },
            {
                "type": "Tamanho",
                "value": "40"
            }
        ],
        "quantity_sold": "10",
        "color_id_1": "23",
        "color_id_2": "0",
        "VariantImage": [
            {
                "http": "http://images.tcdn.com.br/img/img_prod/406562/18_123.jpg",
                "https": "https://images.tcdn.com.br/img/img_prod/406562/18_123.jpg",
                "thumbs": {
                    "30": {
                        "http": "http://images.tcdn.com.br/img/img_prod/123/30_123.jpg",
                        "https": "https://images.tcdn.com.br/img/img_prod/123/30_123.jpg"
                    },
                    "90": {
                        "http": "http://images.tcdn.com.br/img/img_prod/123/90_123.jpg",
                        "https": "https://images.tcdn.com.br/img/img_prod/123/90_123.jpg"
                    },
                    "180": {
                        "http": "http://images.tcdn.com.br/img/img_prod/123/180_123.jpg",
                        "https": "https://images.tcdn.com.br/img/img_prod/123/180_123.jpg"
                    }
                }
            }
        ]
    }
}
Campo Tipo Descrição
Variant Object Dados da variação
id Number Código da variação
ean String Código EAN da variação
order String Ordem da visualização da variação
product_id Number Código da variação
price Decimal Preço da variação
cost_price Decimal Preço da variação de custo da variação
stock Number Estoque da variação
minimum_stock Number Estoque mínimo da variação
reference String Referência da variação
weight Decimal Peso da variação
cubic_weight Decimal Peso cubico da variação
length Decimal Comprimento da variação
width Decimal Largura da variação
height Decimal Altura da variação
start_promotion Date Data de início de promoção da variação
end_promotion Date Data de termino de promoção da variação
promotional_price Decimal Preço promocional da variação
payment_option String Detalhes/Opções de pagamento da variação
payment_option_details Object[ ] Detalhes/Opções separadas de pagamento da variação
display_name String Nome da forma de pagamento da variação
type String Tipo da forma de pagamento da variação
plots Number Quantidade de parcelas da forma de pagamento da variação
value Decimal Valor da parcela de pagamento da variação
tax Decimal Valor da taxa da parcela da forma de pagamento da variação
available Number Variação disponível (Veja Tabela A)
illustrative_image String Imagem ilustrativa da variação
color_id_1 String Código da cor primária da variação
color_id_2 String Código da cor secundaria da variação
Sku String SKU da variação
type String Tipo de SKU da variação
value String Valor do SKU da variação
image String URL da imagem do SKU da variação
image_secure String URL segura da imagem do SKU da variação
VariantImage Object[ ] Imagens da variação
http String URL da imagem da variação
https String URL segura da imagem da variação
thumbs Object Miniaturas da imagem da variação
30 Object Miniaturas da imagem da variação (30px)
http String URL da miniaturas da imagem da variação (30px)
https String URL segura da miniaturas da imagem da variação (30px)
90 Object Miniaturas da imagem (90px)
http String URL da miniaturas da imagem da variação (90px)
https String URL segura da miniaturas da imagem da variação (90px)
180 Object Miniaturas da imagem da variação (180px)
http String URL da miniaturas da imagem da variação (180px)
https String URL segura da miniaturas da imagem da variação (180px)

Cadastrar Variação#post

Requisição para inclusão de variação do produto. Deverá enviar o JSON com os dados da variação para a criação.

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/products/variants/?access_token={{access_token}}' \
--data-urlencode '["Variant"]["product_id"]=123' \
--data-urlencode '["Variant"]["ean"]=ABC' \
--data-urlencode '["Variant"]["order"]=1' \
--data-urlencode '["Variant"]["price"]=12.00' \
--data-urlencode '["Variant"]["cost_price"]=10.00' \
--data-urlencode '["Variant"]["stock"]=200' \
--data-urlencode '["Variant"]["minimum_stock"]=10' \
--data-urlencode '["Variant"]["reference"]=THR016' \
--data-urlencode '["Variant"]["weight"]=21' \
--data-urlencode '["Variant"]["length"]=21' \
--data-urlencode '["Variant"]["width"]=21' \
--data-urlencode '["Variant"]["height"]=21' \
--data-urlencode '["Variant"]["start_promotion"]=2021-01-01' \
--data-urlencode '["Variant"]["end_promotion"]=2021-02-01' \
--data-urlencode '["Variant"]["promotional_price"]=10.00' \
--data-urlencode '["Variant"]["promotional_price"]=10.00' \
--data-urlencode '["Variant"]["promotional_price"]=10.00' \
--data-urlencode '["Variant"]["Sku"][0]["type"]=Cor' \
--data-urlencode '["Variant"]["Sku"][0]["value"]=Azul' \
--data-urlencode '["Variant"]["Sku"][1]["type"]=Tamanho' \
--data-urlencode '["Variant"]["Sku"][1]["value"]=38' \
--data-urlencode '["Variant"]["quantity_sold"]=10'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/products/variants/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["Variant"]["product_id"]' => '123',
  '["Variant"]["ean"]' => 'ABC',
  '["Variant"]["order"]' => '1',
  '["Variant"]["price"]' => '12.00',
  '["Variant"]["cost_price"]' => '10.00',
  '["Variant"]["stock"]' => '200',
  '["Variant"]["minimum_stock"]' => '10',
  '["Variant"]["reference"]' => 'THR016',
  '["Variant"]["weight"]' => '21',
  '["Variant"]["length"]' => '21',
  '["Variant"]["width"]' => '21',
  '["Variant"]["height"]' => '21',
  '["Variant"]["start_promotion"]' => '2021-01-01',
  '["Variant"]["end_promotion"]' => '2021-02-01',
  '["Variant"]["promotional_price"]' => '10.00',
  '["Variant"]["promotional_price"]' => '10.00',
  '["Variant"]["promotional_price"]' => '10.00',
  '["Variant"]["Sku"][0]["type"]' => 'Cor',
  '["Variant"]["Sku"][0]["value"]' => 'Azul',
  '["Variant"]["Sku"][1]["type"]' => 'Tamanho',
  '["Variant"]["Sku"][1]["value"]' => '38',
  '["Variant"]["quantity_sold"]' => '10'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/products/variants/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("[\"Variant\"][\"product_id\"]", "123");
request.AddParameter("[\"Variant\"][\"ean\"]", "ABC");
request.AddParameter("[\"Variant\"][\"order\"]", "1");
request.AddParameter("[\"Variant\"][\"price\"]", "12.00");
request.AddParameter("[\"Variant\"][\"cost_price\"]", "10.00");
request.AddParameter("[\"Variant\"][\"stock\"]", "200");
request.AddParameter("[\"Variant\"][\"minimum_stock\"]", "10");
request.AddParameter("[\"Variant\"][\"reference\"]", "THR016");
request.AddParameter("[\"Variant\"][\"weight\"]", "21");
request.AddParameter("[\"Variant\"][\"length\"]", "21");
request.AddParameter("[\"Variant\"][\"width\"]", "21");
request.AddParameter("[\"Variant\"][\"height\"]", "21");
request.AddParameter("[\"Variant\"][\"start_promotion\"]", "2021-01-01");
request.AddParameter("[\"Variant\"][\"end_promotion\"]", "2021-02-01");
request.AddParameter("[\"Variant\"][\"promotional_price\"]", "10.00");
request.AddParameter("[\"Variant\"][\"promotional_price\"]", "10.00");
request.AddParameter("[\"Variant\"][\"promotional_price\"]", "10.00");
request.AddParameter("[\"Variant\"][\"Sku\"][0][\"type\"]", "Cor");
request.AddParameter("[\"Variant\"][\"Sku\"][0][\"value\"]", "Azul");
request.AddParameter("[\"Variant\"][\"Sku\"][1][\"type\"]", "Tamanho");
request.AddParameter("[\"Variant\"][\"Sku\"][1][\"value\"]", "38");
request.AddParameter("[\"Variant\"][\"quantity_sold\"]", "10");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"Variant\"][\"product_id\"]=123&[\"Variant\"][\"ean\"]=ABC&[\"Variant\"][\"order\"]=1&[\"Variant\"][\"price\"]=12.00&[\"Variant\"][\"cost_price\"]=10.00&[\"Variant\"][\"stock\"]=200&[\"Variant\"][\"minimum_stock\"]=10&[\"Variant\"][\"reference\"]=THR016&[\"Variant\"][\"weight\"]=21&[\"Variant\"][\"length\"]=21&[\"Variant\"][\"width\"]=21&[\"Variant\"][\"height\"]=21&[\"Variant\"][\"start_promotion\"]=2021-01-01&[\"Variant\"][\"end_promotion\"]=2021-02-01&[\"Variant\"][\"promotional_price\"]=10.00&[\"Variant\"][\"promotional_price\"]=10.00&[\"Variant\"][\"promotional_price\"]=10.00&[\"Variant\"][\"Sku\"][0][\"type\"]=Cor&[\"Variant\"][\"Sku\"][0][\"value\"]=Azul&[\"Variant\"][\"Sku\"][1][\"type\"]=Tamanho&[\"Variant\"][\"Sku\"][1][\"value\"]=38&[\"Variant\"][\"quantity_sold\"]=10");
Request request = new Request.Builder()
  .url("https://{api_address}/products/variants/?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Estrutura do Json:

{
    "Variant": {
        "product_id": "18",
        "ean": "125",
        "order": "1",
        "price": "12.50",
        "cost_price": "10.00",
        "stock": "51",
        "minimum_stock": "1",
        "reference": "THR016-2",
        "weight": "21",
        "length": "21",
        "width": "21",
        "height": "21",
        "start_promotion": "2019-01-01",
        "end_promotion": "2019-01-10",
        "promotional_price": "10.00",
        "type_1": "Cor",
        "value_1": "Preta"
        "type_2": "Tamanho",
        "value_2": "40",
        "quantity_sold": "10"
    }
}

Método POST

https://{api_address}/products/variants/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
Variant JSON Dados da variação
product_id Number Código do produto principal
ean String EAN da variação
order Number Ordem da visualização da variação
price Decimal Preço da variação
cost_price Decimal Preço de custo da variação
stock Number Estoque da variação
minimum_stock Number Estoque mínimo da variação
reference String Referência da variação
weight Number Peso da variação
length Number Comprimento da variação
width Number Largura da variação
height Number Altura da variação
start_promotion Date Data de início da promoção da variação (Formato: aaaa-mm-dd)
end_promotion Date Data de termino da promoção da variação (Formato: aaaa-mm-dd)
promotional_price Decimal Preço promocional da variação
type String Tipo de sku da variação
value String Valor de sku da variação
quantity_sold Number Quantidade vendida da variação

Obs. Variação e Produtos eles são relacionados através do campo product_id passado no corpo do JSON, tanto o produto como a variação seu id é gerado de forma IDENPENDENTE, ou seja, ele podem ter o mesmo id, porém seu vinculo é estabelecido no POST, quando passado o product_id

Limite de variação por produto

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "123",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da variação
code Number Código do retorno (201)

Atualizar Dados da Variação#put

Requisição para alterar os dados da variação. Deverá enviar o JSON com os dados da variação para alteração.

Código de Exemplo:

curl --location -g --request PUT 'https://{api_address}/products/variants/?access_token={{access_token}}' \
--data-urlencode '["Variant"]["product_id"]=123' \
--data-urlencode '["Variant"]["ean"]=ABC' \
--data-urlencode '["Variant"]["order"]=1' \
--data-urlencode '["Variant"]["price"]=12.00' \
--data-urlencode '["Variant"]["cost_price"]=10.00' \
--data-urlencode '["Variant"]["stock"]=200' \
--data-urlencode '["Variant"]["minimum_stock"]=10' \
--data-urlencode '["Variant"]["reference"]=THR016' \
--data-urlencode '["Variant"]["weight"]=21' \
--data-urlencode '["Variant"]["length"]=21' \
--data-urlencode '["Variant"]["width"]=21' \
--data-urlencode '["Variant"]["height"]=21' \
--data-urlencode '["Variant"]["start_promotion"]=2021-01-01' \
--data-urlencode '["Variant"]["end_promotion"]=2021-02-01' \
--data-urlencode '["Variant"]["promotional_price"]=10.00' \
--data-urlencode '["Variant"]["promotional_price"]=10.00' \
--data-urlencode '["Variant"]["promotional_price"]=10.00' \
--data-urlencode '["Variant"]["Sku"][0]["type"]=Cor' \
--data-urlencode '["Variant"]["Sku"][0]["value"]=Azul' \
--data-urlencode '["Variant"]["Sku"][1]["type"]=Tamanho' \
--data-urlencode '["Variant"]["Sku"][1]["value"]=38' \
--data-urlencode '["Variant"]["quantity_sold"]=10'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/products/variants/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_PUT);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["Variant"]["product_id"]' => '123',
  '["Variant"]["ean"]' => 'ABC',
  '["Variant"]["order"]' => '1',
  '["Variant"]["price"]' => '12.00',
  '["Variant"]["cost_price"]' => '10.00',
  '["Variant"]["stock"]' => '200',
  '["Variant"]["minimum_stock"]' => '10',
  '["Variant"]["reference"]' => 'THR016',
  '["Variant"]["weight"]' => '21',
  '["Variant"]["length"]' => '21',
  '["Variant"]["width"]' => '21',
  '["Variant"]["height"]' => '21',
  '["Variant"]["start_promotion"]' => '2021-01-01',
  '["Variant"]["end_promotion"]' => '2021-02-01',
  '["Variant"]["promotional_price"]' => '10.00',
  '["Variant"]["promotional_price"]' => '10.00',
  '["Variant"]["promotional_price"]' => '10.00',
  '["Variant"]["Sku"][0]["type"]' => 'Cor',
  '["Variant"]["Sku"][0]["value"]' => 'Azul',
  '["Variant"]["Sku"][1]["type"]' => 'Tamanho',
  '["Variant"]["Sku"][1]["value"]' => '38',
  '["Variant"]["quantity_sold"]' => '10'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/products/variants/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.PUT);
request.AddParameter("[\"Variant\"][\"product_id\"]", "123");
request.AddParameter("[\"Variant\"][\"ean\"]", "ABC");
request.AddParameter("[\"Variant\"][\"order\"]", "1");
request.AddParameter("[\"Variant\"][\"price\"]", "12.00");
request.AddParameter("[\"Variant\"][\"cost_price\"]", "10.00");
request.AddParameter("[\"Variant\"][\"stock\"]", "200");
request.AddParameter("[\"Variant\"][\"minimum_stock\"]", "10");
request.AddParameter("[\"Variant\"][\"reference\"]", "THR016");
request.AddParameter("[\"Variant\"][\"weight\"]", "21");
request.AddParameter("[\"Variant\"][\"length\"]", "21");
request.AddParameter("[\"Variant\"][\"width\"]", "21");
request.AddParameter("[\"Variant\"][\"height\"]", "21");
request.AddParameter("[\"Variant\"][\"start_promotion\"]", "2021-01-01");
request.AddParameter("[\"Variant\"][\"end_promotion\"]", "2021-02-01");
request.AddParameter("[\"Variant\"][\"promotional_price\"]", "10.00");
request.AddParameter("[\"Variant\"][\"promotional_price\"]", "10.00");
request.AddParameter("[\"Variant\"][\"promotional_price\"]", "10.00");
request.AddParameter("[\"Variant\"][\"Sku\"][0][\"type\"]", "Cor");
request.AddParameter("[\"Variant\"][\"Sku\"][0][\"value\"]", "Azul");
request.AddParameter("[\"Variant\"][\"Sku\"][1][\"type\"]", "Tamanho");
request.AddParameter("[\"Variant\"][\"Sku\"][1][\"value\"]", "38");
request.AddParameter("[\"Variant\"][\"quantity_sold\"]", "10");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"Variant\"][\"product_id\"]=123&[\"Variant\"][\"ean\"]=ABC&[\"Variant\"][\"order\"]=1&[\"Variant\"][\"price\"]=12.00&[\"Variant\"][\"cost_price\"]=10.00&[\"Variant\"][\"stock\"]=200&[\"Variant\"][\"minimum_stock\"]=10&[\"Variant\"][\"reference\"]=THR016&[\"Variant\"][\"weight\"]=21&[\"Variant\"][\"length\"]=21&[\"Variant\"][\"width\"]=21&[\"Variant\"][\"height\"]=21&[\"Variant\"][\"start_promotion\"]=2021-01-01&[\"Variant\"][\"end_promotion\"]=2021-02-01&[\"Variant\"][\"promotional_price\"]=10.00&[\"Variant\"][\"promotional_price\"]=10.00&[\"Variant\"][\"promotional_price\"]=10.00&[\"Variant\"][\"Sku\"][0][\"type\"]=Cor&[\"Variant\"][\"Sku\"][0][\"value\"]=Azul&[\"Variant\"][\"Sku\"][1][\"type\"]=Tamanho&[\"Variant\"][\"Sku\"][1][\"value\"]=38&[\"Variant\"][\"quantity_sold\"]=10");
Request request = new Request.Builder()
  .url("https://{api_address}/products/variants/?access_token={{access_token}}")
  .method("PUT", body)
  .build();
Response response = client.newCall(request).execute();

Estrutura do Json:

{
    "Variant": {
        "ean": "123",
        "order": "2",
        "price": "12.50",
        "cost_price": "10.00",
        "stock": "51",
        "minimum_stock": "1",
        "reference": "THR016-1",
        "weight": "21",
        "length": "21",
        "width": "21",
        "height": "21",
        "start_promotion": "2019-01-01",
        "end_promotion": "2019-01-10",
        "promotional_price": "10.00",
        "Sku": [
            {
                "type": "Cor",
                "value": "Azul"
            },
            {
                "type": "Tamanho",
                "value": "38"
            }
        ],
        "quantity_sold": "10"
    }
}

Método PUT

https://{api_address}/products/variants/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código da variação
Variant JSON Dados da variação
ean String EAN da variação
order Number Ordem da visualização da variação
price Decimal Preço da variação
cost_price Decimal Preço de custo da variação
stock Number Estoque da variação
minimum_stock Number Estoque mínimo da variação
reference String Referência da variação
weight Number Peso da variação
length Number Comprimento da variação
width Number Largura da variação
height Number Altura da variação
start_promotion Date Data de início da promoção da variação (Formato: aaaa-mm-dd)
end_promotion Date Data de termino da promoção da variação (Formato: aaaa-mm-dd)
promotional_price Decimal Preço promocional da variação
Sku Object[ ] Sku da variação
type String Tipo de sku da variação
value String Valor de sku da variação
quantity_sold Number Quantidade vendida da variação

obs:

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Saved",
    "id": "123",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da variação
code Number Código do retorno (200)

Excluir Variação#delete

Requisição para excluir uma variação do produto.

Código de Exemplo:

curl --location -g --request DELETE 'https://{api_address}/products/variants/:id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/products/variants/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_DELETE);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/products/variants/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.DELETE);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://{api_address}/products/variants/:id?access_token={{access_token}}")
  .method("DELETE", body)
  .build();
Response response = client.newCall(request).execute();

Método DELETE

https://{api_address}/products/variants/:id?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do cliente

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Deleted",
    "id": "123",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da variação
code Number Código do retorno (200)

Tabelas Auxiliares de Produtos

Tabela A - Disponibilidade do produto (campo available)

Valor Descrição
0 Produto indisponível
1 Produto disponível

Limitação de variações por produto

API

Para cadastro de variações via API, ao atingir o limite de 100 variações, será apresentado erro, informando o atingimento do limite, não permitindo a criação de novas variações.

Erro apresentado caso tente criar uma ou mais variações e ja possua 100 variações.

imagem

API de Marca do Produto

Listagem de Marcas#get

Requisição para consultar os dados de diversas marcas.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/products/brands/?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/products/brands/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/products/brands/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/products/brands/?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/products/brands/

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
attrs String Filtro de campos disponíveis na listagem
sort String Ordenação de listagem, ex.: [campo]_[asc/desc]
limit Number Quantidade de registros (max. 50)
page Number Número da página da consulta

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "paging": {
        "total": 1,
        "page": 1,
        "offset": 0,
        "limit": 1,
        "maxLimit": 50
    },
    "sort": [
        {
            "id": "asc"
        }
    ],
    "availableFilters": [
        "id",
        "brand"
    ],
    "appliedFilters": [ ],
    "Brands": [
        {
          "Brand": {
            "id": "1",
            "slug": "marca-teste",
            "brand": "Marca Teste"
          }
        }
    ]
}
Campo Tipo Descrição
paging Object Dados de paginação
total Number Total de registros
page Number Páginas corrente
offset Number Registro inicial da página
limit Number Limite de registros
maxLimit Number Máximo de registros
sort Object Ordenação
availableFilters String Filtros disponíveis
appliedFilters String Filtros utilizados
Brands Object Dados da marcas dos produtos
Brand Object Dados da marca
id Number Código da marca
brand String Nome da marca
slug String Final da URL da marca

Consultar Dados da Marca#get

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/products/brands/:id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/products/brands/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/products/brands/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/products/brands/:id?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/products/brands/:id

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código da marca do produto

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "Brand": {
        "id": "9",
        "slug": "marca-produto",
        "brand": "Marca Produto"
    }
}
Campo Tipo Descrição
Brand Object Dados da marca
id Number Código da marca
slug String Final da URL da marca
brand String Nome da marca

Cadastrar Marca#post

Requisição para inclusão de marca do produto. Deverá enviar o JSON com os dados da marca para a criação.

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/products/brands/?access_token={{access_token}}' \
--data-urlencode '["Brand"]["slug"]=new-brand' \
--data-urlencode '["Brand"]["brand"]=Nova Marca'
<?php
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/products/brands/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["Brand"]["slug"]' => 'new-brand',
  '["Brand"]["brand"]' => 'Nova Marca'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/products/brands/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("[\"Brand\"][\"slug\"]", "new-brand");
request.AddParameter("[\"Brand\"][\"brand\"]", "Nova Marca");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"Brand\"][\"slug\"]=new-brand&[\"Brand\"][\"brand\"]=Nova Marca");
Request request = new Request.Builder()
  .url("https://{api_address}/products/brands/?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Método POST

https://{api_address}/products/brands/

Parâmetros enviados:

Json:

{
    "Brand": {
        "slug": "new-brand",
        "brand": "Nova Marca"
    }
}
Campo Tipo Descrição
access_token String Chave de acesso
Brand JSON Dados da marca
brand String Nome da marca
slug String Final da URL da marca

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "123",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da marca
code Number Código do retorno (201)

Atualizar Dados da Marca#put

Requisição para alterar os dados da marca. Deverá enviar o JSON com os dados da marca para alteração.

Código de Exemplo:

curl --location -g --request PUT 'https://{api_address}/products/brands/:id?access_token={{access_token}}' \
--data-urlencode '["Brand"]["slug"]=new-brand' \
--data-urlencode '["Brand"]["brand"]=Nova Marca'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/products/brands/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_PUT);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["Brand"]["slug"]' => 'new-brand',
  '["Brand"]["brand"]' => 'Nova Marca'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/products/brands/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.PUT);
request.AddParameter("[\"Brand\"][\"slug\"]", "new-brand");
request.AddParameter("[\"Brand\"][\"brand\"]", "Nova Marca");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"Brand\"][\"slug\"]=new-brand&[\"Brand\"][\"brand\"]=Nova Marca");
Request request = new Request.Builder()
  .url("https://{api_address}/products/brands/:id?access_token={{access_token}}")
  .method("PUT", body)
  .build();
Response response = client.newCall(request).execute();

Método PUT

https://{api_address}/products/brands/:id

Parâmetros enviados:

Json:

{
    "Brand": {
        "slug": "new-brand",
        "brand": "Nova Marca"
    }
}
Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código da marca
Brand JSON Dados da marca
brand String Nome da marca
slug String Final da URL da marca

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Saved",
    "id": "123",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da marca
code Number Código do retorno (200)

Excluir Marca#delete

Requisição para excluir uma marca do produto.

Código de Exemplo:

curl --location -g --request DELETE 'https://{api_address}/products/brands/:id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/products/brands/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_DELETE);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/products/brands/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.DELETE);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://{api_address}/products/brands/:id?access_token={{access_token}}")
  .method("DELETE", body)
  .build();
Response response = client.newCall(request).execute();

Método DELETE

https://{api_address}/products/brands/:id

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código da marca

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Deleted",
    "id": "123",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da marca
code Number Código do retorno (200)

API de Kit

Listagem Geral de Kits#get

Requisição para a consultar dados do kit.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/products/kits/?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/products/kits/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/products/kits/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/products/kits/?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/products/kits/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "paging": {
        "total": 2,
        "page": 1,
        "offset": 0,
        "limit": 30,
        "maxLimit": 50
    },
    "sort": [
        {
            "id": "asc"
        }
    ],
    "availableFilters": [
        "product_parent_id",
        "product_id"
    ],
    "appliedFilters": [],
    "ProductKits": [
        {
            "ProductKit": {
                "id": "1",
                "product_parent_id": "7035",
                "product_id": "7037",
                "quantity": "1",
                "price": "98.05",
                "price_rule": "1",
                "discount_type": "$",
                "discount_value": "1.95",
                "brand": "",
                "warranty": "",
                "availability_days": "0",
                "ProductVariantKit": []
            }
        },
        {
            "ProductKit": {
                "id": "3",
                "product_parent_id": "7035",
                "product_id": "7037",
                "quantity": "1",
                "price": "98.05",
                "price_rule": "1",
                "discount_type": "$",
                "discount_value": "1.95",
                "brand": "",
                "warranty": "",
                "availability_days": "0",
                "ProductVariantKit": [
                    {
                        "variant_id": "13",
                        "product_kit_id": "11",
                        "price": "50999.00"
                    },
                    {
                        "variant_id": "15",
                        "product_kit_id": "11",
                        "price": "50999.00"
                    },
                    {
                        "variant_id": "17",
                        "product_kit_id": "11",
                        "price": "50999.00"
                    }
                ]
            }
        }
    ]
}
Campo Tipo Descrição
ProductKit JSON Dados do kit
id String id do kit
product_parent_id String Será o id do produto principal, que irá compor o kit
product_id String Será o id do produto que irá compor o kit
quantity String Quantidade
price String Valor do kit
price_rule String Valor do produto
discount_type String Valor do desconto em reais ou percentual
discount_value String Valor de desconto do kit
brand String Marca
warranty String Dados da garantia do kit
availability_days Number Disponbilidade em dias do kit
ProductVariantKit String Variação do kit

Consultar Dados do Kit#get

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/products/kits/?access_token={{access_token}}&product_parent_id=:id'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/products/kits/?access_token={{access_token}}&product_parent_id=:id');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/products/kits/?access_token={{access_token}}&product_parent_id=:id");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/products/kits/?access_token={{access_token}}&product_parent_id=:id")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/products/kits/?access_token={token}&product_parent_id=:id

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
product_parent_id String id

Retorno em caso de sucesso (status code 200 ou 201)

{
    "paging": {
        "total": 1,
        "page": 1,
        "offset": 0,
        "limit": 30,
        "maxLimit": 50
    },
    "sort": [
        {
            "id": "asc"
        }
    ],
    "availableFilters": [
        "product_parent_id",
        "product_id"
    ],
    "appliedFilters": {
        "ProductKit.product_parent_id": "7069"
    },
    "ProductKits": [
        {
            "ProductKit": {
                "id": "9",
                "product_parent_id": "7069",
                "product_id": "44",
                "quantity": "1",
                "price": "218.05",
                "price_rule": "1",
                "discount_type": "$",
                "discount_value": "1.95",
                "brand": "",
                "warranty": "",
                "availability_days": "0",
                "ProductVariantKit": [
                    {
                        "variant_id": "13",
                        "product_kit_id": "11",
                        "price": "50999.00"
                    },
                    {
                        "variant_id": "15",
                        "product_kit_id": "11",
                        "price": "50999.00"
                    },
                    {
                        "variant_id": "17",
                        "product_kit_id": "11",
                        "price": "50999.00"
                    }
                ]
            }
        }
    ]
}

Cadastrar Kit#post

Requisição para inclusão de um kit. Deverá enviar o JSON com os dados do kit para a criação.

Primeiramente, para trabalhar com kit, é necessário que esse recurso esteja habilitado na loja, caso contrário será necessário entrar em contato diretamente com a equipe de atendimento para efetuar a liberação.

Inicialmente será necessário criar um produto utilizando a mesma estrutura da API de Produtos, no entanto, no json você deverá vincular o campo is_kit=1

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/products/?access_token={{access_token}}' \
--data-urlencode '["Product"]["is_kit"]=1' \
--data-urlencode '["Product"]["name"]=Produto Kit Teste API' \
--data-urlencode '["Product"]["description"]=Descrição do Produto de Teste da API' \
--data-urlencode '["Product"]["description_small"]=Produto de Teste da API' \
--data-urlencode '["Product"]["price"]=3' \
--data-urlencode '["Product"]["stock"]=3' \
--data-urlencode '["Product"]["category_id"]=3' \
--data-urlencode '["Product"]["available"]=1' \
--data-urlencode '["Product"]["reference"]=111' \
--data-urlencode '["Product"]["related_categories"]=[]' \
--data-urlencode '["Product"]["release_date"]=' \
--data-urlencode '["Product"]["picture_source_1"]=http://bancodeimagens/imagem1.jpg'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/products/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["Product"]["is_kit"]' => '1',
  '["Product"]["name"]' => 'Produto Kit Teste API',
  '["Product"]["description"]' => 'Descrição do Produto de Teste da API',
  '["Product"]["description_small"]' => 'Produto de Teste da API',
  '["Product"]["price"]' => '3',
  '["Product"]["stock"]' => '3',
  '["Product"]["category_id"]' => '3',
  '["Product"]["available"]' => '1',
  '["Product"]["reference"]' => '111',
  '["Product"]["related_categories"]' => '[]',
  '["Product"]["release_date"]' => '',
  '["Product"]["picture_source_1"]' => 'http://bancodeimagens/imagem1.jpg'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/products/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("[\"Product\"][\"is_kit\"]", "1");
request.AddParameter("[\"Product\"][\"name\"]", "Produto Kit Teste API");
request.AddParameter("[\"Product\"][\"description\"]", "Descrição do Produto de Teste da API");
request.AddParameter("[\"Product\"][\"description_small\"]", "Produto de Teste da API");
request.AddParameter("[\"Product\"][\"price\"]", "3");
request.AddParameter("[\"Product\"][\"stock\"]", "3");
request.AddParameter("[\"Product\"][\"category_id\"]", "3");
request.AddParameter("[\"Product\"][\"available\"]", "1");
request.AddParameter("[\"Product\"][\"reference\"]", "111");
request.AddParameter("[\"Product\"][\"related_categories\"]", "[]");
request.AddParameter("[\"Product\"][\"release_date\"]", "");
request.AddParameter("[\"Product\"][\"picture_source_1\"]", "http://bancodeimagens/imagem1.jpg");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"Product\"][\"is_kit\"]=1&[\"Product\"][\"name\"]=Produto Kit Teste API&[\"Product\"][\"description\"]=Descrição do Produto de Teste da API&[\"Product\"][\"description_small\"]=Produto de Teste da API&[\"Product\"][\"price\"]=3&[\"Product\"][\"stock\"]=3&[\"Product\"][\"category_id\"]=3&[\"Product\"][\"available\"]=1&[\"Product\"][\"reference\"]=111&[\"Product\"][\"related_categories\"]=[]&[\"Product\"][\"release_date\"]=&[\"Product\"][\"picture_source_1\"]=http://bancodeimagens/imagem1.jpg");
Request request = new Request.Builder()
  .url("https://{api_address}/products/?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Método POST

https://{api_address}/products/?access_token={{access_token}}

Para efetuar a criação do kit via API, é necessário que os produtos já existam na loja, para então criar o kit, na criação do produto tipo kit, deverá ser vinculado o is_kit = 1 no produto considerado como o principal na formação do kit, o que irá acompanhar os demais id de produtos para compor o kit. E deverá ser informado is_kit = 0 para os produtos que servirão como parte do kit, porém não será a peça principal.

1 - Criar o produto através do método POST, utilizando a API de Cadastrar Produto

Parâmetros enviados:

Estrutura de Json:

{
    "Product":{
        "is_kit": 1,
        "name":"Produto Kit Teste API",
        "description":"Descrição do Produto de Teste da API",
        "description_small":"Produto de Teste da API",
       "price": 10.00,
       "stock": 3,
        "category_id":"3",
        "available":1,
        "reference":"111",
        "related_categories":[],
        "release_date":"",
        "picture_source_1":"http://bancodeimagens/imagem1.jpg",
        "picture_source_2":"http://bancodeimagens/imagem2.jpg",
        "picture_source_3":"http://bancodeimagens/imagem3.jpg"
    }
}
Campo Tipo Descrição
access_token String Chave de acesso
Product JSON Dados do produto
is_kit Number Produto possui kit (Veja Tabela A)
name String (200) Nome do produto
description String (4800) Descrição do produto
description_small String (500) Descrição resumida do produto
price Number Descrição resumida do produto
stock String Descrição resumida do produto
category_id Number Código da categoria principal do produto
available Number Produto disponível (Veja Tabela B)
reference String (120) Referência do produto
related_categories Number Categorias adicionais do produto (separados por vírgula)
release_date Date Data de lançamento do produto (Formato: aaaa-mm-dd)
picture_source_1 String Imagem principal do produto (Informar a URL para cadastro)
picture_source_2 String Imagem do produto - imagem 2 (Informar a URL para cadastro)
picture_source_3 String Imagem do produto - imagem 3 (Informar a URL para cadastro)
picture_source_4 String Imagem do produto - imagem 4 (Informar a URL para cadastro)
picture_source_5 String Imagem do produto - imagem 5 (Informar a URL para cadastro)
picture_source_6 String Imagem do produto - imagem 6 (Informar a URL para cadastro)

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
  "message": "Created",
  "id": "7035",
  "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do cliente
code Number Código do retorno (201)

2 - Criar o kit (vínculo do produto is_kit com os produtos que compõe o kit), por meio do método POST.

Método POST

https://{api_address}/products/kits/?access_token={token}

Parâmetros enviados:

Estrutura do Json:

{
  "Product":{
    "is_kit": 1,
    "name":"Produto Kit Teste API",
    "description":"Descrição do Produto Kit de Teste da API",
    "description_small":"Produto de Teste da API",
    "price": 10.00,
    "stock": 3,
    "category_id":"3",
    "available":1,
    "reference":"111",
    "related_categories":[],
    "release_date":"",
    "picture_source_1":"http://bancodeimagens/imagem1.jpg",
    "picture_source_2":"http://bancodeimagens/imagem2.jpg",
    "picture_source_3":"http://bancodeimagens/imagem3.jpg"
  }
}
Campo Tipo Descrição
access_token String Chave de acesso
product_parent_id String Será o id do kit, inclusive o mesmo deverá ter sido cadastrado com is_kit = 1
product_id String Será o id do produto principal que irá compor o kit, o mesmo deverá ter sido cadastrado com is_kit = 0
quantity String Quantidade do produto para compor o kit
price_rule String Valor do produto (Veja Tabela C)
discount_type String Valor do desconto em reais ou percentual (Veja Tabela D)
discount_value Number Valor do desconto

Dessa forma, se um kit for composto por 3 produtos, o produto pai deverá ser carregado no campo "product_parent_id" e os demais produtos deverá ser informado no campo "product_id", sendo um produto em cada nó.

No caso, na exemplificação abaixo, os produtos de id: 6;2;87 serão componentes para a criação do kit do produto 799.

Lembrando que para a formação do kit, é necessário que o mesmo seja formado por três produtos no total e possua no mínimo dois nós. Em caso de ser um kit formado somente de um id de produto "pai" e um id de produto "filho", o kit deverá ser formado então com uma peça do produto pai e duas peças do produto filho, sendo representados em dois nós distintos, mesmo o produto filho sendo o mesmo em cada nó.

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
code Number Código do retorno (201)

A visualização dos produtos dentro do painel administrativo seguirá da seguinte forma:

Visualização de produto kit "pai" (is_kit = 1) = Será visualizado através do caminho Produtos > Kit de Produtos Visualização de produto que apenas compõe o kit "filho" (is_kit = 0) = Será visualizado através do caminho Produtos > Produtos cadastrados

Atualizar Dados do Kit#put

Atualmente o vínculo de produtos ao kit não tem PUT, apenas POST. Dessa forma caso deseje alterar os dados do kit, será necessário efetuar um novo POST.

Método POST

https://{api_address}/products/kits/?access_token={token}

Parâmetros enviados:

Estrutura do Json:

[
  {
      "product_parent_id": "223456913",
      "product_id": "223456907",
      "quantity": "1",
      "price_rule": "1",
      "discount_type": "$",
      "discount_value": 1.95
  },
  {
      "product_parent_id": "223456913",
      "product_id": "223456849",
      "ProductVariantKit": [
          {
              "variant_id": "181",
              "product_kit_id": "223456913",
              "price": "20"
          },
          {
              "variant_id": "183",
              "product_kit_id": "223456913",
              "price": "20"
          },
          {
              "variant_id": "187",
              "product_kit_id": "223456913",
              "price": "30"
          }
      ],
      "quantity": "1",
      "price_rule": "2",
      "discount_type": "%",
      "discount_value": 3
  }
]
Campo Tipo Descrição
access_token String Chave de acesso
product_parent_id String Será o id do kit, inclusive o mesmo deverá ter sido cadastrado com is_kit = 1
product_id String Será o id do produto principal que irá compor o kit, o mesmo deverá ter sido cadastrado com is_kit = 0
quantity String Quantidade do produto para compor o kit
price_rule String Valor do produto (Veja Tabela C)
discount_type String Valor do desconto em reais ou percentual (Veja Tabela D)
discount_value Number Valor do desconto

Tabelas Auxiliares de kits

Tabela A - Kit do produto (campo is_kit)

Valor Descrição
0 Produto não possui kit
1 Produto possui kit

Tabela B - Disponibilidade do produto (campo available)

Valor Descrição
0 Produto indisponível
1 Produto disponível

Tabela C - Valor do produto (campo price_rule)

Valor Descrição
1 Preço igual da loja
2 Preço com desconto

Tabela D - Valor do desconto (campo discount_type)

Valor Descrição
$ Valor do desconto em reais
% Valor do desconto em percentual

API de Informação Adicional (additional_info)

Atualizar as informações adicionais#put

Requisição para atualizar as informações adicionais.

Código de Exemplo:

curl --location -g --request PUT 'https://{api_address}/additional_info/:id?access_token={{access_token}}' \
--data-urlencode '["AdditionalInfo"]["type"]=1' \
--data-urlencode '["AdditionalInfo"]["name"]=Time do coração?' \
--data-urlencode '["AdditionalInfo"]["display_value"]=1' \
--data-urlencode '["AdditionalInfo"]["required"]=1' \
--data-urlencode '["AdditionalInfo"]["add_total"]=1' \
--data-urlencode '["AdditionalInfo"]["max_length"]=12' \
--data-urlencode '["AdditionalInfo"]["value"]=11.90' \
--data-urlencode '["AdditionalInfo"]["active"]=1'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/additional_info/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_PUT);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["AdditionalInfo"]["type"]' => '1',
  '["AdditionalInfo"]["name"]' => 'Time do coração?',
  '["AdditionalInfo"]["display_value"]' => '1',
  '["AdditionalInfo"]["required"]' => '1',
  '["AdditionalInfo"]["add_total"]' => '1',
  '["AdditionalInfo"]["max_length"]' => '12',
  '["AdditionalInfo"]["value"]' => '11.90',
  '["AdditionalInfo"]["active"]' => '1'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/additional_info/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.PUT);
request.AddParameter("[\"AdditionalInfo\"][\"type\"]", "1");
request.AddParameter("[\"AdditionalInfo\"][\"name\"]", "Time do coração?");
request.AddParameter("[\"AdditionalInfo\"][\"display_value\"]", "1");
request.AddParameter("[\"AdditionalInfo\"][\"required\"]", "1");
request.AddParameter("[\"AdditionalInfo\"][\"add_total\"]", "1");
request.AddParameter("[\"AdditionalInfo\"][\"max_length\"]", "12");
request.AddParameter("[\"AdditionalInfo\"][\"value\"]", "11.90");
request.AddParameter("[\"AdditionalInfo\"][\"active\"]", "1");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"AdditionalInfo\"][\"type\"]=1&[\"AdditionalInfo\"][\"name\"]=Time do coração?&[\"AdditionalInfo\"][\"display_value\"]=1&[\"AdditionalInfo\"][\"required\"]=1&[\"AdditionalInfo\"][\"add_total\"]=1&[\"AdditionalInfo\"][\"max_length\"]=12&[\"AdditionalInfo\"][\"value\"]=11.90&[\"AdditionalInfo\"][\"active\"]=1");
Request request = new Request.Builder()
  .url("https://{api_address}/additional_info/:id?access_token={{access_token}}")
  .method("PUT", body)
  .build();
Response response = client.newCall(request).execute();

Estrutura do Json:

{
    "AdditionalInfo": {
        "type": 1,
        "name": "Time do coração?",
        "display_value": 1,
        "required": 1,
        "add_total": 1,
        "max_length": 12,
        "value": "11.90",
        "active": 1
    }
}

Método PUT

https://{api_address}/additional_info/:id(additional_info)?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
AdditionalInfo JSON Informações adicionais do produto
type String Correspondo a forma como será exibida a informação adicional. Tabela A
name String Nome da informação adicional
display_value Number Se o valor será exibido. Tabela B
required Number Se será obrigatório ou não no momento da compra. Tabela C
add_total Number Se o valor será somado ou não ao produto. Tabela D
max_length Number Corresponde a quantidade de caracter que poderá ser inserido na informação adicional. Exemplo: Camisa de torcedor (possuirá dois dígitos)
value Decimal Valor do produto que estiver setado com a informação adicional
active Number Se a informação adicional estará ativa ou inativa. Tabela E

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Saved",
    "id": "17",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do cliente
code Number Código do retorno (201)

Atualizar as informações adicionais relacionadas ao Produto#put

Código de Exemplo:

curl --location -g --request PUT 'https://{api_address}/products/:id/additional_info/?access_token={{access_token}}' \
--data-raw '{
    "AdditionalInfo": {
        "info_id": 17,
        "inherit_deadline": 1,
        "deadline": 3,
        "order": 1
    }
}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/products/:id/additional_info/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_PUT);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setBody('{\n    "AdditionalInfo": {\n        "info_id": 17,\n        "inherit_deadline": 1,\n        "deadline": 3,\n        "order": 1\n    }\n}');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/products/:id/additional_info/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.PUT);
request.AddParameter("text/plain", "{\n    \"AdditionalInfo\": {\n        \"info_id\": 17,\n        \"inherit_deadline\": 1,\n        \"deadline\": 3,\n        \"order\": 1\n    }\n}",  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n    \"AdditionalInfo\": {\n        \"info_id\": 17,\n        \"inherit_deadline\": 1,\n        \"deadline\": 3,\n        \"order\": 1\n    }\n}");
Request request = new Request.Builder()
  .url("https://{api_address}/products/:id/additional_info/?access_token={{access_token}}")
  .method("PUT", body)
  .build();
Response response = client.newCall(request).execute();

Método PUT

https://{api_address}/products/:id(do_produto)/additional_info/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do cliente

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
code Number Código do retorno (200)

Tabelas Auxiliares de Informações Adicionais (additional_info)

Tabela A - Correspondo a forma como será exibida a informação adicional (campo type)

Valor Descrição
0 Linha de texto (input text)
1 Caixa de seleção (select)
2 Caixa de Texto (textarea)

Tabela B - Se o valor será exibido (campo display_value)

Valor Descrição
0 não exibir valor
1 exibir valor

Tabela C - Se será obrigatório ou não no momento da compra (campo required)

Valor Descrição
0 não é obrigatório
1 obrigatório

Tabela D - Se o valor será somado ou não ao produto (campo add_total)

Valor Descrição
0 não somar com o valor do preço do produto
1 somar com o total do preço do produto

Tabela E - Se a informação adicional estará ativa ou inativa (campo active)

Valor Descrição
0 inativa
1 ativa

Tabela F - Se herdará o prazo a ser inserido no frete (campo inherit_deadline)

Valor Descrição
0 não herdar prazo
1 herdar prazo

Listagem Geral das Informações Adicionais#get

Requisição para a consultar dados da additional_info.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/additional_info/?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/additional_info/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/additional_info/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/additional_info/?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/additional_info/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
AdditionalInfo JSON Informações adicionais do produto
Id String Id da AdditionalInfo
type String Corresponde ao tipo de exibição da informação adicional. Tabela A
display_as String Corresponde a forma como será exibida a informação adicional.
name String Nome da informação adicional
display_value Number Se o valor será exibido. Tabela B
required Number Se será obrigatório ou não no momento da compra. Tabela C
add_total Number Se o valor será somado ou não ao produto. Tabela D
max_length Number Corresponde a quantidade de caracter que poderá ser inserido na informação adicional. Exemplo: Camisa de torcedor (possuirá dois dígitos)
value Decimal Valor do produto que estiver setado com a informação adicional
active Number Se a informação adicional estará ativa ou inativa. Tabela E

Retorno de Sucesso:

{
    "paging": {
        "total": 3,
        "page": 1,
        "offset": 0,
        "limit": 30,
        "maxLimit": 50
    },
    "sort": [
        {
            "id": "asc"
        }
    ],
    "availableFilters": [
        "id",
        "type",
        "name",
        "display_value",
        "required",
        "add_total",
        "active",
        "order",
        "display_as",
        "max_length",
        "value",
        "height"
    ],
    "appliedFilters": [],
    "AdditionalInfos": [
        {
            "AdditionalInfo": {
                "id": "5",
                "type": "imput text",
                "name": "Time do coração?",
                "display_value": 0,
                "required": 0,
                "add_total": 0,
                "max_length": 0,
                "value": "1",
                "active": 1
            }
        },
        {
            "AdditionalInfo": {
                "id": "31",
                "type": "textarea",
                "name": "Time do coração?",
                "display_value": 1,
                "required": 1,
                "add_total": 1,
                "max_length": 12,
                "value": 11.9,
                "active": 1,
                "height": 0
            }
        },
        {
            "AdditionalInfo": {
                "id": "33",
                "type": "select",
                "display_as": "select",
                "name": "Time do coração?",
                "display_value": 1,
                "required": 1,
                "add_total": 1,
                "active": 1
            }
        }
    ]
}

Consultar Dados das Informações Adicionais#get

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/additional_info/:id/?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/additional_info/:id/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/additional_info/:id/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/additional_info/:id/?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/additional_info/:id(additional_info)/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
AdditionalInfo JSON Informações adicionais do produto
Id String Id da AdditionalInfo
type String Corresponde ao tipo de exibição da informação adicional. Tabela A
display_as String Corresponde a forma como será exibida a informação adicional.
name String Nome da informação adicional
display_value Number Se o valor será exibido. Tabela B
required Number Se será obrigatório ou não no momento da compra. Tabela C
add_total Number Se o valor será somado ou não ao produto. Tabela D
max_length Number Corresponde a quantidade de caracter que poderá ser inserido na informação adicional. Exemplo: Camisa de torcedor (possuirá dois dígitos)
value Decimal Valor do produto que estiver setado com a informação adicional
active Number Se a informação adicional estará ativa ou inativa. Tabela E

Retorno de Sucesso:

{
    "AdditionalInfo": {
        "id": "33",
        "type": "select",
        "display_as": "select",
        "name": "Time do coração?",
        "display_value": "1",
        "required": "1",
        "add_total": "1",
        "active": "1"
    }
}

Tabelas Auxiliares de Informações Adicionais (additional_info)

Tabela A - Correspondo a forma como será exibida a informação adicional (campo type)

Valor Descrição
0 Linha de texto (input text)
1 Caixa de seleção (select)
2 Caixa de Texto (textarea)

Tabela B - Se o valor será exibido (campo display_value)

Valor Descrição
0 não exibir valor
1 exibir valor

Tabela C - Se será obrigatório ou não no momento da compra (campo required)

Valor Descrição
0 não é obrigatório
1 obrigatório

Tabela D - Se o valor será somado ou não ao produto (campo add_total)

Valor Descrição
0 não somar com o valor do preço do produto
1 somar com o total do preço do produto

Tabela E - Se a informação adicional estará ativa ou inativa (campo active)

Valor Descrição
0 inativa
1 ativa

Cadastrar Informação Adicional#post

Requisição para cadastrar informação adicional. É possível inserir as Informações Adicionais ao Produto, via API.

Para acrescentar informações, além da descrição, sobre os seus produtos, você tem a opção de cadastrar as informações adicionais.

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/additional_info/?access_token={{access_token}}' \
--data-urlencode '["AdditionalInfo"]["type"]=1' \
--data-urlencode '["AdditionalInfo"]["name"]=Time do coração?' \
--data-urlencode '["AdditionalInfo"]["display_value"]=1' \
--data-urlencode '["AdditionalInfo"]["required"]=1' \
--data-urlencode '["AdditionalInfo"]["add_total"]=1' \
--data-urlencode '["AdditionalInfo"]["max_length"]=12' \
--data-urlencode '["AdditionalInfo"]["value"]=11.90' \
--data-urlencode '["AdditionalInfo"]["active"]=1'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/additional_info/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["AdditionalInfo"]["type"]' => '1',
  '["AdditionalInfo"]["name"]' => 'Time do coração?',
  '["AdditionalInfo"]["display_value"]' => '1',
  '["AdditionalInfo"]["required"]' => '1',
  '["AdditionalInfo"]["add_total"]' => '1',
  '["AdditionalInfo"]["max_length"]' => '12',
  '["AdditionalInfo"]["value"]' => '11.90',
  '["AdditionalInfo"]["active"]' => '1'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/additional_info/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("[\"AdditionalInfo\"][\"type\"]", "1");
request.AddParameter("[\"AdditionalInfo\"][\"name\"]", "Time do coração?");
request.AddParameter("[\"AdditionalInfo\"][\"display_value\"]", "1");
request.AddParameter("[\"AdditionalInfo\"][\"required\"]", "1");
request.AddParameter("[\"AdditionalInfo\"][\"add_total\"]", "1");
request.AddParameter("[\"AdditionalInfo\"][\"max_length\"]", "12");
request.AddParameter("[\"AdditionalInfo\"][\"value\"]", "11.90");
request.AddParameter("[\"AdditionalInfo\"][\"active\"]", "1");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"AdditionalInfo\"][\"type\"]=1&[\"AdditionalInfo\"][\"name\"]=Time do coração?&[\"AdditionalInfo\"][\"display_value\"]=1&[\"AdditionalInfo\"][\"required\"]=1&[\"AdditionalInfo\"][\"add_total\"]=1&[\"AdditionalInfo\"][\"max_length\"]=12&[\"AdditionalInfo\"][\"value\"]=11.90&[\"AdditionalInfo\"][\"active\"]=1");
Request request = new Request.Builder()
  .url("https://{api_address}/additional_info/?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Estrutura do Json:

{
    "AdditionalInfo": {
        "type": 0,
        "name": "Time do coração?",
        "display_value": 1,
        "required": 1,
        "add_total": 1,
        "max_length": 12,
        "value": "11.90",
        "active": 1
    }
}

Haverá uma diferença no envio do Json, quando o tipo escolhido for 1 ("type": 1)

{
    "AdditionalInfo": {
        "type": 1,
        "name": "Time do coração?",
        "display_value": 1,
        "required": 1,
        "add_total": 1,
        "max_length": 12,
        "value": "11.90",
        "active": 1,
        "options": [
            {
                "name": "São Paulo",
                "value": "15.00"
            },
            {
                "name": "Vasco",
                "value": "30.00"
            }
        ]
    }
}

Método POST

https://{api_address}/additional_info/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
AdditionalInfo JSON Informações adicionais do produto
type String Correspondo a forma como será exibida a informação adicional. Tabela A
name String Nome da informação adicional
display_value Number Se o valor será exibido. Tabela B
required Number Se será obrigatório ou não no momento da compra. Tabela C
add_total Number Se o valor será somado ou não ao produto. Tabela D
max_length Number Corresponde a quantidade de caracter que poderá ser inserido na informação adicional. Exemplo: Camisa de torcedor (possuirá dois dígitos)
value Decimal Valor do produto que estiver setado com a informação adicional
active Number Se a informação adicional estará ativa ou inativa. Tabela E

Parâmetros enviados quando "type:" 1:

Campo Tipo Descrição
access_token String Chave de acesso
AdditionalInfo JSON Informações adicionais do produto
type String Correspondo a forma como será exibida a informação adicional. Tabela A
name String Nome da informação adicional
display_value Number Se o valor será exibido. Tabela B
required Number Se será obrigatório ou não no momento da compra. Tabela C
add_total Number Se o valor será somado ou não ao produto. Tabela D
max_length Number Corresponde a quantidade de caracter que poderá ser inserido na informação adicional. Exemplo: Camisa de torcedor (possuirá dois dígitos)
value Decimal Valor do produto que estiver setado com a informação adicional
active Number Se a informação adicional estará ativa ou inativa. Tabela E
options Array Opções do select
name String Nome da opção a ser selecionada
value String Valor da opção a ser selecionada

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "17",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do AdditionalInfo
code Number Código do retorno (201)

Vincular a informação adicional ao produto, por meio do POST#post

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/products/:id/additional_info/?access_token={{access_token}}' \
--data-raw '{
    "AdditionalInfo": {
        "info_id": 17,
        "inherit_deadline": 1,
        "deadline": 3,
        "order": 1,
    }
}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/products/:id/additional_info/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setBody('{\n    "AdditionalInfo": {\n        "info_id": 17,\n        "inherit_deadline": 1,\n        "deadline": 3,\n        "order": 1\n    }\n}');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/products/:id/additional_info/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("text/plain", "{\n    \"AdditionalInfo\": {\n        \"info_id\": 17,\n        \"inherit_deadline\": 1,\n        \"deadline\": 3,\n        \"order\": 1\n    }\n}",  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n    \"AdditionalInfo\": {\n        \"info_id\": 17,\n        \"inherit_deadline\": 1,\n        \"deadline\": 3,\n        \"order\": 1\n    }\n}");
Request request = new Request.Builder()
  .url("https://{api_address}/products/:id/additional_info/?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Estrutura do Json:

{
  "AdditionalInfo": {
    "info_id": 17,
    "inherit_deadline": 1,
    "deadline": 3,
    "order": 1,
    "options_ids": [
      11,
      15
    ]
  }
}

Método POST

https://{api_address}/products/:id(do_produto)/additional_info/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
AdditionalInfo String Informações adicionais do produto
info_id String id da informação adicional gerada
inherit_deadline Number Se herdará o prazo a ser inserido no frete. Tabela F
deadline Number prazo que será adicionado ao frete, caso seja necessário para preparação da personalização do produto
order Number Ordem de exibição da informação adicional na loja virtual

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
code Number Código do retorno (201)

Tabelas Auxiliares de Informações Adicionais (additional_info)

Tabela A - Correspondo a forma como será exibida a informação adicional (campo type)

Valor Descrição
0 Linha de texto (input text)
1 Caixa de seleção (select)
2 Caixa de Texto (textarea)

Tabela B - Se o valor será exibido (campo display_value)

Valor Descrição
0 não exibir valor
1 exibir valor

Tabela C - Se será obrigatório ou não no momento da compra (campo required)

Valor Descrição
0 não é obrigatório
1 obrigatório

Tabela D - Se o valor será somado ou não ao produto (campo add_total)

Valor Descrição
0 não somar com o valor do preço do produto
1 somar com o total do preço do produto

Tabela E - Se a informação adicional estará ativa ou inativa (campo active)

Valor Descrição
0 inativa
1 ativa

Tabela F - Se herdará o prazo a ser inserido no frete (campo inherit_deadline)

Valor Descrição
0 não herdar prazo
1 herdar prazo

Excluir Informação Adicional Relacionada ao Produto#delete

Requisição para excluir uma informação adicional.

Código de Exemplo:

curl --location -g --request DELETE 'https://{api_address}/products/:id/additional_info/:id/?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/products/:id/additional_info/:id/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_DELETE);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/products/:id/additional_info/:id/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.DELETE);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://{api_address}/products/:id/additional_info/:id/?access_token={{access_token}}")
  .method("DELETE", body)
  .build();
Response response = client.newCall(request).execute();

Método DELETE

https://{api_address}/products/:id(do_produto)/additional_info/:id(additional_info)/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Deleted",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
code Number Código do retorno (200)

Excluitr uma Informação Adicional#delete

Código de Exemplo:

curl --location -g --request DELETE 'https://{api_address}/additional_info/:id/?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/additional_info/:id/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_DELETE);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/additional_info/:id/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.DELETE);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://{api_address}/additional_info/:id/?access_token={{access_token}}")
  .method("DELETE", body)
  .build();
Response response = client.newCall(request).execute();

Método DELETE

https://{api_address}/additional_info/:id(additional_info)/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Deleted",
    "id": "35",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da informação adicional
code Number Código do retorno (200)

API de Nota Fiscal

Listagem de Notas Fiscais#get

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/orders/invoices?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/orders/invoices?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/orders/invoices?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/orders/invoices?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/orders/invoices

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "paging": {
        "total": 6,
        "page": 1,
        "offset": 0,
        "limit": 1,
        "maxLimit": 50
    },
    "sort": [
        {
            "id": "desc"
        }
    ],
    "availableFilters": [],
    "appliedFilters": [],
    "OrderInvoices": [
        {
            "OrderInvoice": {
                "id": "123",
                "order_id": "123",
                "issue_date": "2016-08-15",
                "number": "213123213213",
                "serie": "123",
                "value": "50.85",
                "key": "12345678901234567890123456789012345678901234",
                "link": "http://www.link.com.br/12345678901234567890123456789012345678901234",
                "xml_danfe": "### XML DANFE ###",
                "created": "2016-08-16 16:19:40",
                "updated": "2016-08-17 16:15:39",
                "ProductCfop": [
                    {
                        "product_id": "123",
                        "variation_id": "0",
                        "cfop": "1234"
                    }
                ]
            }
        }
    ]
}
Campo Tipo Descrição
paging Object Dados de paginação
total Number Total de registros
page Number Página corrente
offset Number Registro inicial da página
limit Number Limite de registros
maxLimit Number Máximo de registros
sort Object Ordenação
availableFilters String Filtros disponíveis
appliedFilters String Filtros utilizados
OrderInvoices Object Listagem das notas fiscais
OrderInvoice Object Dados da nota fiscal
id Number Código da nota fiscal
order_id String Código do pedido
issue_date Date Data de emissão
Number String Número da nota fiscal
serie String Série da nota fiscal
value Decimal Valor total da nota fiscal
key String Chave da nota fiscal
link String URL de acesso da nota fiscal
xml_danfe String XML Danfe
created Date Data de criação
updated Date Data de atualização
ProductCfop Object Dados dos produtos CFOP
product_id Number Código do produto
variation_id Number Código da variação
cfop Number Código CFOP
order_invoice_id Number Código da nota fiscal

Consultar Dados da Nota Fiscal#get

Requisição para a consulta de dados de uma nota fiscal do pedido utilizando o código do pedido e o código da nota fical.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/orders/:order_id/invoices/:invoice_id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/orders/:order_id/invoices/:invoice_id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/orders/:order_id/invoices/:invoice_id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/orders/:order_id/invoices/:invoice_id?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/orders/:order_id/invoices/:invoice_id

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:order_id Number Código do pedido
:invoice_id Number Código do Nota Fiscal

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "OrderInvoices": [
        {
            "OrderInvoice": {
                "id": "123",
                "order_id": "123",
                "issue_date": "2016-08-15",
                "number": "213123213213",
                "serie": "123",
                "value": "50.85",
                "key": "12345678901234567890123456789012345678901234",
                "link": "http://link.com.br/12345678901234567890123456789012345678901234",
                "xml_danfe": "### XML DANFE ###"
            },
            "ProductCfop": [
                {
                    "product_id": "123",
                    "variation_id": "0",
                    "cfop": "1234",
                    "order_invoice_id": "123"
                }
            ]
        }
    ]
}
Campo Tipo Descrição
OrderInvoices Object Listagem das notas fiscais
OrderInvoice Object Dados da nota fiscal
id Number Código da nota fiscal
order_id String Código do pedido
issue_date Date Data de emissão
Number String Número da nota fiscal
serie String Série da nota fiscal
value Decimal Valor total da nota fiscal
key String Chave da nota fiscal
link String URL de acesso da nota fiscal
xml_danfe String XML Danfe
ProductCfop Object Dados dos produtos CFOP
product_id Number Código do produto
variation_id Number Código da variação
cfop Number Código CFOP
order_invoice_id Number Código da nota fiscal

Consultar Nota por Pedido#get

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/orders/:id/invoices?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/orders/:id/invoices?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/orders/:id/invoices?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/orders/:id/invoices?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/orders/:id/invoices

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do pedido

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "OrderInvoices": [
        {
            "OrderInvoice": {
                "id": "123",
                "order_id": "123",
                "issue_date": "2016-08-15",
                "number": "213123213213",
                "serie": "123",
                "value": "50.85",
                "key": "12345678901234567890123456789012345678901234",
                "link": "http://link.com.br/12345678901234567890123456789012345678901234",
                "xml_danfe": "### XML DANFE ###"
            },
            "ProductCfop": [
                {
                    "product_id": "123",
                    "variation_id": "0",
                    "cfop": "1234",
                    "order_invoice_id": "123"
                }
            ]
        }
    ]
}
Campo Tipo Descrição
OrderInvoices Object Listagem das notas fiscais
OrderInvoice Object Dados da nota fiscal
id Number Código da nota fiscal
order_id String Código do pedido
issue_date Date Data de emissão
Number String Número da nota fiscal
serie String Série da nota fiscal
value Decimal Valor total da nota fiscal
key String Chave da nota fiscal
link String URL de acesso da nota fiscal
xml_danfe String XML Danfe
ProductCfop Object Dados dos produtos CFOP
product_id Number Código do produto
variation_id Number Código da variação
cfop Number Código CFOP
order_invoice_id Number Código da nota fiscal

Cadastrar Nota Fiscal#post

Requisição para inclusão dos dados de nota fiscal de pedidos. Deverá enviar o JSON com os dados da nota fiscal para a criação.

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/orders/:id/invoices?access_token={{access_token}}' \
--data-urlencode '["issue_date"]=2021-01-15' \
--data-urlencode '["number"]=213123213213' \
--data-urlencode '["serie"]=123' \
--data-urlencode '["value"]=50.90' \
--data-urlencode '["key"]=12345678901234567890123456789012345678901234' \
--data-urlencode '["link"]=http://www.link.com.br/12345678901234567890123456789012345678901234' \
--data-urlencode '["xml_danfe"]=### XML DANFE ###' \
--data-urlencode '["ProductCfop"]["product_id"]=123' \
--data-urlencode '["ProductCfop"]["variation_id"]=0' \
--data-urlencode '["ProductCfop"]["cfop"]=1234'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/orders/:id/invoices?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["issue_date"]' => '2021-01-15',
  '["number"]' => '213123213213',
  '["serie"]' => '123',
  '["value"]' => '50.90',
  '["key"]' => '12345678901234567890123456789012345678901234',
  '["link"]' => 'http://www.link.com.br/12345678901234567890123456789012345678901234',
  '["xml_danfe"]' => '### XML DANFE ###',
  '["ProductCfop"]["product_id"]' => '123',
  '["ProductCfop"]["variation_id"]' => '0',
  '["ProductCfop"]["cfop"]' => '1234'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/orders/:id/invoices?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("[\"issue_date\"]", "2021-01-15");
request.AddParameter("[\"number\"]", "213123213213");
request.AddParameter("[\"serie\"]", "123");
request.AddParameter("[\"value\"]", "50.90");
request.AddParameter("[\"key\"]", "12345678901234567890123456789012345678901234");
request.AddParameter("[\"link\"]", "http://www.link.com.br/12345678901234567890123456789012345678901234");
request.AddParameter("[\"xml_danfe\"]", "### XML DANFE ###");
request.AddParameter("[\"ProductCfop\"][\"product_id\"]", "123");
request.AddParameter("[\"ProductCfop\"][\"variation_id\"]", "0");
request.AddParameter("[\"ProductCfop\"][\"cfop\"]", "1234");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"issue_date\"]=2021-01-15&[\"number\"]=213123213213&[\"serie\"]=123&[\"value\"]=50.90&[\"key\"]=12345678901234567890123456789012345678901234&[\"link\"]=http://www.link.com.br/12345678901234567890123456789012345678901234&[\"xml_danfe\"]=### XML DANFE ###&[\"ProductCfop\"][\"product_id\"]=123&[\"ProductCfop\"][\"variation_id\"]=0&[\"ProductCfop\"][\"cfop\"]=1234");
Request request = new Request.Builder()
  .url("https://{api_address}/orders/:id/invoices?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Método POST

https://{api_address}/orders/:id/invoices

Estrutura do Json:

{
    "issue_date": "2021-01-15",
    "number": "213123213213",
    "serie": "123",
    "value": "50.85",
    "key": "12345678901234567890123456789012345678901234",
    "link": "http://www.link.com.br/12345678901234567890123456789012345678901234",
    "xml_danfe": "### XML DANFE ###",
    "ProductCfop": [
        {
            "product_id": "123",
            "variation_id": "123",
            "cfop": "1234"
        }
    ]
}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do pedido
issue_date Date Data de emissão
number String Número da nota fiscal
serie String Série da nota fiscal
value Decimal Valor total da nota fiscal
key String Chave da nota fiscal
link String URL de acesso da nota fiscal
xml_danfe String XML Danfe
ProductCfop Object Dados dos produtos CFOP
product_id Number Código do produto
variation_id Number Código da variação
cfop Number Código CFOP

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "123",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da nota fiscal
code Number Código do retorno (201)

Atualizar Dados da Nota Fiscal#put

Requisição para alterar os dados de uma nota fiscal de pedidos. Deverá enviar o JSON com os dados da nota fiscal para a alteração.

Código de Exemplo:

curl --location -g --request PUT 'https://{api_address}/orders/:order_id/invoices/:invoice_id?access_token={{access_token}}' \
--data-urlencode '["issue_date"]=2021-01-15' \
--data-urlencode '["number"]=213123213213' \
--data-urlencode '["serie"]=123' \
--data-urlencode '["value"]=50.90' \
--data-urlencode '["key"]=12345678901234567890123456789012345678901234' \
--data-urlencode '["link"]=http://www.link.com.br/12345678901234567890123456789012345678901234' \
--data-urlencode '["xml_danfe"]=### XML DANFE ###' \
--data-urlencode '["ProductCfop"]["product_id"]=123' \
--data-urlencode '["ProductCfop"]["variation_id"]=0' \
--data-urlencode '["ProductCfop"]["cfop"]=1234'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/orders/:order_id/invoices/:invoice_id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_PUT);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["issue_date"]' => '2021-01-15',
  '["number"]' => '213123213213',
  '["serie"]' => '123',
  '["value"]' => '50.90',
  '["key"]' => '12345678901234567890123456789012345678901234',
  '["link"]' => 'http://www.link.com.br/12345678901234567890123456789012345678901234',
  '["xml_danfe"]' => '### XML DANFE ###',
  '["ProductCfop"]["product_id"]' => '123',
  '["ProductCfop"]["variation_id"]' => '0',
  '["ProductCfop"]["cfop"]' => '1234'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/orders/:order_id/invoices/:invoice_id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.PUT);
request.AddParameter("[\"issue_date\"]", "2021-01-15");
request.AddParameter("[\"number\"]", "213123213213");
request.AddParameter("[\"serie\"]", "123");
request.AddParameter("[\"value\"]", "50.90");
request.AddParameter("[\"key\"]", "12345678901234567890123456789012345678901234");
request.AddParameter("[\"link\"]", "http://www.link.com.br/12345678901234567890123456789012345678901234");
request.AddParameter("[\"xml_danfe\"]", "### XML DANFE ###");
request.AddParameter("[\"ProductCfop\"][\"product_id\"]", "123");
request.AddParameter("[\"ProductCfop\"][\"variation_id\"]", "0");
request.AddParameter("[\"ProductCfop\"][\"cfop\"]", "1234");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"issue_date\"]=2021-01-15&[\"number\"]=213123213213&[\"serie\"]=123&[\"value\"]=50.90&[\"key\"]=12345678901234567890123456789012345678901234&[\"link\"]=http://www.link.com.br/12345678901234567890123456789012345678901234&[\"xml_danfe\"]=### XML DANFE ###&[\"ProductCfop\"][\"product_id\"]=123&[\"ProductCfop\"][\"variation_id\"]=0&[\"ProductCfop\"][\"cfop\"]=1234");
Request request = new Request.Builder()
  .url("https://{api_address}/orders/:order_id/invoices/:invoice_id?access_token={{access_token}}")
  .method("PUT", body)
  .build();
Response response = client.newCall(request).execute();

Método PUT

https://{api_address}/orders/:order_id/invoices/:invoice_id

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do pedido
issue_date Date Data de emissão
number String Número da nota fiscal
serie String Série da nota fiscal
value Decimal Valor total da nota fiscal
key String Chave da nota fiscal
link String URL de acesso da nota fiscal
xml_danfe String XML Danfe
ProductCfop Object Dados dos produtos CFOP
product_id Number Código do produto
variation_id Number Código da variação
cfop Number Código CFOP

Estrutura do Json:

{
    "issue_date": "2021-01-15",
    "number": "213123213213",
    "serie": "123",
    "value": "50.90",
    "key": "12345678901234567890123456789012345678901234",
    "link": "http://www.link.com.br/12345678901234567890123456789012345678901234",
    "xml_danfe": "### XML DANFE ###",
    "ProductCfop": [
        {
            "product_id": "123",
            "variation_id": "123",
            "cfop": "1234"
        }
    ]
}

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Saved",
    "id": "1234",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da nota fiscal
code Number Código do retorno (200)

Considerações:

Com relação ao processo de nota fiscal via API, atualmente apenas informamos como deverá ser enviada a estrutura dos campos dentro da API. A Tray não disponibiliza nenhum exemplo de XML, pois o conteúdo do mesmo, ficará à cargo do integrador que está emitindo a nota fiscal, os dados á serem inseridos no xml, irá depender da configuração entre lojista x ERP.

O conteúdo do XML e os caracteres, o integrador deverá validar diretamente em sua aplicação. O integrador poderá fazer uso de um validador online de xml, para validar e ajustar o envio dos seus dados.

Quando se tratar de um pedido do Mercado Livre, é muito importante o integrador validar junto ao lojista, o fluxo da utilização do Faturar do ML, para que não venha ocorrer problemas de duplicação de notas fiscais.

Sendo assim, é de suma importância que o integrador contemple em sua rotina, a checagem do pedido, para averiguar se o mesmo já possui nota emitida ou não, pois é muito comum retornar um erro genérico do Mercado Livre na API, devido ao pedido já possuir uma nota fiscal e o integrador ficar tentando criar uma nota que já existe. Por este motivo, o fluxo do Faturador do ML deverá ser acertado entre ERP X LOJISTA.

API de Status do Pedido

Status de pedidos

Status da plataforma Descrição
AGUARDANDO PAGAMENTO Inclusao de pagamento via sistema
A ENVIAR Agurdando inclusão dos dados do envio, código de rastreio e data de envio
ENVIADO Quando foi inserido os dados do envio e nota fiscal
FINALIZADO Só ocorre via correios, quando o pedido é recebido
CANCELADO Quando o pedio é cancelado automaticamente ou cancelado manualmente
A ENVIAR YAPAY Depreciado
Agurdando inclusão dos dados do envio, código de rastreio e data de envio
AGUARDANDO YAPAY Depreciado
Inclusao de pagamento via sistema pelo Yapay
A ENVIAR VINDI Novo
Agurdando inclusão dos dados do envio, código de rastreio e data de envio
AGUARDANDO VINDI Novo
Inclusão de pagamento via sistema pela Vindi

Obs. A partir do dia 06/06/2022 os status AGUARDANDO VINDI e A ENVIAR VINDI estarão disponíveis e serão usados por padrão nos novos pedidos. Os status AGUARDANDO YAPAY e A ENVIAR YAPAY continuarão existindo, porém não serão mais utilizados.

Listagem de Status#get

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/orders/statuses?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/orders/statuses?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/orders/statuses?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/orders/statuses?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/orders/statuses?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
attrs Number Atributos do status
limit Number Limite de registros
page Number Página corrente
sort String Ordenação ex.: [campo]_[asc/desc]

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "paging": {
        "total": 6,
        "page": 1,
        "offset": 0,
        "limit": 1,
        "maxLimit": 50
    },
    "sort": [
        {
            "id": "desc"
        }
    ],
    "availableFilters": [],
    "appliedFilters": [],
    "OrderStatuses": [
        {
            "OrderStatus": {
                "status": "ENVIADO",
                "id": "1",
                "show_backoffice": "1"
            }
        }
    ]
}
Campo Tipo Descrição
paging Object Dados de paginação
total Number Total de registros
page Number Página corrente
offset Number Registro inicial da página
limit Number Limite de registros
maxLimit Number Máximo de registros
sort Object[ ] Ordenação
availableFilters String[ ] Filtros disponíveis
appliedFilters String[ ] Filtros utilizados
OrderStatuses Object[ ] Lista de produtos
OrderStatus Object Dados do status
id Number Código do status
status String Nome do status
show_backoffice Number Exibir na área administrativa

Consultar Dados do Status#get

Requisição para a consulta de dados de um status de pedidos.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/orders/statuses/:id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/orders/statuses/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/orders/statuses/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/orders/statuses/:id?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/orders/statuses/:id?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do status

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "OrderStatus":{
        "status":"ENVIADO",
        "id":"1",
        "default":"1"
    }
}
Campo Tipo Descrição
OrderStatus Object Dados do status
id Number Código do status
status String Nome do status
default Number Status padrão (Veja Tabela A)

Cadastrar Status#post

Requisição para inclusão de um novo status de pedidos. Deverá enviar o JSON com os dados do status para a criação.

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/orders/statuses?access_token={{access_token}}' \
--data-urlencode '["OrderStatus"]["status"]=NOVO STATUS' \
--data-urlencode '["OrderStatus"]["default"]=1'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/orders/statuses?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["OrderStatus"]["status"]' => 'NOVO STATUS',
  '["OrderStatus"]["default"]' => '1'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/orders/statuses?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("[\"OrderStatus\"][\"status\"]", "NOVO STATUS");
request.AddParameter("[\"OrderStatus\"][\"default\"]", "1");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"OrderStatus\"][\"status\"]=NOVO STATUS&[\"OrderStatus\"][\"default\"]=1");
Request request = new Request.Builder()
  .url("https://{api_address}/orders/statuses?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Estrutura do Json:

{
    "OrderStatus":{
        "status":"A ENVIAR TESTE1",
        "description": "criação de um novo status",
        "background": "#FFFFFF",
        "default":"1"
    }
}

Método POST

https://{api_address}/orders/statuses?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
OrderStatus JSON Dados do status
status String Nome do status
default Number Status padrão (Veja Tabela A)
type String Tipo do pedido (veja tabela B)

Tabelas Auxiliares de Pedidos

Tabela A - Tipo de status do pedido (campo OrderStatus.default)

Valor Descrição
1 Status adicional

Tabela B - Tipo de pedido.

Status Descrição
open Pedidos em andamento (não foram cancelados e nem finalizados)
closed Pedidos finalizados (comprador já recebeu o pedido e o fluxo já se encerrou)
canceled Pedidos cancelados

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "123",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do status
code Number Código do retorno (201)

Atualizar Dados do Status#put

Requisição para alterar os dados de um status de pedidos. Deverá enviar o JSON com os dados do status para a alteração.

Código de Exemplo:

curl --location -g --request PUT 'https://{api_address}/orders/statuses/:id?access_token={{access_token}}' \
--data-urlencode '["OrderStatus"]["status"]=STATUS ALTERADO' \
--data-urlencode '["OrderStatus"]["default"]=1'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/orders/statuses/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_PUT);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["OrderStatus"]["status"]' => 'STATUS ALTERADO',
  '["OrderStatus"]["default"]' => '1'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/orders/statuses/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.PUT);
request.AddParameter("[\"OrderStatus\"][\"status\"]", "STATUS ALTERADO");
request.AddParameter("[\"OrderStatus\"][\"default\"]", "1");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"OrderStatus\"][\"status\"]=STATUS ALTERADO&[\"OrderStatus\"][\"default\"]=1");
Request request = new Request.Builder()
  .url("https://{api_address}/orders/statuses/:id?access_token={{access_token}}")
  .method("PUT", body)
  .build();
Response response = client.newCall(request).execute();

Estrutura do Json:

{
    "OrderStatus":{
        "status":"STATUS ALTERADO",
        "default":"1",
        "allow_edit_order": "1"
    }
}

Método PUT

https://{api_address}/orders/statuses/:id?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id String Código do status
OrderStatus JSON Dados do status
status String Nome do status
default Number Status padrão (Veja Tabela A)
allow_edit_order String Libera edição do Status

Tabelas Auxiliares de Pedidos

Tabela A - Tipo de status do pedido (campo OrderStatus.default)

Valor Descrição
1 Status adicional

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Saved",
    "id": "123",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do cliente
code Number Código do retorno (200)

Excluir Status#delete

Código de Exemplo:

curl --location -g --request DELETE 'https://{api_address}/orders/statuses/:id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/orders/statuses/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_DELETE);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/orders/statuses/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.DELETE);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://{api_address}/orders/statuses/:id?access_token={{access_token}}")
  .method("DELETE", body)
  .build();
Response response = client.newCall(request).execute();

Método DELETE

https://{api_address}/orders/statuses/:id?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do pedido

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Deleted",
    "id": "1",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do status
code Number Código do retorno (200)

APIs de Newsletter

Listagem de Newsletter#get

Requisição para a consulta de diversos newsletter.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/newsletter/?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/newsletter/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/newsletter/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/newsletter/?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/newsletter/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "paging": {
        "total": 1,
        "page": 1,
        "offset": 0,
        "limit": 1,
        "maxLimit": 50
    },
    "sort": [
        {
            "id": "asc"
        }
    ],
    "availableFilters": [
        "created",
        "modified"
    ],
    "appliedFilters": [],
    "Newsletters": [
        {
            "Newsletter": {
                "id": "123",
                "name": "Nome do Cliente",
                "email": "emaildo@cliente.com.br",
                "status": "0",
                "created": "2016-08-15 11:39:28",
                "modified": "2016-08-15 11:39:28",
            }
        }
    ]
}
Campo Tipo Descrição
paging Object Dados de paginação
total Number Total de registros
page Number Página corrente
offset Number Registro inicial da página
limit Number Limite de registros
maxLimit Number Máximo de registros
sort Object[ ] Ordenação
availableFilters String[ ] Filtros disponíveis
appliedFilters String[ ] Filtros utilizados
Newsletters Object[ ] Lista de newsletters
Newsletter Object Dados do newsletter
id Number Código do newsletters
name String Nome do cliente
email String Email do cliente
status String Newsletter ativo (Veja Tabela A)
created String Data de criação
modified String Data de modificação

Confirmar Cadastro de Newsletter#post

Requisição para confirmar a inclusão de um newsletter. Deverá enviar o JSON com o email para a confirmação.

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/newsletter/confirmation/?access_token={{access_token}}' \
--data-urlencode '"email"=emaildo@cliente.com.br'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/newsletter/confirmation/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '"email"' => 'emaildo@cliente.com.br'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/newsletter/confirmation/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("\"email\"", "emaildo@cliente.com.br");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "\"email\"=emaildo@cliente.com.br");
Request request = new Request.Builder()
  .url("https://{api_address}/newsletter/confirmation/?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Estrutura do Json:

{
    "email": "emaildo@cliente.com.br"
}

Método POST

https://{api_address}/newsletter/confirmation/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
Newsletter JSON Dados do newsletter
email String Email do cliente

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "code": 200,
    "message": "Email emaildo@cliente.com.br confirmed"
}
Campo Tipo Descrição
code Number Código do retorno (200)
message String Mensagem de retorno

Cadastrar Newsletter#post

Requisição para inclusão de um newsletter. Deverá enviar o JSON com os dados do newsletter para a criação.

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/newsletter/?access_token={{access_token}}' \
--data-urlencode '["Newsletter"]["name"]=Nome do Cliente' \
--data-urlencode '["Newsletter"]["email"]=emaildo@cliente.com.br'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/newsletter/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["Newsletter"]["name"]' => 'Nome do Cliente',
  '["Newsletter"]["email"]' => 'emaildo@cliente.com.br'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/newsletter/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("[\"Newsletter\"][\"name\"]", "Nome do Cliente");
request.AddParameter("[\"Newsletter\"][\"email\"]", "emaildo@cliente.com.br");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"Newsletter\"][\"name\"]=Nome do Cliente&[\"Newsletter\"][\"email\"]=emaildo@cliente.com.br");
Request request = new Request.Builder()
  .url("https://{api_address}/newsletter/?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Estrutura do Json:

{
    "Newsletter":{
        "name": "Nome do Cliente",
        "email": "emaildo@cliente.com.br"
    }
}

Método POST

https://{api_address}/newsletter/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
Newsletter JSON Dados do newsletter
name String Nome do cliente
email String Email do cliente

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "123",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do newsletter
code Number Código do retorno (201)

Tabelas Auxiliares de Newsletter

Tabela A - Newsletter ativo (campo status)

Valor Descrição
0 Newsletter inativo
1 Newsletter ativo

APIs de Parceiros

Listagem de Parceiros#get

Requisição para a consulta de diversos Parceiros.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/partners?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/partners?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/partners?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/partners?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/partners?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
attrs String Atributos do parceiro
limit Number Limite de registros
page Number Página corrente
sort String Ordenação ex.: [campo]_[asc/desc]

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "paging": {
        "total": 1,
        "page": 1,
        "offset": 0,
        "limit": 1,
        "maxLimit": 50
    },
    "sort": [
        {
            "id": "desc"
        }
    ],
    "availableFilters": [
        "id",
        "name"
    ],
    "appliedFilters": [],
    "Partners": [
        {
            "Partner": {
                "id": "123",
                "name": "Nome do Parceiro",
                "site": "http://www.sitedoparceiro.com.br",
            }
        }
    ]
}
Campo Tipo Descrição
paging Object Dados de paginação
total Number Total de registros
page Number Página corrente
offset Number Registro inicial da página
limit Number Limite de registros
maxLimit Number Máximo de registros
sort Object[ ] Ordenação
availableFilters String[ ] Filtros disponíveis
appliedFilters String[ ] Filtros utilizados
Partners Object[ ] Lista de parceiros
Partner Object Dados do parceiro
id Number Código do parceiro
name String Nome do parceiro
site String Site do parceiro

Consultar Dados do Parceiro#get

Requisição para a consulta de dados de um parceiro.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/partners/:id?={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/partners/:id?={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/partners/:id?={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/partners/:id?={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/partners/:id?={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do parceiro

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "Partner":{
        "id": "123",
        "name": "Nome do Parceiro",
        "site": "http://www.sitedoparceiro.com.br",
        "commission": "0.20"
    }
}
Campo Tipo Descrição
Partner Object Dados do parceiro
id Number Código do parceiro
name String Nome do parceiro
site String Site do parceiro
commission Decimal Valor de comissão do parceiro

Cadastrar Parceiro#post

Requisição para inclusão de um parceiro. Deverá enviar o JSON com os dados do parceiro para a criação.

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/partners?access_token={{access_token}}' \
--data-urlencode '["Partner"]["name"]=Nome do Parceiro' \
--data-urlencode '["Partner"]["site"]=http://www.sitedoparceiro.com.br' \
--data-urlencode '["Partner"]["commission"]=0.20'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/partners?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["Partner"]["name"]' => 'Nome do Parceiro',
  '["Partner"]["site"]' => 'http://www.sitedoparceiro.com.br',
  '["Partner"]["commission"]' => '0.20'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/partners?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("[\"Partner\"][\"name\"]", "Nome do Parceiro");
request.AddParameter("[\"Partner\"][\"site\"]", "http://www.sitedoparceiro.com.br");
request.AddParameter("[\"Partner\"][\"commission\"]", "0.20");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);```
```java
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"Partner\"][\"name\"]=Nome do Parceiro&[\"Partner\"][\"site\"]=http://www.sitedoparceiro.com.br&[\"Partner\"][\"commission\"]=0.20");
Request request = new Request.Builder()
  .url("https://{api_address}/partners?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Estrutura do Json:

{
    "Partner":{
        "name": "Nome do Parceiro",
        "site": "http://www.sitedoparceiro.com.br",
        "commission": "0.20"
    }
}

Método POST

https://{api_address}/partners?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
Partner JSON Dados do parceiro
name String Nome do parceiro
site String Site do parceiro
commission Decimal Valor de comissão do parceiro

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "123",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do parceiro
code Number Código do retorno (201)

Atualizar Dados do Parceiro#put

Requisição para alterar os dados de um parceiro. Deverá enviar o JSON com os dados do parceiro para a alteração.

Código de Exemplo:

curl --location -g --request PUT 'https://{api_address}/partners/:id?access_token={{access_token}}' \
--data-urlencode '["Partner"]["name"]=Nome do Parceiro' \
--data-urlencode '["Partner"]["site"]=http://www.sitedoparceiro.com.br' \
--data-urlencode '["Partner"]["commission"]=0.20'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/partners/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_PUT);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["Partner"]["name"]' => 'Nome do Parceiro',
  '["Partner"]["site"]' => 'http://www.sitedoparceiro.com.br',
  '["Partner"]["commission"]' => '0.20'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/partners/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.PUT);
request.AddParameter("[\"Partner\"][\"name\"]", "Nome do Parceiro");
request.AddParameter("[\"Partner\"][\"site\"]", "http://www.sitedoparceiro.com.br");
request.AddParameter("[\"Partner\"][\"commission\"]", "0.20");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"Partner\"][\"name\"]=Nome do Parceiro&[\"Partner\"][\"site\"]=http://www.sitedoparceiro.com.br&[\"Partner\"][\"commission\"]=0.20");
Request request = new Request.Builder()
  .url("https://{api_address}/partners/:id?access_token={{access_token}}")
  .method("PUT", body)
  .build();
Response response = client.newCall(request).execute();

Estrutura do Json:

{
    "Partner":{
        "name": "Nome do Parceiro",
        "site": "http://www.sitedoparceiro.com.br",
        "commission": "0.20"
    }
}

Método PUT

https://{api_address}/partners/:id?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do parceiro
Partner JSON Dados do parceiro
name String Nome do parceiro
site String Site do parceiro
commission Decimal Valor de comissão do parceiro

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Saved",
    "id": "123",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do parceiro
code Number Código do retorno (200)

Excluir Parceiro#delete

Requisição para excluir um parceiro.

Código de Exemplo:

curl --location -g --request DELETE 'https://{api_address}/partners/:id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/partners/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_DELETE);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/partners/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.DELETE);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://{api_address}/partners/:id?access_token={{access_token}}")
  .method("DELETE", body)
  .build();
Response response = client.newCall(request).execute();

Método DELETE

https://{api_address}/partners/:id?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do parceiro

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Deleted",
    "id": "123",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do parceiro
code Number Código do retorno (200)

APIs de Palavras-Chave

Listagem de Palavras-Chave#get

Requisição para a consulta de diversas palavras-chave.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/words?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/words?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/words?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/words?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/words

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "paging": {
        "total": 1,
        "page": 1,
        "offset": 0,
        "limit": 1,
        "maxLimit": 50
    },
    "sort": [
        {
            "id": "desc"
        }
    ],
    "availableFilters": [
        "id",
        "keyword"
    ],
    "appliedFilters": [],
    "Words": [
        {
            "Word":{
                "id": "123",
                "keyword": "palavra-chave",
                "qty": "3"
            }
        }
    ]
}
Campo Tipo Descrição
paging Object Dados de paginação
total Number Total de registros
page Number Página corrente
offset Number Registro inicial da página
limit Number Limite de registros
maxLimit Number Máximo de registros
sort Object Ordenação
availableFilters String Filtros disponíveis
appliedFilters String Filtros utilizados
Words Object Lista de palavras-chave
Word Object Dados do palavra-chave
id Number Código da palavra-chave
keyword String Palavra-chave
qty Number Quantidade da palavra-chave

Consultar Palavra-Chave#get

Requisição para a consulta de dados de uma palavra-chave.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/words/:id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/words/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/words/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/words/:id?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/words/:id

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código da palavra-chave

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "Word":{
        "id": "123",
        "keyword": "palavra-chave",
        "qty": "3"
    }
}
Campo Tipo Descrição
Word Object Dados do palavra-chave
id Number Código da palavra-chave
keyword String Palavra-chave
qty Number Quantidade da palavra-chav

APIs de Informações de Pagamento

Listagem de Pagamentos#get

Requisição para consultar os dados de pagamentos.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/payments/?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/payments/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/payments/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/payments/?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/payments/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Token de acesso
attrs String Atributos do pagamento
limit Number Limite de registros
page Number Página corrente
sort String Ordenação ex.: [campo]_[asc/desc]

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "paging": {
        "total": 39,
        "page": 1,
        "offset": 0,
        "limit": 30,
        "maxLimit": 50
    },
    "sort": [
        {
            "id": "asc"
        }
    ],
    "availableFilters": [
        "id",
        "order_id",
        "created",
        "modified"
    ],
    "appliedFilters": [],
    "Payments": [
        {
            "Payment": {
                "id": "1",
                "order_id": "123",
                "payment_method_id": "12",
                "payment_place": "",
                "value": "50.85",
                "note": "",
                "created": "2016-08-16 16:17:38",
                "modified": "2016-08-16 16:17:38"
            }
        }
    ]
}
Campo Tipo Descrição
paging Object Dados de paginação
total Number Total de registros
page Number Página corrente
offset Number Registro inicial da página
limit Number Limite de registros
maxLimit Number Máximo de registros
sort Object[ ] Ordenação
availableFilters String[ ] Filtros disponíveis
appliedFilters String[ ] Filtros utilizados
Payments Object Lista de pagamentos
Payment Object Dados do pagamento
id Number Código do pagamento
order_id Number Código do pedido
payment_method_id Number Código do meio de pagamento
payment_place String Local de pagamento
value Decimal Valor pago
note String Informações adicionais do pagamento
created Date Data de criação
modified Date Data de modificação

Consultar Dados de Pagamento#get

Requisição para consultar os dados de um pagamento do pedido.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/payments/:id/?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/payments/:id/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/payments/:id/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/payments/:id/?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/payments/:id/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do pagamento

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "Payment": {
        "id": "1",
        "order_id": "123",
        "payment_method_id": "12",
        "method": "Boleto Bancário",
        "payment_place": "",
        "value": "50.85",
        "date": "2016-08-15",
        "note": "",
        "created": "2016-08-16 16:17:38",
        "modified": "2016-08-16 16:17:38"
    }
}
Campo Tipo Descrição
Payment Object Dados do pagamento
id Number Código do pagamento
order_id Number Código do pedido
payment_method_id Number Código do meio de pagamento
method String Descrição do meio de pagamento
payment_place String Local de pagamento
value Decimal Valor pago
date Date Data do pagamento
note String Informações adicionais do pagamento
created Date Data de criação
modified Date Data de modificação

Cadastrar pagamento#post

requisição para cadastro de um pagamento do pedido. deverá enviar o json com os dados do pagamento para o cadastro.

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/payments/?access_token={{access_token}}' \
--data-urlencode '["payment"]["order_id"]=123' \
--data-urlencode '["payment"]["method"]=cartão de crédito' \
--data-urlencode '["payment"]["value"]=50.90' \
--data-urlencode '["payment"]["date"]=2021-04-05' \
--data-urlencode '["payment"]["note"]=pagamento realizado com sucesso'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/payments/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["payment"]["order_id"]' => '123',
  '["payment"]["method"]' => 'cartão de crédito',
  '["payment"]["value"]' => '50.90',
  '["payment"]["date"]' => '2021-04-05',
  '["payment"]["note"]' => 'pagamento realizado com sucesso'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/payments/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("[\"payment\"][\"order_id\"]", "123");
request.AddParameter("[\"payment\"][\"method\"]", "cartão de crédito");
request.AddParameter("[\"payment\"][\"value\"]", "50.90");
request.AddParameter("[\"payment\"][\"date\"]", "2021-04-05");
request.AddParameter("[\"payment\"][\"note\"]", "pagamento realizado com sucesso");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"payment\"][\"order_id\"]=123&[\"payment\"][\"method\"]=cartão de crédito&[\"payment\"][\"value\"]=50.90&[\"payment\"][\"date\"]=2021-04-05&[\"payment\"][\"note\"]=pagamento realizado com sucesso");
Request request = new Request.Builder()
  .url("https://{api_address}/payments/?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Estrutura do Json:

{
    "payment": {
        "order_id": "123", 
        "method": "cartão de crédito", 
        "value": "50.85",
        "date": "2016-08-15"
        "note": "pagamento realizado com sucesso"
    }
}

Método POST

https://{api_address}/payments/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token string chave de acesso
payment json dados do pagamento
order_id number código do pedido
method string descrição da forma de pagamento
value decimal valor pago
date date data do pagamento
note string informações adicionais do pagamento

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "123",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do pagamento
code Number Código do retorno (201)

atualizar dados de pagamento#put

requisição para alterar os dados de pagamento de um pedido. deverá enviar o json com os dados do pagamento para a alteração.

Código de Exemplo:

curl --location -g --request PUT 'https://{api_address}/payments/:id?access_token={{access_token}}' \
--data-urlencode '["payment"]["order_id"]=123' \
--data-urlencode '["payment"]["method"]=cartão de crédito' \
--data-urlencode '["payment"]["value"]=50.90' \
--data-urlencode '["payment"]["date"]=2021-04-05' \
--data-urlencode '["payment"]["note"]=pagamento realizado com sucesso'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/payments/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_PUT);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["payment"]["order_id"]' => '123',
  '["payment"]["method"]' => 'cartão de crédito',
  '["payment"]["value"]' => '50.90',
  '["payment"]["date"]' => '2021-04-05',
  '["payment"]["note"]' => 'pagamento realizado com sucesso'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/payments/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.PUT);
request.AddParameter("[\"payment\"][\"order_id\"]", "123");
request.AddParameter("[\"payment\"][\"method\"]", "cartão de crédito");
request.AddParameter("[\"payment\"][\"value\"]", "50.90");
request.AddParameter("[\"payment\"][\"date\"]", "2021-04-05");
request.AddParameter("[\"payment\"][\"note\"]", "pagamento realizado com sucesso");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"payment\"][\"order_id\"]=123&[\"payment\"][\"method\"]=cartão de crédito&[\"payment\"][\"value\"]=50.90&[\"payment\"][\"date\"]=2021-04-05&[\"payment\"][\"note\"]=pagamento realizado com sucesso");
Request request = new Request.Builder()
  .url("https://{api_address}/payments/:id?access_token={{access_token}}")
  .method("PUT", body)
  .build();
Response response = client.newCall(request).execute();

Estrutura do Json:

{
    "payment": {
        "order_id": "123", 
        "method": "cartão de crédito", 
        "value": "50.85",
        "date": "2016-08-15"
        "note": "pagamento realizado com sucesso"
    }
}

Método PUT

https://{api_address}/payments/:id?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token string chave de acesso
:id number código do pagamento
payment json dados do pagamento
order_id number código do pedido
method string descrição da forma de pagamento
value decimal valor pago
date date data do pagamento
note string informações adicionais do pagamento

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "saved",
    "id": "123",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do pagamento
code Number Código do retorno (200)

Excluir pagamento#delete

requisição para excluir um pagamento do pedido.

Código de Exemplo:

curl --location -g --request DELETE 'https://{api_address}/payments/:id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/payments/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_DELETE);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/payments/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.DELETE);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://{api_address}/payments/:id?access_token={{access_token}}")
  .method("DELETE", body)
  .build();
Response response = client.newCall(request).execute();

Método DELETE

https://{api_address}/payments/:id?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do pagamento

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "deleted",
    "id": "123",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do pagamento
code Number Código do retorno (200)

Opções de pagamentos#get

requisição para consultar as opções de pagamentos para um carrinho de compra / pedido.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/payments/options?access_token={{access_token}}&order_id=123'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/payments/options?access_token={{access_token}}&order_id=123');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/payments/options?access_token={{access_token}}&order_id=123");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/payments/options?access_token={{access_token}}&order_id=123")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/payments/options?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token string token de acesso
cart_session_id string código da sessão do carrinho
order_id number código do pedido

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
   "paymentoptions":[
        {
         "id":"1",
         "integrator_id":"123",
         "facilitator_id":"",
         "name":"cartão de crédito",
         "image":"pag_cartacredito.png",
         "thumbnail":"pag_peqcartacredito.png",
         "additional":"0",
         "min_splot":"12",
         "max_splot":"0",
         "application_value":"1",
         "integration_code":"3",
         "facilitator":"0",
         "text":"cartão de crédito",
         "text_pag":"cartão de crédito",
         "finalize_action":"",
         "card":"1",
         "discount_value":"50.85",
         "increase_value":"0",
         "plots":{
            "1":{
               "value":"50.85",
               "interest":"0",
               "interest_value":"0",
               "discount_value":"0",
               "base_value":"50.85",
               "order_total":"5"
            }
         },
         "increase":"1",
         "display_increase":"1",
         "deactivate":"1",
         "total_base":"50.85",
         "tax_value":"0.00",
         "is_intermediator":"1",
         "interest_formula":"price",
         "equivalent":[
            "4",
            "2",
            "5",
            "16",
            "18"
        ]
    }
}
Campo Tipo Descrição
paymentoptions object[ ] lista de opções de pagamento
id number código da opção de pagamento
integrator_id number código do integrador
facilitator_id number código do facilitador
name string nome
image string imagem
thumbnail string ícone
additional number informações adicionais
min_splot number número máximo de parcelas
max_splot number número mínimo de parcelas
application_value decimal valor de
integration_code number referência do integrador
facilitator number facilitador (veja tabela a)
text string texto
text_pag string texto do pagamaento
finalize_action string ação de finalização
card number cartão de crédito (veja tabela b)
discount_value decimal valor de desconto
increase_value decimal valor adicional
plots object parcelamentos
:id number código da parcelamento
value decimal valor de parcelamento
interest number informações de acréscimo / taxa
interest_value decimal valor de acréscimo / taxa
discount_value decimal valor de desconto
base_value decimal valor base
order_total decimal valor total
increase number acréscimo no pagamento (veja tabela c)
display_increase number exibir valor de acréscimo (veja tabela d)
deactivate number opção de pagamento desativada (veja tabela e)
total_base decimal valor total base
tax_value decimal valor da taxa
is_intermediator number intermediador de pagamento (veja tabela f)
interest_formula string formulá do calculo de acréscimo
equivalent number[ ] opções de pagamento equivalentes

Configurações de pagamento#get

requisição para consultar as configurações da forma de pagamentos para um carrinho de compra / pedido.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/payments/methods/settings/:id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/payments/methods/settings/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/payments/methods/settings/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/payments/methods/settings/:id?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/payments/methods/settings/:id?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código da forma de pagamento

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "settings": {
        "sub_store": "nome da loja",
        "reseller_token": "123abc456def789",
        "seller_code": "123abc456def7890123abc456def7890",
        "secure_url": "https://loja.commercesuite.com.br"
    }
}
Campo Tipo Descrição
settings object dados da configuração da forma de pagamento
sub_store string nome da loja
reseller_token string token de revendedor
seller_code string token de vendedor
secure_url string url de ambiente seguro da loja
Endpoint Descrição
https://{api_address}/payments/methods/1?access_token={{access_token}} Recupera todos os métodos de pagamento
https://{api_address}/payments/methods/1/active?access_token={{access_token}} Recupera os métodos ativos na loja

Tabelas Auxiliares de Pagamentos

Tabela A - Identificar se é um facilitador (campo facilitator)

Valor Descrição
0 Não é um facilitador
1 É um facilitador

Tabela B - Disponibilidade de cartão de crédito (campo card)

Valor Descrição
0 Pagamento sem cartão de crédito
1 Pagamento com cartão de crédito

Tabela C - Produto com frete grátis (campo free_shipping)

Valor Descrição
0 Pagamento sem acréscimo
1 Pagamento com acréscimo

Tabela D - Lançamento de produto (campo release)

Valor Descrição
0 Ocultar valor de acréscimo
1 Exibir valor de acréscimo

Tabela E - Produto em destaque (campo hot)

Valor Descrição
0 Pagamento ativo
1 Pagamento desativado

Tabela F - Produto com variação (campo has_variation)

Valor Descrição
0 Não é um intermediador de pagamento
1 É um intermediador de pagamento

APIs de Informações da Loja

Consultar Informações da Loja#get

Requisição para consultar os dados de diversas formas de envio.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/info/?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/info/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/info/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/info/?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/info?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "id": "123",
    "name": "Nome da Loja",
    "company_name": "Razão Social da Loja LTDA",
    "cnpj": "00.000.000/0000-00",
    "address": "Endereço da loja, 123",
    "postal_code": "04001-001",
    "city": "São Paulo",
    "state": "SP",
    "country": "Brasil",
    "phone_number_1": "(11)3333-0000",
    "phone_number_2": "(11)99999-0000",
    "phone_number_3": "",
    "email_1": "emailda@loja.com.br",
    "email_2": "",
    "office_hour": "",
    "uri": "http://loja.commercesuite.com.br",
    "secure_uri": "https://loja.commercesuite.com.br",
    "logo": {
        "http": "http://images.tcdn.com.br/img/img_prod/123/123_logotipo.png",
        "https": "https://images.tcdn.com.br/img/img_prod/123/123_logotipo.png"
    },
    "logo_mobile": {
        "http": "http://images.tcdn.com.br/img/arquivos/123/themed/img/123_logotipo-mobile.png",
        "https": "https://images.tcdn.com.br/img/arquivos/123/themed/img/123_logotipo-mobile.png"
    },
    "user": "",
    "internal_status": "ativa",
    "favicon": {
        "http": "http://images.tcdn.com.br/img/img_prod/123/123_favicon.ico",
        "https": "https://images.tcdn.com.br/img/img_prod/123/123_favicona.ico"
    },
    "messages": {
        "footer": "Mensagem do rodapé da loja."
    }
}
Campo Tipo Descrição
id Number Código da loja
name String Nome da loja
company_name String Razão social
cnpj String CNPJ
address String Logradouro
postal_code String CEP
city String Cidade
state String Estado
country String País
phone_number_1 String Número de telefone 1
phone_number_2 String Número de telefone 2
phone_number_3 String Número de telefone 3
email_1 String Email 1
email_2 String Email 2
office_hour String Horário de operação
uri String URL da loja
secure_uri String URL segura da loja
logo Object Logo da loja
http String URL do logo da loja
https String URL segura do logo da loja
logo_mobile Object Logo da loja (mobile)
http String URL do logo da loja (mobile)
https String URL segura do logo da loja (mobile)
user String Usuário
internal_status String Status da loja
favicon Object Favicon da loja
http String URL do favicon da loja
https String URL segura do favicon da loja
messages Object Mensagens da loja
footer String Mensagem do rodapé

Método GET (API pública)

https://{api_address}/info

Campo Tipo Descrição
id String ID da loja
uri String URL da loja
secure_uri String URI https

APIs de Carrinho de Compra

As APIs de Carrinho de Compras disponibiliza a manutenção dos carrinhos de compra dentro da plataforma Tray, possibilitando criar, atualizar e excluir algum carrinho de compra por aplicações externas. Para essas APIs é necessário realizar a autorização da aplicação, para mais informações veja os passos iniciais para a integração.

Consultar Dados do Carrinho#get

Requisição para a consulta de dados de um carrinho de compra.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/carts/{{session_id}}?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/carts/{{session_id}}?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/carts/{{session_id}}?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/carts/{{session_id}}?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/carts/:session_id?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:session_id String Código da sessão do carrinho

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "Cart": {
    "email": "",
    "variants_kit": "",
    "additional_info_kit": "",
    "session_id": "123ABC456DEF789GHI",
    "product_id": "2",
    "product_name": "Produto de Teste",
    "quantity": "4",
    "price": "100.00",
    "weight": "1000",
    "date": "2018-10-18",
    "variant_id": "0",
    "additional_information": "",
    "user_id": "0",
    "customer_id": "0",
    "user_cod": "0",
    "hour": "07:54:06",
    "product_url": {
        "http": "http://ulrdaloja.com.br/categoria/produto",
        "https": "https://urldaloja.com.br/categoria/produto"
    },
    "product_image": {
        "http": "http://images.tcdn.com.br/img/img_prod/produto_exemplo_6_12_1_20180716141523.jpg",
        "https": "https://images.tcdn.com.br/img/img_prod/produto_exemplo_6_12_1_20180716141523.jpg",
        "thumbs": {
        "30": {
            "http": "http://images.tcdn.com.br/img/img_prod/30_produto_exemplo_6_12_1_20180716141523.jpg",
            "https": "https://images.tcdn.com.br/img/img_prod/30_produto_exemplo_6_12_1_20180716141523.jpg"
            },
        "90": {
            "http": "http://images.tcdn.com.br/img/img_prod/90_produto_exemplo_6_12_1_20180716141523.jpg",
            "https": "https://images.tcdn.com.br/img/img_prod90_produto_exemplo_6_12_1_20180716141523.jpg"
            },
        "180": {
            "http": "http://images.tcdn.com.br/img/img_prod/180_produto_exemplo_6_12_1_20180716141523.jpg",
            "https": "https://images.tcdn.com.br/img/img_prod/180_produto_exemplo_6_12_1_20180716141523.jpg"
                }
            }
        }
        }
    },
    {
    "Cart": {
        "email": "",
        "variants_kit": "",
        "additional_info_kit": "",
        "session_id": "123ABC456DEF789GHI",
        "product_id": "20",
        "product_name": "Produto Teste 2",
        "quantity": "1",
        "price": "100.00",
        "weight": "1000",
        "date": "2018-10-18",
        "variant_id": "0",
        "additional_information": "",
        "user_id": "0",
        "customer_id": "0",
        "user_cod": "0",
        "hour": "07:54:56",
        "product_url": {
        "http": "http://ulrdaloja.com.br/categoria/produto",
        "https": "https://ulrdaloja.com.br/categoria/produto"
        },
        "product_image": {
        "http": "http://images.tcdn.com.br/img/img_prod/produto_exemplo_10_20_1_20180716141527.jpg",
        "https": "https://images.tcdn.com.br/img/img_prod/produto_exemplo_10_20_1_20180716141527.jpg",
            "thumbs": {
                "30": {
                "http": "http://images.tcdn.com.br/img/img_prod/30_produto_exemplo_10_20_1_20180716141527.jpg",
                "https": "https://images.tcdn.com.br/img/img_prod/30_produto_exemplo_10_20_1_20180716141527.jpg"
                },
                "90": {
                "http": "http://images.tcdn.com.br/img/img_prod/90_produto_exemplo_10_20_1_20180716141527.jpg",
                "https": "https://images.tcdn.com.br/img/img_prod/90_produto_exemplo_10_20_1_20180716141527.jpg"
                },
                "180": {
                "http": "http://images.tcdn.com.br/img/img_prod/180_produto_exemplo_10_20_1_20180716141527.jpg",
                "https": "https://images.tcdn.com.br/img/img_prod/180_produto_exemplo_10_20_1_20180716141527.jpg"
                }
            }
        }
    }
}
Campo Tipo Descrição
Cart Object[ ] Dados do carrinho de compra
email Number Email do cliente
variants_kit Number
additional_info_kit Number
session_id String Código da sessão do carrinho
product_id String Código do produto
product_name String Nome do produto
quantity String Quantidade do produto
price String Preço do produto
weight Date Peso do produto
date Number Data do produto no carrinho
variant_id String Código da variação do produto
additional_information String Informações adicionais
customer_id Number Código do cliente
user_cod Number Código do cliente
hour Number Hora do produto no carrinho
product_url Object[ ] Contém as URLs do produto
http String Contém a URL HTTP do produto
https String Contém a URL HTTPS do produto
product_image Object[ ] Contém as URLs dos imagens do produto
http String Contém a URL HTTP do imagem do produto
https String Contém a URL HTTPS do imagem do produto
thumbs Object[ ] Contém a URL dos thumbs do produto
30 Object[ ] Contém aa URLa dos thumbs 30 px do produto
http String Contém a URL HTTP do thumb 30 px do produto
https String Contém a URL HTTPS do thumb 30 px do produto
90 Object[ ] Contém aa URLa dos thumbs 90 px do produto
http String Contém a URL HTTP do thumb 90 px do produto
https String Contém a URL HTTPS do thumb 90 px do produto
180 Object[ ] Contém aa URLa dos thumbs 180 px do produto
http String Contém a URL HTTP do thumb 180 px do produto
https String Contém a URL HTTPS do thumb 180 px do produto

Consultar Carrinho Completo#get

Requisição para consultar os dados completos do carrinho.

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/carts/{{session_id}}/complete?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/carts/{{session_id}}/complete?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/carts/{{session_id}}/complete?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/carts/{{session_id}}/complete?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/carts/:session_id/complete?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:session_id String Código da sessão do carrinho

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
  "Cart": {
     "session_id": "5kgnpd4cc6ehgo029odv65utk1",
     "customer_id": "0",
     "previous_url": "http://redsene.commercesuite.com.br",
     "progressive_discount": "0",
     "coupon_discount": "0",
     "order_discount": "0",
     "use_taxes": "1",
     "Products": [
        {
           "id": "8",
           "quantity": "3",
           "price": "100.00",
           "variant_id": "0",
           "additional_information": "",
           "name": "Produto com Embalagem",
           "bought_together_id": "0",
           "cart_id": "237",
           "text_variant": "",
           "id_campaign": "",
           "PaymentMethodByProduct": [],
           "Category": {
               "id": "12",
               "name": "Blusas"
           },
           "ProductImage": [
             {
              "http": "http://images.tcdn.com.br/img/img_prod/558228/produto_exemplo_4_8_1_20180716141522.jpg",
              "https": "https://images.tcdn.com.br/img/img_prod/558228/produto_exemplo_4_8_1_20180716141522.jpg",
              "thumbs": {
                  "30": {
                      "http": "http://images.tcdn.com.br/img/img_prod/558228/30_produto_exemplo_4_8_1_20180716141522.jpg",
                      "https": "https://images.tcdn.com.br/img/img_prod/558228/30_produto_exemplo_4_8_1_20180716141522.jpg"
                  },
                  "90": {
                      "http": "http://images.tcdn.com.br/img/img_prod/558228/90_produto_exemplo_4_8_1_20180716141522.jpg",
                      "https": "https://images.tcdn.com.br/img/img_prod/558228/90_produto_exemplo_4_8_1_20180716141522.jpg"
                  },
                  "180": {
                      "http": "http://images.tcdn.com.br/img/img_prod/558228/180_produto_exemplo_4_8_1_20180716141522.jpg",
                      "https": "https://images.tcdn.com.br/img/img_prod/558228/180_produto_exemplo_4_8_1_20180716141522.jpg"
                      }
                  }
              }
          ],
          "url": {
            "http": "http://redsene.commercesuite.com.br/blusas/produto-exemplo-4",
            "https": "https://redsene.commercesuite.com.br/blusas/produto-exemplo-4"
           },
          "ncm": "0",
          "stock": "100",
          "available": "1",
          "brand": "",
          "Variant": [],
          "can_be_wrapped": "1",
          "Tax": [],
           "sub_total": "300.00"
       }
   ],
   "Store": {
        "id": "558228",
        "name": "redsene",
        "url": "https://redsene.commercesuite.com.br"
   },
    "Coupon": [],
    "Extensions": {
    "AdditionalProductInfo": [
           {
                "product_id": "4",
                 "product_name": "Produto Informação Adicional",
                 "variant_id": "0",
                 "information": "nome: asas"
             }
         ]
     },
     "partner_id": "",
     "partner_name": "",
     "tax_name": "Emissão de Nota Fiscal",
     "Tax": {
         "name": "Emissão de Nota Fiscal",
          "value": "0"
      },
     "total": "1005.00",
     "sub_total": "1005.00"
   }
}
Campo Tipo Descrição
Cart Object Dados do carrinho de compra
session_id String Código da sessão do carrinho
customer_id Number Código do cliente
previous_url String URL da loja
progressive_discount Number Desconto progressivo
coupon_discount Number Cupom de desconto
order_discount Number Desconto do pedido
use_taxes Number Taxas
Products Object[ ] Dados dos produtos
id Number Código do produto
quantity Number Quantidade do produto no carrinho
price Decimal Preço do produto
variant_id Number Código da variação do produto
additional_information String Informações adicionais do produto
name String Nome do produto
bought_together_id Number Id do compre junto
cart_id Number Id do carrinho
text_variant Number Texto de variação
id_campaign Number Id da campanha
PaymentMethodByProduct Object[ ] Forma de pagamento por produto
payment_method_id Number Código da forma de pagamento
blocked Number Forma de pagamento bloqueada (Veja Tabela A)
max_plots Number Máximo de parcelas por forma de pagamento
Category Object Dados da categoria
id Number Código da categoria
name String Nome da categoria
ProductImage Object[ ] Imagens do produto
http String URL da imagem do produto
https String URL segura da imagem do produto
thumbs Object Miniaturas da imagem do produto
30 Object Miniaturas da imagem do produto (30px)
http String URL da miniaturas da imagem do produto (30px)
https String URL segura da miniaturas da imagem do produto (30px)
90 Object Miniaturas da imagem do produto (90px)
http String URL da miniaturas da imagem do produto (90px)
https String URL segura da miniaturas da imagem do produto (90px)
180 Object Miniaturas da imagem do produto (180px)
http String URL da miniaturas da imagem do produto (180px)
https String URL segura da miniaturas da imagem do produto (180px)
url Object Dados da URL da loja
http String URL da loja
https String URL segura da loja
stock Number Quantidade em estoque do produto
available Number Disponibilidade do Produto (verdadeiro ou falso)
brand String Marca do produto
Variant Object Variações do produto
can_be_wrapped Object Embrulho para presente
Tax Object Taxas
sub_total Number Subtotal
Store Object Dados da LOja
id Number Código da loja
name String Nome da loja
url String URL da loja
Coupon Object Cupom aplicado
Extensions Object Extensões do Produto
AdditionalProductInfo Object Informações adicionais do produto
product_id Number Id do produto
product_name String Nome do produto
variant_id String Id da variação
information String Informação adicional
partner_id Number Id do parceiro
partner_name String Nome do parceiro
tax_name String Descrição de acréscimo / taxa
Tax Object Taxa/Acrécimo
name String Descrição de acréscimo / taxa
value String Valor de acréscimo / taxa
total String Total do carrinho
sub_total String Subtotal do carrinho

Criar Novo Carrinho#post

Requisição para criação de um carrinho de compras. Deverá enviar o JSON com os dados do carrinho para a criação.

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/carts/?access_token={{access_token}}' \
--data-urlencode '["Cart"]["session_id"]=123ABC456DEF789GHI' \
--data-urlencode '["Cart"]["product_id"]=123' \
--data-urlencode '["Cart"]["variant_id"]=""' \
--data-urlencode '["Cart"]["quantity"]=1' \
--data-urlencode '["Cart"]["price"]=50.00' \
--data-urlencode '["Cart"]["additional_information"]=Informações adicionais' \
--data-urlencode '["Cart"]["Shipping"]["id_shipping"]=123' \
--data-urlencode '["Cart"]["Shipping"]["name"]=Sedex' \
--data-urlencode '["Cart"]["Shipping"]["min_period"]=1' \
--data-urlencode '["Cart"]["Shipping"]["max_period"]=3' \
--data-urlencode '["Cart"]["Shipping"]["zip_code"]=04001001' \
--data-urlencode '["Cart"]["Shipping"]["price"]=16.45' \
--data-urlencode '["Cart"]["Shipping"]["tax_name"]=Acréscimo' \
--data-urlencode '["Cart"]["Shipping"]["tax_value"]=2.00' \
--data-urlencode '["Cart"]["Shipping"]["city"]=São Paulo' \
--data-urlencode '["Cart"]["Shipping"]["state"]=SP'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/carts/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["Cart"]["session_id"]' => '123ABC456DEF789GHI',
  '["Cart"]["product_id"]' => '123',
  '["Cart"]["variant_id"]' => '""',
  '["Cart"]["quantity"]' => '1',
  '["Cart"]["price"]' => '50.00',
  '["Cart"]["additional_information"]' => 'Informações adicionais',
  '["Cart"]["Shipping"]["id_shipping"]' => '123',
  '["Cart"]["Shipping"]["name"]' => 'Sedex',
  '["Cart"]["Shipping"]["min_period"]' => '1',
  '["Cart"]["Shipping"]["max_period"]' => '3',
  '["Cart"]["Shipping"]["zip_code"]' => '04001001',
  '["Cart"]["Shipping"]["price"]' => '16.45',
  '["Cart"]["Shipping"]["tax_name"]' => 'Acréscimo',
  '["Cart"]["Shipping"]["tax_value"]' => '2.00',
  '["Cart"]["Shipping"]["city"]' => 'São Paulo',
  '["Cart"]["Shipping"]["state"]' => 'SP'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/carts/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("[\"Cart\"][\"session_id\"]", "123ABC456DEF789GHI");
request.AddParameter("[\"Cart\"][\"product_id\"]", "123");
request.AddParameter("[\"Cart\"][\"variant_id\"]", "\"\"");
request.AddParameter("[\"Cart\"][\"quantity\"]", "1");
request.AddParameter("[\"Cart\"][\"price\"]", "50.00");
request.AddParameter("[\"Cart\"][\"additional_information\"]", "Informações adicionais");
request.AddParameter("[\"Cart\"][\"Shipping\"][\"id_shipping\"]", "123");
request.AddParameter("[\"Cart\"][\"Shipping\"][\"name\"]", "Sedex");
request.AddParameter("[\"Cart\"][\"Shipping\"][\"min_period\"]", "1");
request.AddParameter("[\"Cart\"][\"Shipping\"][\"max_period\"]", "3");
request.AddParameter("[\"Cart\"][\"Shipping\"][\"zip_code\"]", "04001001");
request.AddParameter("[\"Cart\"][\"Shipping\"][\"price\"]", "16.45");
request.AddParameter("[\"Cart\"][\"Shipping\"][\"tax_name\"]", "Acréscimo");
request.AddParameter("[\"Cart\"][\"Shipping\"][\"tax_value\"]", "2.00");
request.AddParameter("[\"Cart\"][\"Shipping\"][\"city\"]", "São Paulo");
request.AddParameter("[\"Cart\"][\"Shipping\"][\"state\"]", "SP");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"Cart\"][\"session_id\"]=123ABC456DEF789GHI&[\"Cart\"][\"product_id\"]=123&[\"Cart\"][\"variant_id\"]=\"\"&[\"Cart\"][\"quantity\"]=1&[\"Cart\"][\"price\"]=50.00&[\"Cart\"][\"additional_information\"]=Informações adicionais&[\"Cart\"][\"Shipping\"][\"id_shipping\"]=123&[\"Cart\"][\"Shipping\"][\"name\"]=Sedex&[\"Cart\"][\"Shipping\"][\"min_period\"]=1&[\"Cart\"][\"Shipping\"][\"max_period\"]=3&[\"Cart\"][\"Shipping\"][\"zip_code\"]=04001001&[\"Cart\"][\"Shipping\"][\"price\"]=16.45&[\"Cart\"][\"Shipping\"][\"tax_name\"]=Acréscimo&[\"Cart\"][\"Shipping\"][\"tax_value\"]=2.00&[\"Cart\"][\"Shipping\"][\"city\"]=São Paulo&[\"Cart\"][\"Shipping\"][\"state\"]=SP");
Request request = new Request.Builder()
  .url("https://{api_address}/carts/?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Estrutura do Json:

{
    "Cart": {
        "session_id": "123ABC456DEF789GHI", 
        "product_id": "123", 
        "variant_id": "",
        "quantity": "1", 
        "price": "50.00", 
        "additional_information": "Informações adicionais", 
        "Shipping": {
            "id_shipping": "123", 
            "name": "Sedex", 
            "min_period": "1", 
            "max_period": "3",
            "zip_code": "04001001", 
            "price": "16.85", 
            "tax_name": "Acréscimo",
            "tax_value": "2.00", 
            "city": "São Paulo", 
            "state": "SP"
        }
    }
}

Método POST

https://{api_address}/carts/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
Cart JSON Dados do carrinho de compra
session_id String Código da sessão do carrinho
product_id Number Código do produto
variant_id Number Código da variação
quantity Number Quantidade do produto no carrinho
price Decimal Preço do produto
additional_information String Informações adicionais
id_shipping Number Código da forma de envio
name String Nome do destinatário
min_period Number Período mínimo para envio
max_period Number Período máximo para envio
zip_code String CEP
price Decimal Valor do envio
tax_name String Descrição de acréscimo / taxa
tax_value Decimal Valor de acréscimo / taxa
city String Cidade de entrega
state String Sigla do estado de entrega

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "123",
    "session_id": "123ABC456DEF789GHI",
    "cart_url": "http://loja.commercesuite.com.br/loja/carrinho.php?loja=123123&transID=123ABC456DEF789GHI&hash=",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do carrinho
session_id String Código da sessão do carrinho
cart_url String URL do carrinho
code Number Código do retorno (201)

Criar Carrinho Com Kit#post

Requisição para criação de um carrinho de compras com kit. Deverá enviar o JSON com os dados do carrinho para a criação.

Código de Exemplo:

curl --location --request POST 'https://necs.commercesuite.com.br/web_api/cart?access_token=APP_ID-2659-60189b1bd05bf816d7c7askjdhkajsd2f944d91e199939597dfd0206df4a619353e' \
--header 'Content-Type: application/json' \
--data-raw '{
  "Cart": {
      "session_id": "q5mb6ucvcrmt0dnqa2ccs77c52", 
      "product_id": "23397", 
      "variants_kit":"[\"13-23397-11\"]",
      "quantity": "1", 
      "price": "68.70"   
    }
}'
<?php
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://necs.commercesuite.com.br/web_api/cart?access_token=APP_ID-2659-60189b1bd05bf816d7c77a89s7d98au44d91e199939597dfd0206df4a619353e');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setHeader(array(
  'Content-Type' => 'application/json'
));
$request->setBody('{\n  "Cart": {\n      "session_id": "q5mb6ucvcrmt0dnqa2ccs77c52", \n      "product_id": "23397", \n      "variants_kit":"[\\"13-23397-11\\"]",\n      "quantity": "1", \n      "price": "68.70"   \n    }\n}');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://necs.commercesuite.com.br/web_api/cart?access_token=APP_ID-2659-60189b1bd05bf816d7c7da8s7d98ada1e199939597dfd0206df4a619353e");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddHeader("Content-Type", "application/json");
var body = @"{" + "\n" +
@"  ""Cart"": {" + "\n" +
@"      ""session_id"": ""q5mb6ucvcrmt0dnqa2ccs77c52"", " + "\n" +
@"      ""product_id"": ""23397"", " + "\n" +
@"      ""variants_kit"":""[\""13-23397-11\""]""," + "\n" +
@"      ""quantity"": ""1"", " + "\n" +
@"      ""price"": ""68.70""   " + "\n" +
@"    }" + "\n" +
@"}";
request.AddParameter("application/json", body,  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("application/json");
RequestBody body = RequestBody.create(mediaType, "{\n  \"Cart\": {\n      \"session_id\": \"q5mb6ucvcrmt0dnqa2ccs77c52\", \n      \"product_id\": \"23397\", \n      \"variants_kit\":\"[\\\"13-23397-11\\\"]\",\n      \"quantity\": \"1\", \n      \"price\": \"68.70\"   \n    }\n}");
Request request = new Request.Builder()
  .url("https://necs.commercesuite.com.br/web_api/cart?access_token=APP_ID-2659-60189b1bd05bf816d7c7a9s8d09as8df944d91e199939597dfd0206df4a619353e")
  .method("POST", body)
  .addHeader("Content-Type", "application/json")
  .build();
Response response = client.newCall(request).execute();

Estrutura do Json:

{
  "Cart": {
      "session_id": "q5mb6ucvcrmt0dnqa2ccs77c52", 
      "product_id": "23397", 
      "variants_kit":"[\"13-23397-11\"]",
      "quantity": "1", 
      "price": "68.70"   
    }
}

Método POST

https://{api_address}/carts/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
Cart JSON Dados do carrinho de compra
session_id String Código da sessão do carrinho
product_id Number Código do produto
variant_id Number Código da variação
quantity Number Quantidade do produto no carrinho
price Decimal Preço do produto
additional_information String Informações adicionais
id_shipping Number Código da forma de envio
name String Nome do destinatário
min_period Number Período mínimo para envio
max_period Number Período máximo para envio
zip_code String CEP
price Decimal Valor do envio
tax_name String Descrição de acréscimo / taxa
tax_value Decimal Valor de acréscimo / taxa
city String Cidade de entrega
state String Sigla do estado de entrega

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "19",
    "session_id": "q5mb6ucvcrmt0dnqa45ed77c52",
    "cart_url": "http://necs.commercesuite.com.br/loja/carrinho.php?loja=909625&transID=q5mb6ucv12kj0dnqa2ccs77c52&hash=4d51d71e8cchj122030e39a282f59f54",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do carrinho
session_id String Código da sessão do carrinho
cart_url String URL do carrinho
code Number Código do retorno (201)

Atualizar Dados do Carrinho#put

Requisição para alterar os dados de um carrinho. Deverá enviar o JSON com os dados do carrinho para a alteração.

Código de Exemplo:

curl --location -g --request PUT 'https://{api_address}/carts/?access_token={{access_token}}' \
--data-urlencode '["Cart"]["email"]=email@email.com.br' \
--data-urlencode '["Cart"]["variants_kit"]=""' \
--data-urlencode '["Cart"]["date"]=2021-04-05' \
--data-urlencode '["Cart"]["additional_info_kit"]=""' \
--data-urlencode '["Cart"]["user_id"]=2' \
--data-urlencode '["Cart"]["user_code"]=2' \
--data-urlencode '["Cart"]["hour"]=16:16:02' \
--data-urlencode '["Cart"]["Shipping"]["id_shipping"]=123' \
--data-urlencode '["Cart"]["Shipping"]["name"]=Sedex' \
--data-urlencode '["Cart"]["Shipping"]["min_period"]=1' \
--data-urlencode '["Cart"]["Shipping"]["max_period"]=3' \
--data-urlencode '["Cart"]["Shipping"]["zip_code"]=04001001' \
--data-urlencode '["Cart"]["Shipping"]["price"]=16.45' \
--data-urlencode '["Cart"]["Shipping"]["tax_name"]=Acréscimo' \
--data-urlencode '["Cart"]["Shipping"]["tax_value"]=2.00' \
--data-urlencode '["Cart"]["Shipping"]["city"]=São Paulo' \
--data-urlencode '["Cart"]["Shipping"]["state"]=SP'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/carts/?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_PUT);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->addPostParameter(array(
  '["Cart"]["email"]' => 'email@email.com.br',
  '["Cart"]["variants_kit"]' => '""',
  '["Cart"]["date"]' => '2021-04-05',
  '["Cart"]["additional_info_kit"]' => '""',
  '["Cart"]["user_id"]' => '2',
  '["Cart"]["user_code"]' => '2',
  '["Cart"]["hour"]' => '16:16:02',
  '["Cart"]["Shipping"]["id_shipping"]' => '123',
  '["Cart"]["Shipping"]["name"]' => 'Sedex',
  '["Cart"]["Shipping"]["min_period"]' => '1',
  '["Cart"]["Shipping"]["max_period"]' => '3',
  '["Cart"]["Shipping"]["zip_code"]' => '04001001',
  '["Cart"]["Shipping"]["price"]' => '16.45',
  '["Cart"]["Shipping"]["tax_name"]' => 'Acréscimo',
  '["Cart"]["Shipping"]["tax_value"]' => '2.00',
  '["Cart"]["Shipping"]["city"]' => 'São Paulo',
  '["Cart"]["Shipping"]["state"]' => 'SP'
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/carts/?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.PUT);
request.AddParameter("[\"Cart\"][\"email\"]", "email@email.com.br");
request.AddParameter("[\"Cart\"][\"variants_kit\"]", "\"\"");
request.AddParameter("[\"Cart\"][\"date\"]", "2021-04-05");
request.AddParameter("[\"Cart\"][\"additional_info_kit\"]", "\"\"");
request.AddParameter("[\"Cart\"][\"user_id\"]", "2");
request.AddParameter("[\"Cart\"][\"user_code\"]", "2");
request.AddParameter("[\"Cart\"][\"hour\"]", "16:16:02");
request.AddParameter("[\"Cart\"][\"Shipping\"][\"id_shipping\"]", "123");
request.AddParameter("[\"Cart\"][\"Shipping\"][\"name\"]", "Sedex");
request.AddParameter("[\"Cart\"][\"Shipping\"][\"min_period\"]", "1");
request.AddParameter("[\"Cart\"][\"Shipping\"][\"max_period\"]", "3");
request.AddParameter("[\"Cart\"][\"Shipping\"][\"zip_code\"]", "04001001");
request.AddParameter("[\"Cart\"][\"Shipping\"][\"price\"]", "16.45");
request.AddParameter("[\"Cart\"][\"Shipping\"][\"tax_name\"]", "Acréscimo");
request.AddParameter("[\"Cart\"][\"Shipping\"][\"tax_value\"]", "2.00");
request.AddParameter("[\"Cart\"][\"Shipping\"][\"city\"]", "São Paulo");
request.AddParameter("[\"Cart\"][\"Shipping\"][\"state\"]", "SP");
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "[\"Cart\"][\"email\"]=email@email.com.br&[\"Cart\"][\"variants_kit\"]=\"\"&[\"Cart\"][\"date\"]=2021-04-05&[\"Cart\"][\"additional_info_kit\"]=\"\"&[\"Cart\"][\"user_id\"]=2&[\"Cart\"][\"user_code\"]=2&[\"Cart\"][\"hour\"]=16:16:02&[\"Cart\"][\"Shipping\"][\"id_shipping\"]=123&[\"Cart\"][\"Shipping\"][\"name\"]=Sedex&[\"Cart\"][\"Shipping\"][\"min_period\"]=1&[\"Cart\"][\"Shipping\"][\"max_period\"]=3&[\"Cart\"][\"Shipping\"][\"zip_code\"]=04001001&[\"Cart\"][\"Shipping\"][\"price\"]=16.45&[\"Cart\"][\"Shipping\"][\"tax_name\"]=Acréscimo&[\"Cart\"][\"Shipping\"][\"tax_value\"]=2.00&[\"Cart\"][\"Shipping\"][\"city\"]=São Paulo&[\"Cart\"][\"Shipping\"][\"state\"]=SP");
Request request = new Request.Builder()
  .url("https://{api_address}/carts/?access_token={{access_token}}")
  .method("PUT", body)
  .build();
Response response = client.newCall(request).execute();

Estrutura do Json:

{
    "Cart": {
        "email": "teste@teste.com.br",
        "variants_kit":"5",
        "additional_info_kit": "",
        "date": "2018-11-13",
        "user_id": "22",
        "user_cod": "2",
        "hour": "16:16:02",
        "Shipping": {
            "id_shipping": "321", 
            "name": "Sedex", 
            "min_period": "1", 
            "max_period": "3",
            "zip_code": "040010011", 
            "price": "16.81", 
            "tax_name": "Acréscimo",
            "tax_value": "2.0", 
            "city": "São Paulo", 
            "state": "SP"
        }
    }
}

Método PUT

https://{api_address}/carts/?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
Cart JSON Dados do carrinho de compra
email String Email do cliente
variants_kit Number
additional_info_kit Number
date String Data de criação
user_id Decimal ID do usuario
user_cod Decimal Códico do usuario
hour String Hora de criação
Shipping String Informações adicionais
id_shipping Number Código da forma de envio
name String Nome do destinatário
min_period Number Período mínimo para envio
max_period Number Período máximo para envio
zip_code String CEP
price Decimal Valor do envio
tax_name String Descrição de acréscimo / taxa
tax_value Decimal Valor de acréscimo / taxa
city String Cidade de entrega
state String Sigla do estado de entrega

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created"
    "session_id": "123ABC456DEF789GHI",
    "cart_url": "http://loja.commercesuite.com.br/loja/carrinho.php?loja=123123&transID=123ABC456DEF789GHI&hash=",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
session_id String Código da sessão do carrinho
cart_url String URL do carrinho
code Number Código do retorno (201)

Excluir Carrinho#delete

Requisição para excluir um carrinho de compra.

Código de Exemplo:

curl --location -g --request DELETE 'https://{api_address}/carts/{{session_id}}?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/carts/{{session_id}}?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_DELETE);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/carts/{{session_id}}?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.DELETE);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://{api_address}/carts/{{session_id}}?access_token={{access_token}}")
  .method("DELETE", body)
  .build();
Response response = client.newCall(request).execute();

Método DELETE

https://{api_address}/carts/:session_id?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:session_id String Códiga sessão do carrinho

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Deleted",
    "session_id": "123ABC456DEF789GHI",
    "cart_url": "http://loja.commercesuite.com.br/loja/carrinho.php?loja=123123&transID=123ABC456DEF789GHI&hash=",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
session_id String Código da sessão do carrinho
cart_url String URL do carrinho
code Number Código do retorno (200)

Tabela Auxiliar de Carrinho de Compra

Tabela A - Bloqueio de forma de pagamento (campo blocked)

Valor Descrição
0 Forma de pagamento desbloqueada
1 Forma de pagamento bloqueada

Novo API de Listagem de Carrinho

Listagem dos Carrinhos#get

A API de Carrinho tem possibilidade de monitorar os carrinhos sejam eles por data, nome do cliente, e-mail do cliente, id do parceiro como também se o cliente possui vincúlo ou não.

Método GET

https://{api_address}/carts?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
has_customer String Para retorno apenas de carrinhos com compradores, onde 0 indica que não possui comprador vinculado e 1 indica que existe comprador vinculado
customer_name String Nome do cliente vinculado ao carrinho
customer_email String E-mail do cliente vinculado ao carrinho
partner_id Number Filtro pelo código do ID do parceiro vinculado
date_time date Data e hora inicial e final para obter o range de carrinhos, ex.: [start], [end] Formato: aaaa-mm-dd

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
   "paging":{
      "total":2,
      "page":1,
      "offset":0,
      "limit":30,
      "maxLimit":50
   },
   "sort":[
      []
   ],
   "availableFilters":[
      "has_customer",
      "customer_name",
      "customer_email",
      "partner_id",
      "date_time"
   ],
   "appliedFilters":[],
   "Carts":[
        {
            "Cart": {
                "session_id": ""
            }
        },
        {
            "Cart": {
                "session_id": "abc3knm0gps7bv7jnrro8k2431"
            }
        }
   ]
}
Campo Tipo Descrição
Cart Object Dados do carrinho de compra
session_id String Código da sessão

API de Lista de Preço B2B

Listar todas as listas de preços#get

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/price_list?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/price_list?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/price_list?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/price_list?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/price_list?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso

Retorno em caso de sucesso (status code 200 ou 201)

{
    "paging": {
        "total": 6,
        "page": 1,
        "offset": 0,
        "limit": 30,
        "maxLimit": 50
    },
    "sort": [
        []
    ],
    "availableFilters": [
        "name",
        "status"
    ],
    "appliedFilters": [],
    "PriceLists": [
        {
            "PriceList": {
                "status": "1",
                "id": "4",
                "name": "Lista de Preços Teste 123",
                "PriceValueList": [
                    {
                        "product_id": "",
                        "category_id": "9",
                        "value": "300",
                        "type": "R"
                    },
                    {
                        "product_id": "",
                        "category_id": "",
                        "value": "60",
                        "type": "R"
                    },
                    {
                        "product_id": "71",
                        "category_id": "",
                        "value": "6",
                        "type": "R"
                    }
                ]
            }
        }
    ]
}

Retorna uma lista de preços#get

Necessário informar um parâmetro ID na url

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/price_list/:id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/price_list/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/price_list/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/price_list/:id?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/price_list/:id?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código da lista

Retorno em caso de sucesso (status code 200 ou 201)

{
    "PriceList": {
        "status": "1",
        "id": "4",
        "name": "Lista de Preços Teste 123",
        "PriceValueList": [
            {
                "product_id": "",
                "category_id": "3",
                "value": "30",
                "type": "R"
            },
            {
                "product_id": "",
                "category_id": "5",
                "value": "55",
                "type": "R"
            },
            {
                "product_id": "",
                "category_id": "9",
                "value": "300",
                "type": "R"
            },
            {
                "product_id": "",
                "category_id": "",
                "value": "60",
                "type": "R"
            },
            {
                "product_id": "71",
                "category_id": "",
                "value": "6",
                "type": "R"
            }
        ]
    }
}

Cria uma Lista de Preços#post

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/price_list?access_token={{access_token}}' \
--data-raw '{
    "name":  "Lista de Preços Teste",
    "status": 1
}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/price_list?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setBody('{\n    "name":  "Lista de Preços Teste",\n    "status": 1\n}');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/price_list?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("text/plain", "{\n    \"name\":  \"Lista de Preços Teste\",\n    \"status\": 1\n}",  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n    \"name\":  \"Lista de Preços Teste\",\n    \"status\": 1\n}");
Request request = new Request.Builder()
  .url("https://{api_address}/price_list?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Estrutura do Json:

{
    "name":  "Lista de Preços Teste",
    "status": 1
}

Método POST

https://{api_address}/price_list?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
name String Nome da Lista
status Number Status da Lista

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "16",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da lista
code Number Código da lista (201)

Atualiza uma Lista de Preços#put

Necessário informar um parâmetro ID na url

Código de Exemplo:

curl --location -g --request PUT 'https://{api_address}/price_list/:id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/price_list/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_PUT);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/price_list/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.PUT);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://{api_address}/price_list/:id?access_token={{access_token}}")
  .method("PUT", body)
  .build();
Response response = client.newCall(request).execute();

Estrutura do Json:

{
    "name":  "Lista de Preços",
    "status": 1
}

Método PUT

https://{api_address}/price_list/:id?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código da lista
name String Nome da Lista
status Number Status da Lista

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Saved",
    "code": 200,
    "id": "15"
}
Campo Tipo Descrição
message String Mensagem de retorno
code Number Código da lista (200)
id Number Código da lista

Exclui uma Lista de Preços#delete

Necessário informar um parâmetro ID na url

Código de Exemplo:

curl --location -g --request DELETE 'https://{api_address}/price_list/:id?access_token={{access_token}}' \
--data-raw ''
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/price_list/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_DELETE);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setBody('');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/price_list/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.DELETE);
request.AddParameter("text/plain", "",  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "");
Request request = new Request.Builder()
  .url("https://{api_address}/price_list/:id?access_token={{access_token}}")
  .method("DELETE", body)
  .build();
Response response = client.newCall(request).execute();

Método DELETE

https://{api_address}/price_list/:id?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código da lista

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Deleted",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
code Number Código do retorno (201)

Listar valores de uma Lista de Preços#get

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/price_value_list?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/price_value_list?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/price_value_list?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/price_value_list?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/price_value_list?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso

Retorno em caso de sucesso (status code 200 ou 201)

{
    "paging": {
        "total": 22,
        "page": 1,
        "offset": 0,
        "limit": 30,
        "maxLimit": 50
    },
    "sort": [
        {
            "id": "asc"
        }
    ],
    "availableFilters": [],
    "appliedFilters": [],
    "PriceValueLists": [
        {
            "PriceValueList": {
                "id": "10",
                "price_list_id": "6",
                "product_id": "",
                "category_id": "",
                "value": "12",
                "type": "R"
            }
        },
        {
            "PriceValueList": {
                "id": "14",
                "price_list_id": "8",
                "product_id": "",
                "category_id": "",
                "value": "25",
                "type": "P"
            }
        },
        {
            "PriceValueList": {
                "id": "18",
                "price_list_id": "8",
                "product_id": "",
                "category_id": "35",
                "value": "10",
                "type": "R"
            }
        }
    ]
}

Retorna um valor#get

Necessário informar um parâmetro ID na url

Código de Exemplo:

curl --location -g --request GET 'https://{api_address}/price_value_list/:id?access_token={{access_token}}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/price_value_list/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_GET);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/price_value_list/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.GET);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
Request request = new Request.Builder()
  .url("https://{api_address}/price_value_list/:id?access_token={{access_token}}")
  .method("GET", null)
  .build();
Response response = client.newCall(request).execute();

Método GET

https://{api_address}/price_value_list/:id?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código da lista de valores

Retorno de Sucesso:

{
    "PriceValueList": {
        "id": "61",
        "price_list_id": "13",
        "product_id": "230",
        "category_id": "",
        "value": "50",
        "type": "P"
    }
}

Cria um valor na Lista de Preços#post

Código de Exemplo:

curl --location -g --request POST 'https://{api_address}/price_value_list?access_token={{access_token}}' \
--data-raw '{
    "price_list_id":  15,
    "category_id": 11,
    "value":  25,
    "type": "P"
}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/price_value_list?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_POST);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setBody('{\n    "price_list_id":  15,\n    "category_id": 11,\n    "value":  25,\n    "type": "P"\n}');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/price_value_list?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.POST);
request.AddParameter("text/plain", "{\n    \"price_list_id\":  15,\n    \"category_id\": 11,\n    \"value\":  25,\n    \"type\": \"P\"\n}",  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n    \"price_list_id\":  15,\n    \"category_id\": 11,\n    \"value\":  25,\n    \"type\": \"P\"\n}");
Request request = new Request.Builder()
  .url("https://{api_address}/price_value_list?access_token={{access_token}}")
  .method("POST", body)
  .build();
Response response = client.newCall(request).execute();

Estrutura do Json:

{
    "price_list_id":  15,
    "category_id": 11,
    "value":  25,
    "type": "P"
}

Método POST

https://{api_address}/price_value_list?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Created",
    "id": "123",
    "code": 201
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código da Lista de Preços
code Number Código do retorno (201)

Atualiza um valor#put

Necessário informar um parâmetro ID na url

Código de Exemplo:

curl --location -g --request PUT 'https://{api_address}/price_value_list/:id?access_token={{access_token}}' \
--data-raw '{
    "price_list_id":  15,
    "category_id": 11,
    "value":  25,
    "type": "P"
}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/price_value_list/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_PUT);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setBody('{\n    "price_list_id":  15,\n    "category_id": 11,\n    "value":  25,\n    "type": "P"\n}');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/price_value_list/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.PUT);
request.AddParameter("text/plain", "{\n    \"price_list_id\":  15,\n    \"category_id\": 11,\n    \"value\":  25,\n    \"type\": \"P\"\n}",  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n    \"price_list_id\":  15,\n    \"category_id\": 11,\n    \"value\":  25,\n    \"type\": \"P\"\n}");
Request request = new Request.Builder()
  .url("https://{api_address}/price_value_list/:id?access_token={{access_token}}")
  .method("PUT", body)
  .build();
Response response = client.newCall(request).execute();

Estrutura do Json:

{
    "price_list_id":  15,
    "category_id": 11,
    "value":  25,
    "type": "P"
}

Método PUT

https://{api_address}/price_value_list/:id?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do Valor

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Saved",
    "code": 200,
    "id": "62"
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do Valor
code Number Código do retorno (201)

Exclui um valor#delete

Código de Exemplo:

curl --location -g --request DELETE 'https://{api_address}/price_value_list/:id?access_token={{access_token}}' \
--data-raw '{
    "price_list_id":  15,
    "category_id": 11,
    "value":  25,
    "type": "P"
}'
<?php
require_once 'HTTP/Request2.php';
$request = new HTTP_Request2();
$request->setUrl('https://{api_address}/price_value_list/:id?access_token={{access_token}}');
$request->setMethod(HTTP_Request2::METHOD_DELETE);
$request->setConfig(array(
  'follow_redirects' => TRUE
));
$request->setBody('{\n    "price_list_id":  15,\n    "category_id": 11,\n    "value":  25,\n    "type": "P"\n}');
try {
  $response = $request->send();
  if ($response->getStatus() == 200) {
    echo $response->getBody();
  }
  else {
    echo 'Unexpected HTTP status: ' . $response->getStatus() . ' ' .
    $response->getReasonPhrase();
  }
}
catch(HTTP_Request2_Exception $e) {
  echo 'Error: ' . $e->getMessage();
}
var client = new RestClient("https://{api_address}/price_value_list/:id?access_token={{access_token}}");
client.Timeout = -1;
var request = new RestRequest(Method.DELETE);
request.AddParameter("text/plain", "{\n    \"price_list_id\":  15,\n    \"category_id\": 11,\n    \"value\":  25,\n    \"type\": \"P\"\n}",  ParameterType.RequestBody);
IRestResponse response = client.Execute(request);
Console.WriteLine(response.Content);
OkHttpClient client = new OkHttpClient().newBuilder()
  .build();
MediaType mediaType = MediaType.parse("text/plain");
RequestBody body = RequestBody.create(mediaType, "{\n    \"price_list_id\":  15,\n    \"category_id\": 11,\n    \"value\":  25,\n    \"type\": \"P\"\n}");
Request request = new Request.Builder()
  .url("https://{api_address}/price_value_list/:id?access_token={{access_token}}")
  .method("DELETE", body)
  .build();
Response response = client.newCall(request).execute();

Método DELETE

https://{api_address}/price_value_list/:id?access_token={{access_token}}

Parâmetros enviados:

Campo Tipo Descrição
access_token String Chave de acesso
:id Number Código do valor

Retorno em caso de sucesso (status code 200 ou 201)

Retorno de Sucesso:

{
    "message": "Deleted",
    "id": "62",
    "code": 200
}
Campo Tipo Descrição
message String Mensagem de retorno
id Number Código do valor
code Number Código do retorno (201)

APIs de Usuário

Listagem de Usuário#get

Método GET

https://{api_address}/web_api/users?access_token={{access_token}}

Retorno de Sucesso:

{    
    "Users": [
        {
            "User": {
                "cpf": "01234567890",
                "two_factor_enabled": "0",
                "id": "1",
                "full_name": "Meu usuário",
                "name": "meuusuario",
                "email": "usuario@site.com.br",
                "main_user": "1",
                "image": {
                    "http": "http:\/\/images.tcdn.com.br\/img\/img_prod\/351572\/user_image_1_102030.jpeg",
                    "https": "https:\/\/images.tcdn.com.br\/img\/img_prod\/351572\/user_image_1_102030.jpeg"
                },
                "active": "1",
                "password_update_date": "2022-01-01 00:00:00",
                "password_update_ip": "192.168.1.1",
                "last_login": "2022-04-20 00:00:00",
                "Permissions": {
                    "Orders": {
                        "view": "1",
                        "edit": "1",
                        "add": "1",
                        "delete": "1",
                        "export": "1"
                    },
                    "Customers": {
                        "view": "1",
                        "edit": "1",
                        "add": "1",
                        "delete": "1",
                        "export": "1"
                    },
                    "Products": {
                        "view": "1",
                        "edit": "1",
                        "add": "1",
                        "delete": "1",
                        "export": "1"
                    },
                    "Settings": {
                        "view": "1",
                        "edit": "1",
                        "add": "1",
                        "delete": "1",
                        "export": "0"
                    },
                    "Payments": {
                        "view": "1",
                        "edit": "1",
                        "add": "1",
                        "delete": "1",
                        "export": "0"
                    },
                    "Reports": {
                        "view": "1",
                        "edit": "1",
                        "add": "1",
                        "delete": "1",
                        "export": "0"
                    },
                    "Emails": {
                        "view": "1",
                        "edit": "1",
                        "add": "1",
                        "delete": "1",
                        "export": "0"
                    },
                    "Access": {
                        "view": "1",
                        "edit": "1",
                        "add": "1",
                        "delete": "1",
                        "export": "0"
                    },
                    "Applications": {
                        "view": "1",
                        "edit": "1",
                        "add": "1",
                        "delete": "1",
                        "export": "0"
                    },
                    "MinhaTray": {
                        "view": "1",
                        "edit": "1",
                        "add": "1",
                        "delete": "1",
                        "export": "1"
                    },
                    "Functionalities": {
                        "edit_order_products": "1",
                        "edit_order_discounts": "1",
                        "edit_order_taxes": "1",
                        "edit_order_shippings": "1",
                        "edit_order_payments": "1",
                        "edit_order_shipping_codes": "1",
                        "edit_order_status": "1"
                    }
                }
            }
        }
    ]
}