KIT - Atualizar Dados do Kit

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 a exclusão e posteriormente realizar um novo POST.

 

KIT - CONSULTAR KIT

Requisição para a consultar dados do kit.

1 - LISTAGEM GERAL DE KITS

Método GET

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

Código de Exemplo

<?php
    $params["access_token"] = "### Chave de Acesso ###";

    $url = "https://{api_address}/products/kits/?".http_build_query($params);

    ob_start();

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "GET");
    curl_exec($ch);

    // JSON de retorno  
    $resposta = json_decode(ob_get_contents());
    $code = curl_getinfo($ch, CURLINFO_HTTP_CODE);

    ob_end_clean();
    curl_close($ch);

    if($code == "200"){
        //Tratamento dos dados de resposta da consulta.
    }else{
        //Tratamento das mensagens de erro
    }
?>

string URLAuth = "https://{api_address}/products/kits/";

NameValueCollection queryParameters = new NameValueCollection();

queryParameters.Add("access_token", "### Chave de Acesso ###");    

List items = new List();

foreach (String name in queryParameters)
    items.Add(String.Concat(name, "=", System.Web.HttpUtility.UrlEncode(queryParameters[name])));

string argsString = String.Join("&", items.ToArray());

WebRequest request = WebRequest.Create(URLAuth + "?" + argsString);
    
request.Credentials = CredentialCache.DefaultCredentials;
    
WebResponse response = request.GetResponse();
  
Console.WriteLine(((HttpWebResponse)response).StatusDescription);
    
Stream dataStream = response.GetResponseStream();
    
StreamReader reader = new StreamReader(dataStream);

string responseData = reader.ReadToEnd();

Console.WriteLine(responseData);
reader.Close();
response.Close();

String url = "https://{api_address}/products/kits/";

Map<String, String> mapToConvert = new HashMap<>();
mapToConvert.put("access_token", "### Chave de Acesso ###");

String queryString = "";

for (Entry<String, String> entry : mapToConvert.entrySet()) {
    queryString += entry.getKey()+"="+ entry.getValue()+"&";
}

try {
    URL obj = new URL(url+"?"+queryString);
    HttpURLConnection con = (HttpURLConnection) obj.openConnection();
    
    con.setRequestMethod("GET");
    con.setRequestProperty("User-Agent", USER_AGENT);

    int responseCode = con.getResponseCode();

    BufferedReader in ;
    if (responseCode >= 200 && responseCode < 300){
        in = new BufferedReader(
            new InputStreamReader(con.getInputStream()));
    }else{
        in = new BufferedReader(
            new InputStreamReader(con.getErrorStream()));
    }
    
    String inputLine;
    StringBuilder response = new StringBuilder();

    while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
    }
    in.close();
    
    String resposta = response.toString();

} catch (Exception ex){
    // Tratamento da Exception
}

Parâmetros enviados

Campo Tipo (Tamanho) Descrição
access_token String

Chave de acesso

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

Campo Tipo Descrição
  ProductKit JSON

Dados do kit

  id String

id do kit

  product_parent_id Date

Será o id do produto principal, que irá compor o kit

  product_id Date

Será o id do produto que irá compor o kit

  quantity String

Quantidade

  price String

Valor do kit

  price_rule Date

Valor do produto

  discount_type Date

Valor do desconto em reais ou percentual

  value discount_value

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

Json de retorno

HTTP/1.1201 OK

{
    "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": []
            }
        }
    ]
}

1.1 - CONSULTAR DADOS DO KIT

Método GET

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

Parâmetros enviados

Campo Tipo (Tamanho) Descrição
access_token String

Chave de acesso

product_parent_id String

id

Json de retorno

HTTP/1.1201 OK

{
    "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": []
            }
        }
    ]
}

 

KIT - Cadastrar Kit

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

Método POST   

https://{api_address}/products/

Código de Exemplo

<??php
    $params["access_token"] = "### Chave de Acesso ###";

    $data["Product"]["is_kit"] = 1;
$data["Product"]["name"] = "Produto Kit Teste API"; $data["Product"]["description"] = "Descrição do Produto de Teste da API"; $data["Product"]["description_small"] = "Produto de Teste da API"; $data["Product"]["price"] = "3"; $data["Product"]["stock"] = "3"; $data["Product"]["category_id"] = "3"; $data["Product"]["available"] = 1; $data["Product"]["reference"] = "111"; $data["Product"]["related_categories"] = []; $data["Product"]["release_date"] = ""; $data["Product"]["picture_source_1"] = "http://bancodeimagens/imagem1.jpg"; $url = "https://{api_address}/products/kits?".http_build_query($params); ob_start(); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST"); curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); curl_setopt($ch, CURLOPT_HTTPHEADER, array( 'Content-Type: application/json', 'Content-Length: ' . strlen(json_encode($data))) ); curl_exec($ch); // JSON de retorno $resposta = json_decode(ob_get_contents()); $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); ob_end_clean(); curl_close($ch); if($code == "201"){ //Tratamento dos dados de resposta da consulta. }else{ //Tratamento das mensagens de erro } ?>

string URLAuth = "https://{api_address}/products/kits";

NameValueCollection queryParameters = new NameValueCollection();

queryParameters.Add("access_token", "### Chave de Acesso ###");

List items = new List();

foreach (String name in queryParameters)
    items.Add(String.Concat(name, "=", System.Web.HttpUtility.UrlEncode(queryParameters[name])));

