Documentação da API Likestore API de Entrada: O que a Likestore disponibiliza para seus clientes Pré-condições: Chave de Segurança criada no Likestore-Admin Todo request deve anexar dois QUERY PARAMETERS: idloja: o ID da Loja que sofrerá as modificações chave: a Chave de Segurança correspondente àquela loja Um request sem algum dos parâmetros terá como resposta um Erro 400 - BAD REQUEST Um request com par idloja/chave incorreto terá como resposta um Erro 403 - FORBIDDEN Os Requests que recebem entrada devem configurar seu header com Content-Type como application/xml ou application/json (de acordo com o tipo dos dados enviados). Os Requests que têm saída devem configurar seu header com Accept como application/xml ou application/json (de acordo com o tipo que se deseja receber). Cada ResultadoOperacao é composto da Chave indicando a Categoria / Produto / Pedido a que se refere, do Status (Sucesso ou Falha), e do Motivo que explica o porquê da Falha. URL_Raiz: likestore.com.br/api/likestore (produção) letonia.moip.com.br/api/likestore (homologação)
1. Criar Categorias URL: {URL_Raiz}/categorias Método: POST Quando: Na criação da Likestore ou mediante qualquer alteração nas categorias do Cliente. Entrada: Lista de Categoria Saída: Lista de ResultadoOperacao Exemplo de Request: likestore.com.br/api/likestore/categorias?idloja=<id>&chave=<chave> Body: <nome>categoria 1</nome> <nome>categoria 2</nome> Exemplo de Resposta: <resultadooperacao> <chave>categoria 1</chave> <status>falha</status> <motivo>a categoria já existe nesta loja.</motivo> </resultadooperacao> <resultadooperacao> <chave>categoria 2</chave> <status>sucesso</status> </resultadooperacao>
2. Excluir Categorias URL: {URL_Raiz}/categorias Método: DELETE Quando: Mediante qualquer alteração nas categorias do Cliente. Entrada: Lista de Categoria Saída: Lista de ResultadoOperacao Exemplo de Request: likestore.com.br/api/likestore/categorias?idloja=<id>&chave=<chave> Body: <nome>categoria 1</nome> <nome>categoria 2</nome> Exemplo de Resposta: <resultadooperacao> <chave>categoria 1</chave> <status>falha</status> <motivo>a categoria não existe nesta loja.</motivo> </resultadooperacao> <resultadooperacao> <chave>categoria 2</chave> <status>sucesso</status> </resultadooperacao>
3. Listar Categorias URL: {URL_Raiz}/categorias Método: GET Entrada: - Saída: Lista de Categoria Exemplo de Request: likestore.com.br/api/likestore/categorias?idloja=<id>&chave=<chave> Exemplo de Resposta: <nome>categoria 1</nome> <nome>categoria 2</nome>
4. Atualizar Produtos URL: {URL_Raiz}/produtos Método: POST Quando: Na criação da Likestore ou mediante qualquer alteração nos produtos do Cliente. Entrada: Lista de Produto Saída: Lista de ResultadoOperacao Exemplo de Request: likestore.com.br/api/likestore/produtos?idloja=<id>&chave=<chave> Body: <produto> <SKU>1234</SKU> <nome>meu Produto</nome> <descricao>produto que é meu</descricao> <nome>miscelânea</nome> <temfrete>true</temfrete> <peso>1.234</peso> <destaque>true</destaque> <opcao> <nome>opcao um</nome> <valor>10.00</valor> <estoque>15</estoque> <principal>true</principal> </opcao> <opcao> <nome>opcao dois</nome> <valor>20.00</valor> <estoque>20</estoque> <principal>false</principal> </opcao> <atualizaimagens>false</atualizaimagens> </produto> Exemplo de Resposta: <resultadooperacao> <chave>1234</chave> <status>sucesso</status> </resultadooperacao>
5. Excluir Produtos URL: {URL_Raiz}/produtos Método: DELETE Quando: Mediante qualquer alteração nos produtos do Cliente. Entrada: Lista de Produto (somente SKUs são necessários) Saída: Lista de ResultadoOperacao Exemplo de Request: likestore.com.br/api/likestore/produtos?idloja=<id>&chave=<chave> Body: <produto> <SKU>1234</SKU> </produto> Exemplo de Resposta: <resultadooperacao> <chave>1234</chave> <status>sucesso</status> </resultadooperacao>
6. Listar Produtos URL: {URL_Raiz}/produtos Método: GET Entrada: - Saída: Lista de Produto Exemplo de Request: likestore.com.br/api/likestore/produtos?idloja=<id>&chave=<chave> Exemplo de Resposta: <produto> <SKU>1234</SKU> <nome>meu Produto</nome> <descricao>produto que é meu</descricao> <nome>miscelânea</nome> <temfrete>true</temfrete> <peso>1.234</peso> <destaque>true</destaque> <opcao> <nome>opcao um</nome> <valor>10.00</valor> <estoque>15</estoque> <principal>true</principal> </opcao> <opcao> <nome>opcao dois</nome> <valor>20.00</valor> <estoque>20</estoque> <principal>false</principal> </opcao> </produto>
7. Listar Pedidos URL: {URL_Raiz}/pedidos Método: GET Entrada: - Saída: Lista de Pedido Exemplo de Request: likestore.com.br/api/likestore/pedidos?idloja=<id>&chave=<chave> Exemplo de Resposta: <pedido> <ID>123456</ID> <idusuario>100000655399757</idusuario> <frete>10.00</frete> <data>07/08/2011 10:01</data> <tipopagamento>boletobancario</tipopagamento> <metodoentrega>sedex</metodoentrega> <valortotal>30.00</valortotal> <status>pago</status> <dadoscomprador> <nome>fulano Detal</nome> <email>fulano@email.com.br</email> <documento>379.490.315-30</documento> <telefone>111234-5678</telefone> <CEP>01234-010</CEP> <logradouro>rua dos Loucos</logradouro> <complemento>ap. 0</complemento> <numero>0</numero> <bairro>vila Insana</bairro> <cidade>birutópolis</cidade> <estado>piradélfia</estado> </dadoscomprador> <produtocarrinho> <SKU>1234</SKU> <nome>meu Produto</status> <opcaocarrinho> <nome>opcao 1</status> <valor>10.00</valor> <quantidade>2</quantidade> </opcaocarrinho> </produtocarrinho> </pedido>
8. Criar Pedido URL: {URL_Raiz}/pedidos Método: POST Entrada: Pedido Saída: ResultadoOperacao Exemplo de Request: likestore.com.br/api/likestore/pedidos?idloja=<id>&chave=<chave> <pedido> <idusuario>100000655399757</idusuario> <produtocarrinho> <SKU>1234</SKU> <nome>meu Produto</status> <opcaocarrinho> <nome>opcao 1</status> <quantidade>2</quantidade> </opcaocarrinho> </produtocarrinho> </pedido> Exemplo de Resposta: <resultadooperacao> <chave>80123</chave> <status>sucesso</status> </resultadooperacao> (ID do novo pedido criado)
API de Saída: Notificações da Likestore para seus clientes Pré-condição: URL_Raiz cadastrada no Likestore-Admin 1. Atualização do Carrinho (Likestore Cliente) URL: {URL_Raiz}/carrinho/{idPedido} Método: POST Quando: Mediante modificação de quantidade de um produto no carrinho pelo Comprador. Entrada: ProdutoCarrinho Saída: 200 OK 2. Limpar Carrinho (Likestore Cliente) URL: {URL_Raiz}/carrinho/{idPedido} Método: DELETE Quando: Mediante clique em limpar carrinho pelo Comprador Entrada: - Saída: 200 OK 3. Remoção do Carrinho (Likestore Cliente) URL: {URL_Raiz}/carrinho/{idPedido}/{skuProduto} Método: DELETE Quando: Mediante remoção de item no carrinho pelo Comprador Entrada: - Saída: 200 OK Um produto sem SKU não disparará esta notificação. 4. Finalização do Pedido (Likestore Cliente) URL: {URL_Raiz}/pedido/{idPedido} Método: POST Quando: Mediante finalização do pedido pelo Comprador Entrada: Pedido Saída: 200 OK O pedido é finalizado quando o comprador escolhe e submete o meio de pagamento (ou quando chega no passo de Confirmação do aplicativo). Caso tenha escolhido pagar via débito bancário ou boleto, o processo pode ser interrompido e o pagamento não ser efetuado. É na Alteração de Status de Pagamento que chegarão atualizações no status de pagamento do pedido (representado no campo Status). 5. Alteração de Status de Pagamento (Likestore Cliente) URL: {URL_Raiz}/nasp/{idPedido} Método: POST Quando: Mediante alguma alteração de status no pagamento de um pedido Entrada: Pedido Saída: 200 OK
Toda vez que o MoIP notifica sobre alguma alteração de status de pagamento de um pedido, essa notificação será repassada para o cliente, através do envio do Pedido com o campo Status modificado. Possíveis Status e suas interpretações: AGUARDANDO PAGAMENTO: Pagamento em processamento, não enviar o produto. PAGAMENTO EM ANALISE: Pagamento via cartão de crédito em análise pelo MoIP, não há garantias que seja concluído. Não enviar o produto. PAGAMENTO AUTORIZADO: O pagamento foi autorizado, mas ainda não está disponível na conta MoIP. Neste ponto deve-se enviar o produto, visto que em breve mudará para o status PAGO. PAGO: Pagamento já efetuado e disponível na conta MoIP. CANCELADO: Pagamento cancelado pela análise de risco do MoIP. Cancelar o pedido. PAGAMENTO REEMBOLSADO: Pagamento estornado pelo comprador.
Tipos de Dados Lista externa (raiz dos requests que recebem / enviam lista): EXEMPLO XML (lista de Categoria): <nome>categoria 1</nome> <nome>categoria 2</nome> EXEMPLO JSON (Array): [{"categoria":{"nome":"categoria 1"}},{"categoria":{"nome":"Categoria 2"}}] Categoria: Nome: String (CHAVE) <nome>camisetas</nome> EXEMPLO JSON: {"nome":"camisetas"} Produto: SKU: String (CHAVE) Nome: String Descricao: String Categoria: Categoria Lista de Opcao (1+) TemFrete: Booleano (verdadeiro se não informado) EstoqueControlado: Booleano (verdadeiro se não informado) Peso: Decimal (em kg, opcional se não tem frete) Destaque: Booleano Lista de Imagem (0+) AtualizaImagens: Booleano (falso se não informado) <produto> <SKU>1234</SKU> <nome>meu Produto</nome> <descricao>produto que é meu</descricao> <nome>miscelânea</nome> <temfrete>true</temfrete>
<peso>1.234</peso> <destaque>true</destaque> <opcao> <nome>opcao um</nome> <valor>10.00</valor> <estoque>15</estoque> <principal>true</principal> </opcao> <opcao> <nome>opcao dois</nome> <valor>20.00</valor> <estoque>20</estoque> <principal>false</principal> </opcao> <atualizaimagens>false</atualizaimagens> </produto> EXEMPLO JSON: { "categoria":{"nome":"miscelânea"}, "descricao":"produto que é meu", "destaque":"true", "estoquecontrolado":"true", "nome":"meu Produto", "opcao":{ "estoque":"15", "nome":"opcao um", "principal":"true", "valor":"10.00" }, "peso":"1.234", "SKU":"1234", "temfrete":"true" } Opcao: Nome: String (Somente se houver mais de uma) Valor: Decimal Estoque: Inteiro (Somente se o estoque é controlado) Principal: Booleano (Somente uma pode ser) <opcao> <nome>opcao um</nome> <valor>10.00</valor> <estoque>15</estoque> <principal>true</principal> </opcao>
EXEMPLO JSON: { "estoque":"15", "nome":"opcao um", "principal":"true", "valor":"10.00" } Imagem: URL: String (referência onde a imagem se encontra; deve terminar em.png,.jp[e]g ou.gif) Principal: Booleano (Somente uma pode ser) <imagem> <URL>http://meu.servidor.com.br/imagens/imagem.png</URL> <principal>true</principal> </imagem> EXEMPLO JSON: { "principal":"false", "URL":"http://meu.servidor.com/imagens/imagem1.png" } ResultadoOperacao: Chave: String (CHAVE) Status: String ( Sucesso ou Falha ) Motivo: String (Mediante Status Falha ) <resultadooperacao> <chave>camisetas</chave> <status>falha</status> <motivo>a categoria já existe nesta loja.</motivo> </resultadooperacao> ProdutoCarrinho: SKU: String (CHAVE) Nome: String Opcao: OpcaoCarrinho <produtocarrinho> <SKU>1234</SKU> <nome>meu Produto</status> <opcaocarrinho> <nome>opcao 1</status> <valor>10.00</valor> <quantidade>2</quantidade> </opcaocarrinho>
</produtocarrinho> OpcaoCarrinho: Nome: String Valor: Decimal Quantidade: Inteiro <opcaocarrinho> <nome>opcao 1</status> <valor>10.00</valor> <quantidade>2</quantidade> </opcaocarrinho> Pedido: ID: Inteiro (CHAVE) idusuario: String (Facebook User ID) Lista de ProdutoCarrinho Frete: Decimal (Opcional) Data: String (formato dd/mm/yyyy HH:mm ) TipoPagamento: String MetodoEntrega: String ValorTotal: Decimal DadosComprador: DadosComprador Status: String (como listados em Alteração de Status de Pagamento ) <pedido> <ID>123456</ID> <idusuario>100000655399757</idusuario> <frete>10.00</frete> <data>07/08/2011 10:01</data> <tipopagamento>boletobancario</tipopagamento> <metodoentrega>sedex</metodoentrega> <valortotal>30.00</valortotal> <status>pago</status> <dadoscomprador> <nome>fulano Detal</nome> <email>fulano@email.com.br</email> <documento>379.490.315-30</documento> <telefone>111234-5678</telefone> <CEP>01234-010</CEP> <logradouro>rua dos Loucos</logradouro> <complemento>ap. 0</complemento> <numero>0</numero> <bairro>vila Insana</bairro> <cidade>birutópolis</cidade> <estado>piradélfia</estado>
</dadoscomprador> <produtocarrinho> <SKU>1234</SKU> <nome>meu Produto</status> <opcaocarrinho> <nome>opcao 1</status> <valor>10.00</valor> <quantidade>2</quantidade> </opcaocarrinho> </produtocarrinho> </pedido> DadosComprador: Nome: String Email: String Documento: String (CPF) Telefone: String CEP: String Logradouro: String Complemento: String (Opcional) Numero: String Bairro: String Cidade: String Estado: String <dadoscomprador> <nome>fulano Detal</nome> <email>fulano@email.com.br</email> <documento>379.490.315-30</documento> <telefone>111234-5678</telefone> <CEP>01234-010</CEP> <logradouro>rua dos Loucos</logradouro> <complemento>ap. 0</complemento> <numero>0</numero> <bairro>vila Insana</bairro> <cidade>birutópolis</cidade> <estado>piradélfia</estado> </dadoscomprador>