Introdução
A API Yever foi cuidadosamente projetada seguindo os princípios e melhores práticas do padrão REST. Esta API permite a integração com diversas aplicações, independentemente da linguagem de programação utilizada, graças à sua abordagem simples e clara na manipulação de requisições e respostas.
As operações disponíveis são realizadas através de requisições aos endpoints correspondentes, utilizando os verbos HTTP apropriados e corpos de mensagem formatados em JSON. As respostas podem ser analisadas com base nos códigos de status HTTP fornecidos.
É importante ressaltar que não dispomos de um ambiente de homologação, uma vez que todos os endpoints utilizam o método GET. A URL base para todas as requisições é: https://api.yever.com.br/api/v1. A partir desta URL base, é possível acessar o endpoint desejado, como no exemplo a seguir: https://api.yever.com.br/api/v1/order/list, que consulta a lista de pedidos.
Esta documentação oferece informações detalhadas sobre como consultar dados via API e realizar integrações através de Webhooks. Ao longo da documentação, você encontrará descrições detalhadas dos endpoints disponíveis, bem como exemplos de requisições e respostas, para auxiliar no desenvolvimento de sua aplicação.
Autenticação
Exemplo para a rota de pedidos
curl 'https://api.yever.com.br/api/v1/order/list' \
--header 'Authorization: Bearer 999|xxxxxxxxxxxxxx'
const options = {
method: "GET",
headers: {
Accept: "application/json",
Authorization: "Bearer 999|xxxxxxxxxxxxxx",
},
};
fetch("https://api.yever.com.br/api/v1/order/list", options)
.then((response) => response.json())
.then((response) => console.log(response));
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request(
'GET',
'https://api.yever.com.br/api/v1/order/list',
[
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer 999|xxxxxxxxxxxxxx',
],
],
);
$data = $response->getBody()->getContents();
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.yever.com.br/api/v1/order/list")
.get()
.addHeader("Accept", "application/json")
.addHeader("Authorization", "Bearer 999|xxxxxxxxxxxxxx")
.build();
Response response = client.newCall(request).execute();
Lembre-se de substituir
999|xxxxxxxxxxxxxxpelo token fornecido na Yever.
Todas as chamadas devem conter o seguinte Header: Authorization: Bearer 999|xxxxxxxxxxxxxx. O token deve ser gerado dentro do sistema Yever, no seguinte caminho: Configuração > API > Novo token. O formato do token será [0-9]+|[a-zA-z0-9]+, ou seja, um número, pipe (|) e uma string aleatória. O token só será exibido no momento da criação, não sendo possível visualizá-lo novamente.
Filtros e paginação
{
"orders": [
{},
{},
...
],
"paginate": {
"current": 1,
"last": 5,
"total": 430,
"per_page": 100
}
}
Todos os filtros sempre serão via query parameters. Exemplo:
https://api.yever.com.br/api/v1/order/list?created_at_inicial=2022-11-01&created_at_final=2022-12-10&payment_method=credit_card&per_page=50&page=5. Os filtros permitidos serão informados em cada endpoint. Se forem enviados outros filtros além dos permitidos na requisição a API apenas irá ignorá-los. Se existir algum filtro com valor incorreto, será retornado o status 422 e a mensagem de erro. Exemplo: payment_method precisa ser pix, billet ou credit_card.
O objeto paginate sempre estará presente em todas as respostas, independente dela ter apenas 1 registro. Ele sempre vem após os dados, no final da resposta.
O parâmetro per_page tem limite de 500, enquanto o page tem limite de 100. Ou seja, é possível obter até 50.000 registros por filtro. Caso necessite de mais registros, utilize os filtros por data e faça a quantidade de consultas necessárias. No exemplo a direita, você precisa fazer 5 consultas para pegar todos os dados (page=1,page=2,page=3,page=4,page=5). Se o parâmetro page não estiver presente, o valor 1 será considerado. Se o parâmetro per_page não estiver presente, o valor 100 será considerado.
Api
Pedidos
GET: https://api.yever.com.br/api/v1/order/list
curl 'https://api.yever.com.br/api/v1/order/list?created_at_inicial=2022-11-01&created_at_final=2023-01-01&per_page=200&page=1' \
--header 'Authorization: Bearer 999|xxxxxxxxxxxxxx'
const options = {
method: "GET",
headers: {
Accept: "application/json",
Authorization: "Bearer 999|xxxxxxxxxxxxxx",
},
};
fetch(
"https://api.yever.com.br/api/v1/order/list?created_at_inicial=2022-11-01&created_at_final=2023-01-01&per_page=200&page=1",
options,
)
.then((response) => response.json())
.then((response) => console.log(response));
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request(
'GET',
'https://api.yever.com.br/api/v1/order/list?created_at_inicial=2022-11-01&created_at_final=2023-01-01&per_page=200&page=1',
[
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer 999|xxxxxxxxxxxxxx',
],
],
);
$data = $response->getBody()->getContents();
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.yever.com.br/api/v1/order/list?created_at_inicial=2022-11-01&created_at_final=2023-01-01&per_page=200&page=1")
.get()
.addHeader("Accept", "application/json")
.addHeader("Authorization", "Bearer 999|xxxxxxxxxxxxxx")
.build();
Response response = client.newCall(request).execute();
A resposta da requisição acima será um json no seguinte formato
{
"orders": [
{
"reference": "1234567890", // [0-9]{10}
"cart_reference": "41413750-c68f-46f0-ae42-a8f3ad9e4859", // 36 char, pode ser nulo
"customer": {
"name": "Nome do cliente",
"email": "email@email.com",
"phone": "+5511999991111", // sempre 14 dígitos, +55 (código do brasil), 2 números do ddd e 9 do celular
"type": "F", // F -> Pessoa Física, J -> Pessoa Jurídica
"document": "92220244008", // \d{11}(\d{3})? - 11 ou 14 números
"birthday": "1990-01-15" // YYYY-MM-DD, pode ser nulo
},
"status": "paid", // pending_payment, paid, refunded, charged_back, canceled
"products": [ // produtos que de fato foram comprados
{
"product_id": 5732411797552, // id no ERP
"product_title": "Exemplo de produto",
"variant_id": 53012421484761,
"variant_title": "Variante abc",
"quantity": 3,
"price": 33.15,
"price_cost": 20.00,
"image_url": "https://images.yever.com.br/product/exemplodeimagem-1669936110.jpg",
"is_order_bump": 0
}
],
"shipping_address": {
"name": "Nome de quem vai receber",
"phone": "+5511999991111", // sempre 14 dígitos, +55 (código do brasil), 2 números do ddd e 9 do celular
"address1": "logradouro, numero",
"address2": "Bairro",
"city": "Cidade",
"province_code": "MG",
"country": "Brazil",
"country_code": "BR",
"zip": "11111111" // sempre 8 dígitos
},
"tracking": {
"code": "código de rastreio", // qualquer formato, pode ser de alguma transportadora da china, correios, etc. Ex: NL501111803BR
"courier": "transportadora" // nome da transportadora. Ex: Correios
},
"coupon_code": null, // código do cupom se tiver
"currency": "BRL",
"price_initial": 178.86, // valor inicial do pedido -> price_subtotal + price_shipment
"price_subtotal": 168.40, // valor dos produtos
"price_shipment": 10.46, // valor do frete
"price_coupon_discount": 5.05, // desconto do cupom
"price_shipment_discount": 10.46, // desconto do frete
"price_offer_discount": 0, // desconto da oferta
"price_bxgy_discount": 0, // desconto do compre x leve y
"price_payment_discount": 8.17, // desconto por forma de pagamento
"price_total": 155.18, // valor final do pedido -> price_subtotal + price_shipment - price_coupon_discount - price_shipment_discount - price_offer_discount - price_bxgy_discount - price_payment_discount
"price_client_final": 155.18, // valor da venda com juros de parcelamento - recebimento no fluxo ou só checkout
"price_coupon": 0.00, // deprecated, do not use
"price_discount": 0.00, // deprecated, do not use
"payment_method": "credit_card", // pix, billet, credit_card
"billet_code": null, // linha digitável do boleto
"billet_url": null, // url para acessar o boleto
"pix_code": null, // pix copia e cola
"pix_url": null, // url para imagem do pix
"checkout_url": "https://seguro.client.com.br/checkout/products?product_id[0]=1&quantity[0]=1", // url para refazer a compra se necessário
"payment_url": "https://seguro.client.com.br/checkout/pix/1234567890", // url para fazer o pagamento -> Apenas pix e boleto e os números são o reference
"is_upsell": 0,
"installments": 12, // sempre será 1 para pix e boleto
"created_at": "2022-12-09 05:46:59",
"updated_at": "2022-12-09 05:47:01",
"utms": {
"source": "face",
"campaign": "promocao_blackfriday",
"medium": null,
"content": null,
"term": null,
},
"price_client": {
"client": 102.89, // valor recebido pelo cliente
"yever_base": 6.56, // taxa da yever
"installment_antecipation": 0, // valor pago por assumir parcelas sem juros
}
},
{
...
},
],
"paginate": {
"current": 1,
"last": 3,
"total": 475,
"per_page": 200
}
}
Possíveis filtros:
| Parâmetro | Valor padrão | Obrigatório | Exemplo | Description |
|---|---|---|---|---|
| reference | Não | 1234567890 | Código do pedido | |
| customer | Não | Maria da C, 31999991111, exemploemail@h | Nome, e-mail, telefone (apenas números, sem +55), ou cpf (apenas números). O filtro é do tipo like, ou seja, você pode enviar apenas uma parte do que deseja procurar | |
| coupon_code | - | Não | Filtra pedidos que utilizaram o cupom informado. Máximo 50 caracteres. | |
| status | Não | paid | pending_payment, paid, refunded, charged_back, canceled | |
| payment_method | Não | credit_card | billet, credit_card, pix | |
| created_at_inicial | Não | 2022-10-01 15:00:00. | ||
| created_at_final | Não | 2022-10-01 19:00:00 | ||
| updated_at_inicial | Não | 2023-01-01 | Se o horário não for fornecido, será considerado 00:00:00 | |
| updated_at_final | Não | 2023-02-01 | ||
| page | 1 | Não | 1 | Objeto de paginação. Se o resultado tiver mais de uma página, você deverá fazer uma requisição para cada página. Máximo 100 páginas |
| per_page | 100 | Não | 25 | Quantidade de itens por página. Máximo de 500 itens |
Carrinho Abandonado
GET: https://api.yever.com.br/api/v1/cart/list
curl 'https://api.yever.com.br/api/v1/cart/list?last_step=payment&order_status=canceled&per_page=10' \
--header 'Authorization: Bearer 999|xxxxxxxxxxxxxx'
const options = {
method: "GET",
headers: {
Accept: "application/json",
Authorization: "Bearer 999|xxxxxxxxxxxxxx",
},
};
fetch(
"https://api.yever.com.br/api/v1/cart/list?last_step=payment&order_status=canceled&per_page=10",
options,
)
.then((response) => response.json())
.then((response) => console.log(response));
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request(
'GET',
'https://api.yever.com.br/api/v1/cart/list?last_step=payment&order_status=canceled&per_page=10',
[
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer 999|xxxxxxxxxxxxxx',
],
],
);
$data = $response->getBody()->getContents();
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.yever.com.br/api/v1/cart/list?last_step=payment&order_status=canceled&per_page=10")
.get()
.addHeader("Accept", "application/json")
.addHeader("Authorization", "Bearer 999|xxxxxxxxxxxxxx")
.build();
Response response = client.newCall(request).execute();
A resposta da requisição acima será um json no seguinte formato
{
"carts": [
{
"reference": "41413750-c68f-46f0-ae42-a8f3ad9e4859", // 36 char, nesse formato
"customer": {
"name": "Nome do cliente",
"email": "email@email.com",
"phone": "+5511999991111", // sempre 14 dígitos, +55 (código do brasil), 2 números do ddd e 9 do celular
"birthday": "1990-01-15" // YYYY-MM-DD, pode ser nulo
},
"last_step": "payment", // client, delivery, shipment, payment, card_refused, order. Até qual step o cliente chegou. `order` significa que ele tentou gerar pedido
"order_status": "canceled", // null se não tiver sido gerado um pedido, pending_payment, paid, refunded, charged_back, canceled
"products": [ // produtos iniciais quando o cliente entrou na tela
{
"product_title": "Exemplo de produto",
"variant_title": "Variante abc",
"quantity": 2,
"price": 47.91, // preço unitário
"image_url": "https://images.yever.com.br/product/exemplodeimagem-1669936110.jpg",
}
],
"currency": "BRL",
"price_total": 95.82,
"checkout_url": "https://seguro.yever.com.br/checkout/products?product_id[0]=1&quantity[0]=2",
"created_at": "2022-12-02 06:59:17",
"updated_at": "2022-12-02 07:00:27",
"abandoned_at":"2022-12-02 07:05:00",
"utms": {
"source": "face",
"campaign": "promocao_blackfriday",
"medium": null,
"content": null,
"term": null,
},
},
{
...
}
],
"paginate": {
"current": 1,
"last": 4,
"total": 36,
"per_page": 10
}
}
Possíveis filtros:
| Parâmetro | Valor padrão | Obrigatório | Exemplo | Description |
|---|---|---|---|---|
| reference | Não | 41413750-c68f-46f0-ae42-a8f3ad9e4859 | uuid do cliente pedido. 36 dígitos | |
| customer | Não | Maria da C, 31999991111, exemploemail@h | Nome, e-mail, telefone (apenas números, sem +55), ou cpf (apenas números). O filtro é do tipo like, ou seja, você pode enviar apenas uma parte do que deseja procurar | |
| last_step | Não | payment | client, delivery, shipment, payment, order | |
| order_status | Não | paid | pending_payment, paid, refunded, charged_back, canceled | |
| created_at_inicial | Não | 2022-10-01 15:00:00. | ||
| created_at_final | Não | 2022-10-01 19:00:00 | ||
| updated_at_inicial | Não | 2023-01-01 | Se o horário não for fornecido, será considerado 00:00:00 | |
| updated_at_final | Não | 2023-02-01 | ||
| page | 1 | Não | 5 | Objeto de paginação. Se o resultado tiver mais de uma página, você deverá fazer uma requisição para cada página. Máximo 100 páginas |
| per_page | 100 | Não | 500 | Quantidade de itens por página. Máximo de 500 itens |
Produtos
GET: https://api.yever.com.br/api/v1/product/list
curl 'https://api.yever.com.br/api/v1/product/list' \
--header 'Authorization: Bearer 999|xxxxxxxxxxxxxx'
const options = {
method: "GET",
headers: {
Accept: "application/json",
Authorization: "Bearer 999|xxxxxxxxxxxxxx",
},
};
fetch("https://api.yever.com.br/api/v1/product/list", options)
.then((response) => response.json())
.then((response) => console.log(response));
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request(
'GET',
'https://api.yever.com.br/api/v1/product/list',
[
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer 999|xxxxxxxxxxxxxx',
],
],
);
$data = $response->getBody()->getContents();
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.yever.com.br/api/v1/product/list")
.get()
.addHeader("Accept", "application/json")
.addHeader("Authorization", "Bearer 999|xxxxxxxxxxxxxx")
.build();
Response response = client.newCall(request).execute();
A resposta da requisição acima será um json no seguinte formato
{
"products": [
{
"id": 2177702,
"erp_id": "5732411797552", // id no ERP
"erp_origin": "shopify", // plataforma de origem
"type": "product", // kit, product
"title": "Camisa Masculina",
"image": "https://images.yever.com.br/product/exemplo.jpg",
"active": true,
"digital": false,
"variants": [
{
"id": 2177750,
"code": "V23BIZgR", // código do produto na Yever
"erp_id": "53012421484761", // id no ERP
"erp_origin": "shopify",
"sku": "SKU-123",
"title": "Cor: Amarela",
"price_sale": 99.9, // preço de venda
"price_original": 129.9, // preço original (sem desconto)
"price_discount": 30.0, // valor do desconto
"price_cost": 79.0, // preço de custo
"total_units": 100, // estoque
"width": 10.5, // largura em cm
"height": 20.0, // altura em cm
"length": 15.0, // comprimento em cm
"weight": 0.5, // peso em kg
"image": "https://images.yever.com.br/product/variante.jpg",
"active": true
}
]
}
],
"paginate": {
"current": 1,
"last": 5,
"total": 450,
"per_page": 100
}
}
Possíveis filtros:
| Parâmetro | Valor padrão | Descrição |
|---|---|---|
| active | - | Filtra por produtos ativos (true) ou inativos (false). Se não informado, retorna todos. |
| page | 1 | Número da página. Mínimo: 1. |
| per_page | 100 | Quantidade de registros por página. Mínimo: 1, máximo: 250. |
Cupons
Criar cupom
curl 'https://api.yever.com.br/api/v1/coupon/create' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer 999|xxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
-d '{
"name": "Exemplo de cupom",
"code": "TESTE",
"discount_value": 100.15,
"start_at": "2025-01-01 15:45:50",
"message": "Mensagem de teste",
"applies_automatic": false,
"first_purchase": true,
"single_use_per_user": 0,
"free_shipment": 1
}'
const body = {
name: "Exemplo de cupom",
code: "TESTE",
discount_value: 100.15,
start_at: "2025-01-01 15:45:50",
message: "Mensagem de teste",
applies_automatic: false,
first_purchase: true,
single_use_per_user: 0,
free_shipment: 1,
};
const options = {
method: "POST",
headers: {
Accept: "application/json",
Authorization: "Bearer 999|xxxxxxxxxxxxxx",
"Content-Type": "application/json",
},
body: JSON.stringify(body),
};
fetch("https://api.yever.com.br/api/v1/coupon/create", options)
.then((response) => response.json())
.then((response) => console.log(response));
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request(
'POST',
'https://api.yever.com.br/api/v1/coupon/create',
[
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer 999|xxxxxxxxxxxxxx',
'Content-Type' => "application/json",
],
'json' => [
"name" => "Exemplo de cupom",
"code" => "TESTE",
"discount_value" => 100.00,
"start_at" => "2025-01-01 15:45:50",
"message" => "Mensagem de teste",
"applies_automatic" => false,
"first_purchase" => true,
"single_use_per_user" => 0,
"free_shipment" => 1
],
],
);
$data = $response->getBody()->getContents();
OkHttpClient client = new OkHttpClient();
String jsonBody = "{"
+ "\"name\": \"Exemplo de cupom\","
+ "\"code\": \"TESTE\","
+ "\"discount_value\": 100.15,"
+ "\"start_at\": \"2025-01-01 15:45:50\","
+ "\"message\": \"Mensagem de teste\","
+ "\"applies_automatic\": false,"
+ "\"first_purchase\": true,"
+ "\"single_use_per_user\": 0,"
+ "\"free_shipment\": 1"
+ "}";
MediaType JSON = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(jsonBody, JSON);
Request request = new Request.Builder()
.url("https://api.yever.com.br/api/v1/coupon/create")
.post(body)
.addHeader("Accept", "application/json")
.addHeader("Authorization", "Bearer 999|xxxxxxxxxxxxxx")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
A resposta da requisição acima será um json no seguinte formato
{
"id": "bb41d681-aac4-4413-8492-94225fa1368a"
}
POST: https://api.yever.com.br/api/v1/coupon/create
| Campo | Obrigatório | Tipo | Exemplo | Description |
|---|---|---|---|---|
| name | Não | string | CAMPANHA ABC | Apenas para controle interno na plataforma |
| code | Sim | string | CUPOM123 | Código do cupom que o consumidor vai usar no checkout |
| discount_value | Não | float | 250.00 | Obrigatório se não tiver discount_percentage |
| discount_percentage | Não | float | 15.00 | Obrigatório se não tiver discount_value |
| discount_maximum_value | Não | float | 250.00 | Valor máximo do desconto |
| price_minimum | Não | float | 100.00 | Valor mínimo dos produtos no carrinho para aplicar o desconto |
| price_maximum | Não | float | 500.00 | Valor máximo dos produtos no carrinho para aplicar o desconto |
| quantity_minimum | Não | integer | 3 | Quantidade mínima de produtos no carrinho para aplicar o desconto |
| quantity_total | Não | integer | 1000 | Quantidade de cupons disponíveis |
| start_at | Não | string | 2025-12-01 23:59:59 | Data inicial para utilização do cupom |
| expiration_at | Não | string | 2025-12-31 23:59:59 | Data final para utilização do cupom |
| message | Sim | string | Cupom aplicado com sucesso | Mensagems de sucesso ao aplicar o cupom |
| applies_automatic | Sim | boolean | false | Apenas um cupom na loja pode ter essa flag ativa |
| first_purchase | Sim | boolean | true | Todos os campos boolean aceitam true ou 1, false ou 0 |
| single_use_per_user | Sim | boolean | 0 | |
| free_shipment | Sim | boolean | 1 |
* É obrigatório informar discount_value ou discount_percentage — ao menos um dos dois deve ser preenchido.
Atualizar cupom
PUT: https://api.yever.com.br/api/v1/coupon/{code}/update
curl 'https://api.yever.com.br/api/v1/coupon/PROMO10/update' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer 999|xxxxxxxxxxxxxx' \
--header 'Content-Type: application/json' \
-d '{
"name": "Exemplo de cupom",
"discount_value": 100.15,
"start_at": "2025-01-01 15:45:50",
"message": "Mensagem de teste",
"applies_automatic": false,
"first_purchase": true,
"single_use_per_user": 0,
"free_shipment": 1
}'
const body = {
name: "Exemplo de cupom",
discount_value: 100.15,
start_at: "2025-01-01 15:45:50",
message: "Mensagem de teste",
applies_automatic: false,
first_purchase: true,
single_use_per_user: 0,
free_shipment: 1,
};
const options = {
method: "POST",
headers: {
Accept: "application/json",
Authorization: "Bearer 999|xxxxxxxxxxxxxx",
"Content-Type": "application/json",
},
body: JSON.stringify(body),
};
fetch("https://api.yever.com.br/api/v1/coupon/PROMO10/update", options)
.then((response) => response.json())
.then((response) => console.log(response));
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request(
'POST',
'https://api.yever.com.br/api/v1/coupon/PROMO10/update',
[
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer 999|xxxxxxxxxxxxxx',
'Content-Type' => "application/json",
],
'json' => [
"name" => "Exemplo de cupom",
"discount_value" => 100.00,
"start_at" => "2025-01-01 15:45:50",
"message" => "Mensagem de teste",
"applies_automatic" => false,
"first_purchase" => true,
"single_use_per_user" => 0,
"free_shipment" => 1
],
],
);
$data = $response->getBody()->getContents();
OkHttpClient client = new OkHttpClient();
String jsonBody = "{"
+ "\"name\": \"Exemplo de cupom\","
+ "\"discount_value\": 100.15,"
+ "\"start_at\": \"2025-01-01 15:45:50\","
+ "\"message\": \"Mensagem de teste\","
+ "\"applies_automatic\": false,"
+ "\"first_purchase\": true,"
+ "\"single_use_per_user\": 0,"
+ "\"free_shipment\": 1"
+ "}";
MediaType JSON = MediaType.parse("application/json; charset=utf-8");
RequestBody body = RequestBody.create(jsonBody, JSON);
Request request = new Request.Builder()
.url("https://api.yever.com.br/api/v1/coupon/PROMO10/update")
.post(body)
.addHeader("Accept", "application/json")
.addHeader("Authorization", "Bearer 999|xxxxxxxxxxxxxx")
.addHeader("Content-Type", "application/json")
.build();
Response response = client.newCall(request).execute();
A resposta da requisição acima será um json no seguinte formato
{
"id": "bb41d681-aac4-4413-8492-94225fa1368a"
}
| Campo | Obrigatório | Tipo | Exemplo | Description |
|---|---|---|---|---|
| name | Não | string | CAMPANHA ABC | Apenas para controle interno na plataforma |
| discount_value | Não | float | 250.00 | Obrigatório se não tiver discount_percentage |
| discount_percentage | Não | float | 15.00 | Obrigatório se não tiver discount_value |
| discount_maximum_value | Não | float | 250.00 | Valor máximo do desconto |
| price_minimum | Não | float | 100.00 | Valor mínimo dos produtos no carrinho para aplicar o desconto |
| price_maximum | Não | float | 500.00 | Valor máximo dos produtos no carrinho para aplicar o desconto |
| quantity_minimum | Não | integer | 3 | Quantidade mínima de produtos no carrinho para aplicar o desconto |
| quantity_total | Não | integer | 1000 | Quantidade de cupons disponíveis |
| start_at | Não | string | 2025-12-01 23:59:59 | Data inicial para utilização do cupom |
| expiration_at | Não | string | 2025-12-31 23:59:59 | Data final para utilização do cupom |
| message | Sim | string | Cupom aplicado com sucesso | Mensagems de sucesso ao aplicar o cupom |
| applies_automatic | Sim | boolean | false | Apenas um cupom na loja pode ter essa flag ativa |
| first_purchase | Sim | boolean | true | Todos os campos boolean aceitam true ou 1, false ou 0 |
| single_use_per_user | Sim | boolean | 0 | |
| free_shipment | Sim | boolean | 1 |
* É obrigatório informar discount_value ou discount_percentage — ao menos um dos dois deve ser preenchido.
O path parameter {code} é o código do cupom a ser atualizado. O campo code não pode ser alterado. Retorna 404 se o cupom não for encontrado.
Remover cupom
DELETE: https://api.yever.com.br/api/v1/coupon/{code}
curl -X DELETE 'https://api.yever.com.br/api/v1/coupon/PROMO10' \
--header 'Authorization: Bearer 999|xxxxxxxxxxxxxx'
const options = {
method: "DELETE",
headers: {
Accept: "application/json",
Authorization: "Bearer 999|xxxxxxxxxxxxxx",
},
};
fetch("https://api.yever.com.br/api/v1/coupon/PROMO10", options).then(
(response) => console.log(response.status),
);
<?php
$client = new \GuzzleHttp\Client();
$response = $client->request(
'DELETE',
'https://api.yever.com.br/api/v1/coupon/PROMO10',
[
'headers' => [
'Accept' => 'application/json',
'Authorization' => 'Bearer 999|xxxxxxxxxxxxxx',
],
],
);
OkHttpClient client = new OkHttpClient();
Request request = new Request.Builder()
.url("https://api.yever.com.br/api/v1/coupon/PROMO10")
.delete()
.addHeader("Accept", "application/json")
.addHeader("Authorization", "Bearer 999|xxxxxxxxxxxxxx")
.build();
Response response = client.newCall(request).execute();
O path parameter {code} é o código do cupom a ser removido. Sem body. Retorna 204 sem conteúdo em caso de sucesso, ou 404 se o cupom não for encontrado.
Exemplos respostas
Se os filtros não retornarem nenhum item, a resposta será o seguinte json.
{
"carts": [],
"paginate": {
"current": 1,
"last": 1,
"total": 0,
"per_page": 100
}
}
Exemplo de filtro de data incorreto: https://api.yever.com.br/api/v1/order/list?created_at_inicial=2022-11-02&created_at_final=2022-10-01
{
"errors": {
"created_at_final": [
"O campo created at final deve conter uma data superior ou igual a created at inicial."
]
}
}
Exemplo de filtro de status incorreto: https://api.yever.com.br/api/v1/order/list?status=teste
{
"errors": {
"status": ["The selected status is invalid."]
}
}
Exemplo de registro não encontrado (400)
{
"message": "Registro não encontrado"
}
Exemplo de erro de validação na inserção dos campos (422)
{
"errors": {
"xxxxx": ["O campo xxxxx é obrigatório."],
"yyyyy": ["O campo yyyyy é obrigatório."]
}
}
Exemplo de limite de requisições atingido (429) (rate limit)
{
"message": "Você realizou muitas operações com seu e-mail. Por favor, tente novamente mais tarde."
}
Essa seção apresenta alguns exemplos de respostas para facilitar o entendimento da documentação.
Webhook
Toda vez que houver um evento (criação ou atualização de um pedido/Carrinho Abandonado), será disparado um POST para a URL cadastrada. Em todas as requisições será enviado no corpo da requisição o parâmetro token para validar se foi disparado pela Yever. O token é informado na criação do webhook no sistema da Yever. O corpo da requisição será um json e nos Headeres da requisição será informado o Content-Type: application/json.
Pedidos
{
"token": "xxxxxxxxxxxxx", // [a-zA-Z0-9]{64}
"reference": "1234567890", // [0-9]{10}
"cart_reference": "41413750-c68f-46f0-ae42-a8f3ad9e4859", // 36 char, pode ser nulo
"customer": {
"name": "Nome do cliente",
"email": "email@email.com",
"phone": "+5511999991111", // sempre 14 dígitos, +55 (código do brasil), 2 números do ddd e 9 do celular
"type": "F", // F -> Pessoa Física, J -> Pessoa Jurídica
"document": "92220244008", // \d{11}(\d{3})? - 11 ou 14 números
"birthday": "1990-01-15" // YYYY-MM-DD, pode ser nulo
},
"status": "paid", // pending_payment, paid, refunded, charged_back, canceled
"products": [
// produtos que de fato foram comprados
{
"product_id": 5732411797552, // id no ERP
"product_title": "Exemplo de produto",
"variant_id": 53012421484761,
"variant_title": "Variante abc",
"quantity": 3,
"price": 33.15,
"price_cost": 20.0,
"image_url": "https://images.yever.com.br/product/exemplodeimagem-1669936110.jpg",
"is_order_bump": 0
}
],
"shipping_address": {
"name": "Nome de quem vai receber",
"phone": "+5511999991111", // sempre 14 dígitos, +55 (código do brasil), 2 números do ddd e 9 do celular
"address1": "logradouro, numero",
"address2": "Bairro",
"city": "Cidade",
"province_code": "MG",
"country": "Brazil",
"country_code": "BR",
"zip": "11111111" // sempre 8 dígitos
},
"tracking": {
"code": "código de rastreio", // qualquer formato, pode ser de alguma transportadora da china, correios, etc. Ex: NL501111803BR
"courier": "transportadora" // nome da transportadora. Ex: Correios
},
"coupon_code": null, // código do cupom se tiver
"currency": "BRL",
"price_initial": 178.86, // valor inicial do pedido -> price_subtotal + price_shipment
"price_subtotal": 168.4, // valor dos produtos
"price_shipment": 10.46, // valor do frete
"price_coupon_discount": 5.05, // desconto do cupom
"price_shipment_discount": 10.46, // desconto do frete
"price_offer_discount": 0, // desconto da oferta
"price_bxgy_discount": 0, // desconto do compre x leve y
"price_payment_discount": 8.17, // desconto por forma de pagamento
"price_total": 155.18, // valor final do pedido -> price_subtotal + price_shipment - price_coupon_discount - price_shipment_discount - price_offer_discount - price_bxgy_discount - price_payment_discount
"price_client_final": 155.18, // valor da venda com juros de parcelamento - recebimento no fluxo ou só checkout
"price_coupon": 0.0, // deprecated, do not use
"price_discount": 0.0, // deprecated, do not use
"payment_method": "credit_card", // pix, billet, credit_card
"billet_code": null, // linha digitável do boleto
"billet_url": null, // url para acessar o boleto
"pix_code": null, // pix copia e cola
"pix_url": null, // url para imagem do pix
"checkout_url": "https://seguro.client.com.br/checkout/products?product_id[0]=1&quantity[0]=1", // url para refazer a compra se necessário
"payment_url": "https://seguro.client.com.br/checkout/pix/1234567890", // url para fazer o pagamento -> Apenas pix e boleto e os números são o reference
"is_upsell": 0,
"installments": 12, // sempre será 1 para pix e boleto
"created_at": "2022-12-09 05:46:59",
"updated_at": "2022-12-09 05:47:01",
"utms": {
"source": "face",
"campaign": "promocao_blackfriday",
"medium": null,
"content": null,
"term": null
},
"price_client": {
"client": 102.89, // valor recebido pelo cliente
"yever_base": 6.56, // taxa da yever
"installment_antecipation": 0 // valor pago por assumir parcelas sem juros
}
}
Carrinho Abandonado
{
"reference": "41413750-c68f-46f0-ae42-a8f3ad9e4859", // 36 char, nesse formato
"customer": {
"name": "Nome do cliente",
"email": "email@email.com",
"phone": "+5511999991111", // sempre 14 dígitos, +55 (código do brasil), 2 números do ddd e 9 do celular
"birthday": "1990-01-15" // YYYY-MM-DD, pode ser nulo
},
"last_step": "payment", // client, delivery, shipment, payment, card_refused, order. Até qual step o cliente chegou. `order` significa que ele tentou gerar pedido
"order_status": "canceled", // null se não tiver sido gerado um pedido, pending_payment, paid, refunded, charged_back, canceled
"products": [
// produtos iniciais quando o cliente entrou na tela
{
"product_title": "Exemplo de produto",
"variant_title": "Variante abc",
"quantity": 2,
"price": 47.91, // preço unitário
"image_url": "https://images.yever.com.br/product/exemplodeimagem-1669936110.jpg"
}
],
"currency": "BRL",
"price_total": 95.82,
"checkout_url": "https://seguro.yever.com.br/checkout/products?product_id[0]=1&quantity[0]=2",
"created_at": "2022-12-02 06:59:17",
"updated_at": "2022-12-02 07:00:27",
"abandoned_at": "2022-12-02 07:05:00",
"utms": {
"source": "face",
"campaign": "promocao_blackfriday",
"medium": null,
"content": null,
"term": null
}
}
Errors
A API utiliza os códigos de erro HTTP. Além do erro, a grande maioria vai retornar alguma mensagem para explicar o motivo do erro.
| Código | Significado |
|---|---|
| 400 | Bad request -> Requisição inválida. |
| 401 | Unauthorized -> O Bearer Token fornecido no header Authorization é inválido. Confira a seção Autenticação. |
| 403 | Forbidden -> O token não possui permissão para executar esta ação. |
| 404 | Not found -> Não encontrado. |
| 405 | Method not allowed -> Você tentou acessar a rota com o método errado. |
| 422 | Unprocessable entity -> Erro de validação em algum parâmetro. |
| 429 | Too many requests -> Limit de requisições atingido. |
| 5xx | Se qualquer erro 5xx acontecer a Yever será notificada e o time irá realizar as correções necessárias. |