string argsString = String.Join("&", items.ToArray());

string postString  = "{";
       postString += "  \"Product\": {";
       postString += "      \"is_kit\": 1,";
       postString += "      \"name\": \"Produto Teste API\",";
       postString += "      \"description\": \"Descrição do Produto de Teste da API\",";
       postString += "      \"description_small\": \"Produto de Teste da API\",";
       postString += "      \"price\": \"2\",";
       postString += "      \"stock\": \"2\",";
       postString += "      \"category_id\": \"2\",";
       postString += "      \"available\": 1,";
       postString += "      \"reference\": \"111\",";
       postString += "      \"related_categories\": [],";
       postString += "      \"release_date\": \"\",";
       postString += "      \"picture_source_1\": "http://bancodeimagens/imagem1.jpg"";
       postString += "  }";
       postString += "}";

HttpWebRequest webRequest = WebRequest.Create(URLAuth + "?" + argsString) as HttpWebRequest;
webRequest.Method = "POST";
webRequest.ContentType = "application/json";

StreamWriter requestWriter = new StreamWriter(webRequest.GetRequestStream());
requestWriter.Write(postString);
requestWriter.Close();

StreamReader responseReader = new StreamReader(webRequest.GetResponse().GetResponseStream());
string responseData = responseReader.ReadToEnd();

responseReader.Close();
webRequest.GetResponse().Close();

String url = "https://{api_address}/products/kits";
StringBuffer response = null ;
try{
    String access_token = "?access_token=### Chave de Acesso ###";
    
    URL obj = new URL(url+access_token);
    HttpsURLConnection con = (HttpsURLConnection) obj.openConnection();

    //add reuqest header
    con.setRequestMethod("POST");
    con.setRequestProperty("User-Agent", USER_AGENT);
    con.setRequestProperty("Content-Type", "application/json");
    con.setRequestProperty("Accept-Language", "en-US,en;q=0.5");

   String postString  = "{";
       postString += "  \"Product\": {";
       postString += "      \"is_kit\": 1,";
       postString += "      \"name\": \"Produto Teste API\",";
       postString += "      \"description\": \"Descrição do Produto de Teste da API\",";
       postString += "      \"description_small\": \"Produto de Teste da API\",";
       postString += "      \"price\": \"2\",";
       postString += "      \"stock\": \"2\",";
       postString += "      \"category_id\": \"2\",";
       postString += "      \"available\": 1,";
       postString += "      \"reference\": \"111\",";
       postString += "      \"related_categories\": [],";
       postString += "      \"release_date\": \"\",";
       postString += "      \"picture_source_1\": "http://bancodeimagens/imagem1.jpg"";
       postString += "  }";
       postString += "}";
           
    // Send post request
    con.setDoOutput(true);
    DataOutputStream wr = new DataOutputStream(con.getOutputStream());
    wr.writeBytes(postString);
    wr.flush();
    wr.close();

    int responseCode = con.getResponseCode();

    BufferedReader in ;
    if (responseCode >= 200 && responseCode < 300){
        in = new BufferedReader(
            new InputStreamReader(con.getInputStream()));
    }else{
        in = new BufferedReader(
            new InputStreamReader(con.getErrorStream()));
    }
    
    String inputLine;
    response = new StringBuffer();

    while ((inputLine = in.readLine()) != null) {
            response.append(inputLine);
    }
    in.close();

} catch (Exception ex){
    // Tratamento da Exception
}
String resposta = response.toString();

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 

Campo Tipo (Tamanho) 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)

Segue exemplo de como ficará a url:

https://{api_address}/products?access_token=[ACCESS_TOKEN]

OBS: price precisa ser passado como 0 mesmo, pois o preço do kit é um cálculo dos produtos que compõe o kit

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"

	}
 
}
    

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

Campo Tipo Descrição
message String

Mensagem de retorno

id Number

Código do produto

code Number

Código do retorno (201)

Json de retorno 

HTTP/1.1201 OK

{
    "message": "Created",
    "id": "7035",
    "code": 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 

Campo Tipo (Tamanho) Descrição
access_token String

Chave de acesso

product_parent_id String

Será o id do produto principal, que irá compor o kit, inclusive o mesmo deverá ter sido cadastrado com is_kit = 1

product_id String

Será o id do produto 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

Segue exemplo de como ficará a url:

https://{api_address}/web_api/products/kits/?access_token=[ACCESS_TOKEN]

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ó.

Estrutura de Json 


    
[  
   {  
      "product_parent_id":"799",
      "product_id":"6",
      "quantity":"1",
      "price_rule":"1",
      "discount_type":"$",
      "discount_value":1.95
   },
   {  
      "product_parent_id":"799",
      "product_id":"2",
      "quantity":"1",
      "price_rule":"2",
      "discount_type":"%",
      "discount_value":3
   },
   {  
      "product_parent_id":"799",
      "product_id":"87",
      "quantity":"1",
      "price_rule":"1",
      "discount_type":"%",
      "discount_value":3
   }
]

    

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

Campo Tipo Descrição
message String

Mensagem de retorno

code Number

Código do retorno (201)

 

Json de retorno

HTTP/1.1201 OK

{
    "message": "Created",
    "code": 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

Tabelas Auxiliares

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
Taynara Sene 
Tem mais dúvidas? Envie uma solicitação

Comentários

    Artigos nessa seção

    Powered by Zendesk