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:
- Autorização
- Características
- Carrinho de Compra
- Categorias
- Clientes
- Cupom
- Emissores de Etiquetas
- Etiqueta Mercado Livre
- informações Adicionais
- Informações da Loja
- Informações de Pagamentos
- Integração de Fretes
- Kits
- Lista de Preços B2B
- Marca de Produtos
- Newsletter
- Nota Fiscal
- Páginas da Loja
- Palavras-Chave
- Parceiros
- Pedidos
- Produtos
- Produtos Vendidos
- Scripts Externos
- Sistema de Notificação Webhook
- Status de Pedido
- Variação de Produtos
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:
- Realizar o credenciamento
- Informar os dados para a criação de uma aplicação.
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:
- Nome do aplicativo
- Descrição simplificada do aplicativo
- Imagem com o logo da aplicação
- Descrição completa do aplicativo
- URL de callback, em ambiente seguro - SSL (URL utilizada para realizar a autorização da aplicação)
- ID da Loja
- Link do vídeo (Youtube)
- URLs de imagens (máximo 3)
Dados do integrador:
- Nome da empresa
- Telefone
- Site
- Nome do Responsável Técnico (Desenvolvedor)
- E-mail do Responsável Técnico (Desenvolvedor)
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:
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
2-Clique sobre instalar novo aplicativos
3-Procure pelo seu aplicativo
4-Acessando o painel da loja na opção: Meus Aplicativos.
Procure pelo aplicativo e clique sobre acessar , onde será exibido o code!!
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
Enviar as evidencias das requisições utilizadas na aplicação (URL, JSON e Retorno) conforme a documentação enviada após o preenchimento do formulário quero ser parceiro
Ter preenchido o formulário quero ser parceiro
Ter feito todas requisições na loja de teste
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
- Quantidade de imagens: Até 15 imagens;
- Formatos: JPG, JPEG e PNG;
- Dimensão: Limite máximo de 2000 x 2000 pixels;
- Tamanho: Até 350 Kb;
- URL: Deverá ser de acesso público, não conter espaços, acentuação ou caracteres especiais;
- Não enviar a imagem com o nome já enviado anteriormente;
- A imagem não poderá possuir uma extensão renomeada;
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
- Quantidade de imagens: Até 15 imagens;
- Formatos: JPG, JPEG e PNG;
- Dimensão: Limite máximo de 2000 x 2000 pixels;
- Tamanho: Até 350 Kb;
- URL: Deverá ser de acesso público, não conter espaços, acentuação ou caracteres especiais;
- Não enviar a imagem com o nome já enviado anteriormente;
- A imagem não poderá possuir uma extensão renomeada;
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) |
String | ||
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 |
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." |
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.
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:
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.
- DADOS QUE A TRAY IRÁ ENVIAR PARA A URL DO INTEGRADOR
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:
Mantenha habilitada e digite um nome para identificar a integração. Depois clique em continuar:
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.
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 |
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 |
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) |
String | ||
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) |
String | ||
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) |
String | ||
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) |
String | ||
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:
- coupon_type: loja, cliente ou troca;
- local_application: loja, produtos, marcas, categorias;
- freight_application: nao_aplicavel, desconto, frete_gratis.
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.
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.
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.
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.
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 |
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 |
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 |
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 |
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 |
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"
}
}
}
}
]
}