{"info":{"_postman_id":"435d0f91-32f9-4863-a163-b7fe41c99477","name":"Letsfair-App-Btc-Banco","description":"## Introdução\nEste é um conjunto de serviços simulados (mock) para possibilitar um ponto de partida para trabalhar na integração entre o Bitcoin Banco e o aplicativo de PoS (Point of Sale) em desenvolvimento pela Letsfair.\n\nCada uma das requisições representa um cenário real de integração, com parâmetros e respostas simuladas, para facilitar a independência dos times de trabalho. \n\nPortanto esses mocks servem como padrões a ser adotados para os métodos/serviços web.\n\n----\n\n## Como testar os exemplos (Ambiente)\nPara \"rodar\" exemplos da coleção do postman foi desenvolvido um código de servidor, fornecido juntamente com essa documentação em Node.JS que deve ser instalado localmente na porta 8080, com o comandos:\n\n\tnpm install\n\tnpm start\n\nA versão do node utilizada para a implementação desses exemplos foi a **v8.9.4**.\n\n----\n\n## Resposta **padrão** dos serviços\nToda e qualquer requisição tem uma resposta padrão chamada **result**: \n\n\t{\n\t    \"result\": {\n\t        \"code\": 5,\n\t        \"type\": \"OPERATION_PERFORMED\",\n\t        \"ttl\": 500,\n\t        \"payload\": {\n\t            \"token\": \"123123qweqwe123123\"\n\t        }\n\t    }\n\t}\n\t\nAtributos do objeto **result**\n\n* **code** - Código de retorno para cada situação de cada operação. Não confundir com os códigos do protocolo HTTP, 200, 500, 404 etc. O code é útil para a tratativa de cenários para cada uma das respostas, servindo sempre de um identificador de situação. Por exemplo, se retornar **code** = 101 em um serviço específico, pode significar a exibição de uma mensagem ou um tratamento específico naquela situação em que a requisição foi realizada. No entanto, os valores 1, 2 ou 3, são **reservados** para os \"type\" CRITICAL, INVALID_INPUT_MISSING, INVALID_INPUT_CONTENT.\n\n* **type** - Neste atributo deve ser retornado apenas um dos seguintes tipos: **OPERATION_PERFORMED**, **CRITICAL**, **INVALID_INPUT_MISSING** ou **INVALID_INPUT_CONTENT**. Abaixo são exemplificados esses tipos.\n\n* **ttl** - Atributo que retorna o tempo de processamento de uma requisição, ttl = entrada da requisição + processamento + devolução de resposta. O objetivo deste atributo é apenas servir como medida para que o aplicativo possa detectar lentidões e estabelecer um padrão de qualidade. O tempo é um inteiro representado em milissegundos. \n\n* **payload** - No payload deve constar o objeto útil para cada caso, encapsulado e pertinente ao contexto.\n\n## Exemplos\n\n## CRITICAL \n**Definição:** A resposta padrão do tipo **CRITICAL** significa problemas críticos que o cliente não consegue resolver. \n\n**Quando usar:** Quando a infraestrutura tiver algum tipo de problema que o cliente não consiga solucionar, devolver essa resposta:\n\n\t{\n\t    \"result\": {\n\t        \"code\": 1,\n\t        \"type\": \"CRITICAL\",\n\t        \"ttl\": 500\n\t    }\n\t}\n\t\n----\n\t\n## INVALID_INPUT_MISSING \n**Definição:** A resposta padrão do tipo **INVALID_INPUT_MISSING** significa que faltaram atributos obrigatórios necessários na requisição e eram esperados.\n\n**Quando usar:** Na requisição, quando faltar algum dos atributos no header ou no body retornar quais são conforme o exemplo. Sempre utilizar o code **2**.\n\n\t{\n\t    \"result\": {\n\t        \"code\": 2,\n\t        \"type\": \"INVALID_INPUT_MISSING\",\n\t        \"ttl\": 500,\n\t        \"payload\": {\n\t            \"missingHeaderFields\": [\n\t                \"apiKey\"\n\t            ],\n\t            \"missingBodyFields\": [\n\t                \"field1\",\n\t                \"field2\"\n\t            ]\n\t        }\n\t    }\n\t}\n\t\n----\n\n## INVALID_INPUT_CONTENT\n**Definição:** A resposta padrão do tipo **INVALID_INPUT_CONTENT** significa que há algum problema com o conteúdo de um ou mais campos.\n\n**Quando usar:** Ao processar a requisição, pode ser que o conteúdo de um ou mais atributos está com problema de parser, formatação ou faltando partes (problemas no conteúdo).\n\n\t{\n\t    \"result\": {\n\t        \"code\": 3,\n\t        \"type\": \"INVALID_INPUT_CONTENT\",\n\t        \"ttl\": 500,\n\t        \"payload\": {\n\t            \"invalidHeaderContent\": [\n\t                \"date\"\n\t            ],\n\t            \"invalidBodyContent\": [\n\t                \"receipt\"\n\t            ]\n\t        }\n\t    }\n\t}\n\t\n## OPERATION_PERFORMED\n**Definição:** A resposta padrão do tipo **OPERATION_PERFORMED** significa que a requisição foi processada e houve uma resposta (não necessariamente sucesso ou erro de negócio). O que vai definir sucesso ou erro de negócio é o conteúdo variável do atributo **payload** e o valor do atributo **code**.\n\n**Quando usar:** Na maioria dos casos será o tipo **OPERATION_PERFORMED**, com o atributo **payload** preenchido com um conteúdo específico para cada uma das situações previstas em integração.\n\n\t{\n\t    \"result\": {\n\t        \"code\": 5,\n\t        \"type\": \"OPERATION_PERFORMED\",\n\t        \"ttl\": 500,\n\t        \"payload\": {\n\t            //specialized content\n\t        }\n\t    }\n\t}","schema":"https://schema.getpostman.com/json/collection/v2.0.0/collection.json"},"item":[{"name":"Account","item":[{"name":"Authenticate - Successfully","id":"01920aa8-a557-4ee4-ad9b-61f1d0b4a098","request":{"method":"POST","header":[{"key":"res","value":"1"},{"key":"data","value":"{\"email\": \"mateus@letsfair.org\", \"passwd\": \"123123\"}"}],"body":{"mode":"raw","raw":""},"url":"http://localhost:8080/PosResources","description":"## Descrição\n\nAutenticar usuários do aplicativo PoS. \n\n----\n\n## Parâmetros (Header)\n>***res (Integer)***\n>\n>Enviar obrigatoriamente o valor **1** para o método de autenticação\n\n>***data (String Json)***\n>\n>Exemplo: {\"email\": \"mateus@letsfair.org\", \"passwd\": \"123123\"}\n\n## Parâmetros (Body)\n>Nenhum parâmetro deve ser enviado no body da requisição.\n\n----\n\n## Resultado Esperado (Se autenticou com sucesso, no payload deve ser devolvido o token de comunicação)\n\t\n\t{\n\t    \"result\": {\n\t        \"code\": 4,\n\t        \"type\": \"OPERATION_PERFORMED\",\n\t        \"ttl\": 500,\n\t        \"payload\": {\n\t            \"token\": \"1238123-8djduenYSADYndyabXdAWRHdu\"\n\t        }\n\t    }\n\t}\n\t\n----\nOs parâmetros abaixo são da própria requisição de exemplo do Postman."},"response":[],"_postman_id":"01920aa8-a557-4ee4-ad9b-61f1d0b4a098"},{"name":"Authenticate - Fail","id":"8ced783e-2e8f-427d-935b-3caf3e57e57d","request":{"method":"POST","header":[{"key":"res","value":"1"},{"key":"data","value":"{\"email\": \"joao@uol.com.br\", \"passwd\": \"123123\"}"}],"body":{"mode":"raw","raw":""},"url":"http://localhost:8080/PosResources","description":"## Descrição\n\nAutenticar usuários do aplicativo PoS. Neste cenário de exemplo (falha de autenticação), \ndevolver sempre o token null no atributo payload.\n\n----\n\n## Parâmetros (Header)\n>***res (String)***\n>\n>Enviar 1 (para o método de autenticação)\n>\n>***data (String Json) ***\n>\n>Exemplo de falha 1 (dados inválidos): {\"email\": \"email@domain.com\", \"passwd\": \"secret\"} \n>\n>Exemplo de falha 2 (conteúdo do json inválido): {\"email\": \"email@domain.com\"} \n\n## Parâmetros (Body)\n>Nenhum parâmetro deve ser enviado no body da requisição.\n\n----\n\n## Resultado Esperado (Se falhar a autenticação, enviar sempre o token nulo)\n\t\n\t{\n\t    \"result\": {\n\t        \"code\": 5,\n\t        \"type\": \"OPERATION_PERFORMED\",\n\t        \"ttl\": 500,\n\t        \"payload\": {\n\t            \"token\": null\n\t        }\n\t    }\n\t}\n\t\n----\nOs parâmetros abaixo são da própria requisição de exemplo do Postman."},"response":[],"_postman_id":"8ced783e-2e8f-427d-935b-3caf3e57e57d"}],"id":"629caccd-f72d-4135-b442-7b7783d9e4fb","description":"Serviços relacionados a autenticação de usuários (contas).","event":[{"listen":"prerequest","script":{"id":"9f5c1f86-d81c-4a08-9ac2-7b07579f9f9d","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"4a7ebdb7-579c-4816-915b-20bbda553382","type":"text/javascript","exec":[""]}}],"_postman_id":"629caccd-f72d-4135-b442-7b7783d9e4fb"},{"name":"Transactions","item":[{"name":"New Payment Request - Successfully","id":"caf7c823-fc5a-4e77-81be-73c2348c26f0","request":{"method":"POST","header":[{"key":"res","value":"2"},{"key":"data","value":"{\"token\": \"abcToken\", \"fiatValue\": 1.21}"}],"body":{"mode":"raw","raw":""},"url":"http://localhost:8080/PosResources","description":"## Descrição\n\nServiço que provisiona uma carteira para receber um valor específico de pagamento para aquele usuário. \nNeste exemplo de requisição, o usuário deseja receber o valor R$1.21 a ser convertido em Bitcoins.\n\n----\n\n## Parâmetros (Header)\n\n>***res (Integer)***\n>\n>Enviar obrigatoriamente o valor **2**.\n>\n>***data (String Json)***\n>\n>Deve conter o token e também o valor em reais a ser convertido em Bitcoins (BTC) na cotação do momento, provida pelo servidor. \n>\n>Exemplo: {\"token\": \"abcToken\", \"fiatValue\": 1.21}\n\n\n## Parâmetros (Body)\n>Nenhum parâmetro deve ser enviado no body da requisição.\n\n----\n\n## Resultado Esperado (fiatValue para conferência e URI Bitcoin)\n\n\t{\n\t    \"result\": {\n\t        \"code\": 6,\n\t        \"type\": \"OPERATION_PERFORMED\",\n\t        \"ttl\": 500,\n\t        \"payload\": {\n\t            \"fiatValue\": 1.21,\n\t            \"uri\": \"bitcoin:13hQVEstgo4iPQZv9C7VELnLWF7UWtF4Q3?amount=0.000004800&message=Pagamento de R$ 1,21.\"\n\t        }\n\t    }\n\t}\n\n\t\n----\nOs parâmetros abaixo são da própria requisição de exemplo do Postman."},"response":[],"_postman_id":"caf7c823-fc5a-4e77-81be-73c2348c26f0"},{"name":"Get Transaction History - Sample 3 transactions","id":"3372cc2c-2e54-41d8-8863-1ce6c8a2ce8c","request":{"method":"POST","header":[{"key":"res","value":"3"},{"key":"data","value":"{\"token\": \"abcToken\", \"date\": \"2018-07-17\"}"}],"body":{"mode":"formdata","formdata":[]},"url":"http://localhost:8080/PosResources","description":"## Descrição\n\nRetorna o histórico de transações de um usuário. \nRecebe como entrada o token e uma data específica. Como resultado, retorna a lista de transações daquele cliente naquela data.\n\n----\n\n## Parâmetros (Header)\n>***res (Integer)***\n>\n>Enviar obrigatoriamente o valor **3** para o método de de lista de transações.\n>\n>***data (String JSON)***\n>\n>Exemplo de Sucesso (com 3 transações): {\"token\": \"abcToken\", \"date\": \"2018-07-17\"}\n\n## Parâmetros (Body)\n>Nenhum parâmetro deve ser enviado no body da requisição.\n\n----\n\n## Resultado Esperado (Um array de transações ou array vazio [] para o caso de não ter nenhuma transação para aquele usuário naquela data)\n\t{\n\t    \"result\": {\n\t        \"code\": 8,\n\t        \"type\": \"OPERATION_PERFORMED\",\n\t        \"ttl\": 16,\n\t        \"payload\": [\n\t            {\n\t                \"id\": 59995,\n\t                \"status\": \"PENDING\",\n\t                \"pair\": \"BRL-BTC\",\n\t                \"valueFrom\": 60000,\n\t                \"valueTo\": 3.000000000001,\n\t                \"requestPaymentIn\": 1530717307,\n\t                \"address\": \"13hQVEstgo4iPQZv9C7VELnLWF7UWtF4Q3\",\n\t                \"blockchainTxId\": \"9b18f5a8142ee9842b30b9701194563ba42e05264cc14bf30bcc46d81e33619b\",\n\t                \"explorerLink\": \"https://www.blockchain.com/pt/btc/tx/9b18f5a8142ee9842b30b9701194563ba42e05264cc14bf30bcc46d81e33619b\",\n\t                \"description\": \"Trasação em andamento.\"\n\t            },\n\t            {\n\t                \"id\": 59994,\n\t                \"status\": \"PENDING\",\n\t                \"pair\": \"BRL-BTC\",\n\t                \"valueFrom\": 60000,\n\t                \"valueTo\": 3.000000000001,\n\t                \"requestPaymentIn\": 1530717307,\n\t                \"address\": \"13hQVEstgo4iPQZv9C7VELnLWF7UWtF4Q3\",\n\t                \"blockchainTxId\": \"9b18f5a8142ee9842b30b9701194563ba42e05264cc14bf30bcc46d81e33619b\",\n\t                \"explorerLink\": \"https://www.blockchain.com/pt/btc/tx/9b18f5a8142ee9842b30b9701194563ba42e05264cc14bf30bcc46d81e33619b\",\n\t                \"description\": \"Trasação em andamento.\"\n\t            },\n\t            {\n\t                \"id\": 59993,\n\t                \"status\": \"CONFIRMED\",\n\t                \"pair\": \"BRL-BTC\",\n\t                \"valueFrom\": 60000,\n\t                \"valueTo\": 3.000000000001,\n\t                \"requestPaymentIn\": 1530717307,\n\t                \"address\": \"13hQVEstgo4iPQZv9C7VELnLWF7UWtF4Q3\",\n\t                \"blockchainTxId\": \"9b18f5a8142ee9842b30b9701194563ba42e05264cc14bf30bcc46d81e33619b\",\n\t                \"explorerLink\": \"https://www.blockchain.com/pt/btc/tx/9b18f5a8142ee9842b30b9701194563ba42e05264cc14bf30bcc46d81e33619b\",\n\t                \"description\": \"Trasação confirmada.\"\n\t            }\n\t        ]\n\t    }\n\t}\n\t\n----\nOs parâmetros abaixo são da própria requisição de exemplo do Postman."},"response":[],"_postman_id":"3372cc2c-2e54-41d8-8863-1ce6c8a2ce8c"},{"name":"Get Transaction History - No entries","id":"2103d89b-ee4e-4e3e-abc4-3bcb244acdcf","request":{"method":"POST","header":[{"key":"res","value":"3"},{"key":"data","value":"{\"token\": \"abcToken\", \"date\": \"1900-01-01\"}"}],"body":{"mode":"formdata","formdata":[]},"url":"http://localhost:8080/PosResources","description":"## Descrição\n\nRetorna o histórico de transações de um usuário. \nNeste cenário de falha foi enviada na requisição uma data na qual o usuário não possui nenhuma transação. Para este caso, retornar uma lista vazia no atributo payload.\n\n----\n\n## Parâmetros (Header)\n\n>***res (Integer)***\n>\n>Para acionar o método de histórico de transações enviar obrigatoriamente 3\n>\n>***data (String JSON)***\n>\n>Exemplo para obter uma lista vazia: {\"token\": \"abcToken\", \"date\": \"1900-01-01\"}\n\n## Parâmetros (Body)\n>Nenhum parâmetro deve ser enviado no body da requisição.\n\n----\n\n## Resultado Esperado (Array vazio representando que não existem transações para aquele usuário naquela data)\n\t{\n\t    \"result\": {\n\t        \"code\": 8,\n\t        \"type\": \"OPERATION_PERFORMED\",\n\t        \"ttl\": 16,\n\t        \"payload\": []\n\t    }\n\t}\n\n----\nOs parâmetros abaixo são da própria requisição de exemplo do Postman."},"response":[],"_postman_id":"2103d89b-ee4e-4e3e-abc4-3bcb244acdcf"}],"id":"1a17040b-8fdc-4ad3-83e6-6bc58e0d8b17","description":"Transações realizadas pelo aplicativo: recebimento de valores e consulta de histórico.","event":[{"listen":"prerequest","script":{"id":"a4f2bc59-6021-4336-ab3d-6810e6dd6b42","type":"text/javascript","exec":[""]}},{"listen":"test","script":{"id":"e9bedcdf-a36d-41b8-880e-19807c1cbe1d","type":"text/javascript","exec":[""]}}],"_postman_id":"1a17040b-8fdc-4ad3-83e6-6bc58e0d8b17"}]}